diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f11dff..6f2b28a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +# [2.14.0](https://github.com/atom-community/autocomplete-paths/compare/v2.13.0...v2.14.0) (2021-04-25) + + +### Bug Fixes + +* _addWatcherForDirectory ([4f98074](https://github.com/atom-community/autocomplete-paths/commit/4f98074a956434a8bf482b566d58dc03b320d1f7)) +* _addWatchers ([e18ec8e](https://github.com/atom-community/autocomplete-paths/commit/e18ec8ea4474343409aaec7086bb259a8fa3e698)) +* don't emit redundant rebuild-cache-done ([3cf37a1](https://github.com/atom-community/autocomplete-paths/commit/3cf37a1af0ad4a499055cd4216c69ebd107f0d0a)) +* emit rebuild-cache _onDirectoryChanged ([8829c78](https://github.com/atom-community/autocomplete-paths/commit/8829c7868e3897b17ad36571bae2d1be7a32a304)) +* refactor _cachePaths and _cachePathsForDirectory ([5f85f1c](https://github.com/atom-community/autocomplete-paths/commit/5f85f1c6480dd0c98cc18db9b8869c71a7b29dec)) +* rename the functions to be more exact ([d09ec83](https://github.com/atom-community/autocomplete-paths/commit/d09ec83c3cc19048e10f6ed71f89231d3e7018ae)) +* run _addWatchers in rebuildCache ([dbf5c24](https://github.com/atom-community/autocomplete-paths/commit/dbf5c24797731840093bdde03b16cb4527044d4a)) +* use Map.clear instead of creating a new Map ([a7c8578](https://github.com/atom-community/autocomplete-paths/commit/a7c8578c9a6da4eec825e75200f3354ab6757d05)) + + +### Features + +* use chokidar to watch file changes ([b228c89](https://github.com/atom-community/autocomplete-paths/commit/b228c8947f862e9a3fcd29159bfe68998a01aa86)) + # [2.13.0](https://github.com/atom-community/autocomplete-paths/compare/v2.12.19...v2.13.0) (2021-03-04) - Build the path cache asynchronously without blocking the main thread -> Big projects no longer freeze Atom diff --git a/dist/autocomplete-paths.js b/dist/autocomplete-paths.js index 845393a..5944fb1 100644 --- a/dist/autocomplete-paths.js +++ b/dist/autocomplete-paths.js @@ -1,2 +1,22 @@ -var t=require("zadeh"),e=require("stream"),n=require("os"),r=require("fs"),i=require("buffer"),o=require("util"),s=require("child_process"),a=require("atom"),u=require("path"),c=require("events");function l(t,e,n){Object.defineProperty(t,e,{get:n,enumerable:!0})}var p="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};Object.defineProperty(exports,"__esModule",{value:!0});var f=function(){sg.add(atom.commands.add("atom-workspace",{"autocomplete-paths:rebuild-cache":()=>{tg.rebuildCache()}}));["core.ignoredNames","core.excludeVcsIgnoredPaths","autocomplete-paths.ignoreSubmodules","autocomplete-paths.ignoredNames","autocomplete-paths.ignoredPatterns","autocomplete-paths.maxFileCount"].forEach((t=>{sg.add(atom.config.observe(t,(()=>{tg&&(tg._pathsCache.updateConfig(),tg.rebuildCache())})))}));const t=["autocomplete-paths.scopes"];for(let e in m.OptionScopes)t.push(`autocomplete-paths.${e}`);t.forEach((t=>{sg.add(atom.config.observe(t,(()=>{tg&&tg.reloadScopes()})))}))};exports.activate=f;var h=function(){ng&&clearInterval(ng);sg.dispose(),tg&&(tg.dispose(!0),tg=null);rg&&(rg.destroy(),rg=null)};exports.deactivate=h;var d=function(t){eg=t,og&&ag()};exports.consumeStatusBar=d;var g=ug;exports.getProvider=g,Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return y.config}});var y={};Object.defineProperty(y,"__esModule",{value:!0});var v=void 0;y.config=v;var m={};Object.defineProperty(m,"__esModule",{value:!0});var _=void 0;m.OptionScopes=_;_={enableHtmlSupport:[{scopes:["text.html.basic"],prefixes:["src=['\"]","href=['\"]","name=['\"]"],extensions:["js","png","gif","jpeg","jpg","tiff","html","json","svg"],relative:!0}]},m.OptionScopes=_;const b={normalizeSlashes:{type:"boolean",description:"Replaces backward slashes with forward slashes on windows (if possible)",default:!0},maxFileCount:{type:"number",description:"The maximum amount of files to be handled",default:2e3},suggestionPriority:{type:"number",description:"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.",default:2},ignoredNames:{type:"boolean",default:!0,description:"Ignore items matched by the `Ignore Names` core option."},ignoreSubmodules:{type:"boolean",default:!1,description:"Ignore submodule directories."},ignoredPatterns:{type:"array",default:[],items:{type:"string"},description:"Ignore additional **glob** or file path patterns."},ignoreBuiltinScopes:{type:"boolean",default:!1,description:"Ignore built-in scopes and use only scopes from user configuration."},scopes:{type:"array",default:[],items:{type:"object",properties:{scopes:{type:["array"],items:{type:"string"}},prefixes:{type:["array"],items:{type:"string"}},extensions:{type:["array"],items:{type:"string"}},relative:{type:"boolean",default:!0},replaceOnInsert:{type:"array",items:{type:"array",items:{type:["string","string"]}}}}}}};v=b,y.config=v;const w=Object.keys(m.OptionScopes);for(let t=0,e=w.length;t=0&&n<=z}}function Et(t){return function(e){return null==e?void 0:e[t]}}var At=Et("byteLength"),Ct=xt(At),Ot=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Rt=D?function(t){return G?G(t)&&!gt(t):Ct(t)&&Ot.test(F.call(t))}:St(!1),Pt=Et("length");function jt(t,e){e=function(t){for(var e={},n=t.length,r=0;r":">",'"':""","'":"'","`":"`"},Pe=Oe(Re),je=Oe(Jt(Re)),ke=Lt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Te=/(.)^/,Me={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Le=/\\|'|\r|\n|\u2028|\u2029/g;function Fe(t){return"\\"+Me[t]}function Ne(t,e,n){!e&&n&&(e=n),e=ie({},e,Lt.templateSettings);var r,i=RegExp([(e.escape||Te).source,(e.interpolate||Te).source,(e.evaluate||Te).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(Le,Fe),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,Lt)},u=e.variable||"obj";return a.source="function("+u+"){\n"+s+"}",a}function De(t,e,n){var r=(e=le(e)).length;if(!r)return lt(n)?n.call(t):n;for(var i=0;i1)Ue(a,e-1,n,r),i=r.length;else for(var u=0,c=a.length;ue?(r&&(clearTimeout(r),r=null),a=c,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(u,l)),s};return c.cancel=function(){clearTimeout(r),a=0,r=i=o=null},c}function Ye(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=K((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=Ke(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s}function Ze(t,e){return Ge(e,t)}function Je(t){return function(){return!t.apply(this,arguments)}}function tn(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function en(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function nn(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}var rn=Ge(nn,2);function on(t,e,n){e=be(e,n);for(var r,i=kt(t),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(n&&o&&a)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(L.call(r,s,a),wt))>=0?o+s:-1;for(o=t>0?s:a-1;o>=0&&o0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,ve(n,i,4),r,o)}}var mn=vn(1),_n=vn(-1);function bn(t,e,n){var r=[];return e=be(e,n),gn(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function wn(t,e,n){return bn(t,Je(be(e)),n)}function Sn(t,e,n){e=be(e,n);for(var r=!qe(t)&&kt(t),i=(r||t).length,o=0;o=0}var An=K((function(t,e,n){var r,i;return lt(e)?i=e:(e=le(e),r=e.slice(0,-1),e=e[e.length-1]),yn(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=pe(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function Cn(t,e){return yn(t,ye(e))}function On(t,e){return bn(t,ge(e))}function Rn(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,u=(t=qe(t)?t:Yt(t)).length;ao&&(o=r);else e=be(e,n),gn(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o}function Pn(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,u=(t=qe(t)?t:Yt(t)).length;ar||void 0===n)return 1;if(n1&&(r=ve(r,e[1])),e=It(t)):(r=Bn,e=Ue(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=yn(Ue(e,!1,!1),String),r=function(t,n){return!En(e,n)}),Gn(t,r,n)}));function qn(t,e,n){return L.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function Un(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:qn(t,t.length-e)}function Vn(t,e,n){return L.call(t,null==e||n?1:e)}function zn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:Vn(t,Math.max(0,t.length-e))}function Kn(t){return bn(t,Boolean)}function Qn(t,e){return Ue(t,e,!1)}var Xn=K((function(t,e){return e=Ue(e,!0,!0),bn(t,(function(t){return!En(e,t)}))})),Yn=K((function(t,e){return Xn(t,e)}));function Zn(t,e,n,r){Z(e)||(r=n,n=e,e=!1),null!=n&&(n=be(n,r));for(var i=[],o=[],s=0,a=Pt(t);s{const e=/^\\\\\?\\/.test(t),n=/[^\u0000-\u0080]+/.test(t);return e||n?t:t.replace(/\\/g,"/")})),fr={};Object.defineProperty(fr,"__esModule",{value:!0});var hr=void 0;fr.default=hr;var dr,gr=c;dr=Gr,Gr.Minimatch=Wr;var yr={sep:"/"};try{yr=function(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}("path")}catch(t){}var vr,mr=Gr.GLOBSTAR=Wr.GLOBSTAR={},_r={};vr=function(t,e){for(var n=[],r=0;r=0&&c>0){for(r=[],o=n.length;l>=0&&!a;)l==u?(r.push(l),u=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),c]:((i=r.pop())=0?u:c;r.length&&(a=[o,s])}return a}wr=Sr,Sr.range=Er,_r=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return Dr(function(t){return t.split("\\\\").join(Ar).split("\\{").join(Cr).split("\\}").join(Or).split("\\,").join(Rr).split("\\.").join(Pr)}(t),!0).map(kr)};var Ar="\0SLASH"+Math.random()+"\0",Cr="\0OPEN"+Math.random()+"\0",Or="\0CLOSE"+Math.random()+"\0",Rr="\0COMMA"+Math.random()+"\0",Pr="\0PERIOD"+Math.random()+"\0";function jr(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function kr(t){return t.split(Ar).join("\\").split(Cr).join("{").split(Or).join("}").split(Rr).join(",").split(Pr).join(".")}function Tr(t){if(!t)return[""];var e=[],n=wr("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=Tr(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function Mr(t){return"{"+t+"}"}function Lr(t){return/^-?0\d/.test(t)}function Fr(t,e){return t<=e}function Nr(t,e){return t>=e}function Dr(t,e){var n=[],r=wr("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,u=r.body.indexOf(",")>=0;if(!a&&!u)return r.post.match(/,.*\}/)?Dr(t=r.pre+"{"+r.body+Or+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=Tr(r.body)).length&&1===(i=Dr(i[0],!1).map(Mr)).length)return(p=r.post.length?Dr(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var c,l=r.pre,p=r.post.length?Dr(r.post,!1):[""];if(a){var f=jr(i[0]),h=jr(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(jr(i[2])):1,y=Fr;h0){var w=new Array(b+1).join("0");_=m<0?"-"+w+_.slice(1):w+_}}c.push(_)}}else c=vr(i,(function(t){return Dr(t,!1)}));for(var S=0;S65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return mr;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],u=[],c=!1,l=-1,p=-1,f="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+="[^/]*?",o=!0;break;case"?":i+="[^/]",o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var g,y=0,v=t.length;y-1;E--){var A=u[E],C=i.slice(0,A.reStart),O=i.slice(A.reStart,A.reEnd-8),R=i.slice(A.reEnd-8,A.reEnd),P=i.slice(A.reEnd);R+=P;var j=C.split("(").length-1,k=P;for(y=0;y=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,p,e,f),p!==s))}if("string"==typeof c?(u=r.nocase?l.toLowerCase()===c.toLowerCase():l===c,this.debug("string match",c,l,u)):(u=l.match(c),this.debug("pattern match",c,l,u)),!u)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")};var Vr=Bd(dr),zr=a,Kr={};Object.defineProperty(Kr,"__esModule",{value:!0});var Qr=ni;Kr.merge=Qr;var Xr=ri;Kr.unique=Xr;var Yr=function(t,e){return ni(t,e),ri(t)};Kr.union=Yr;var Zr=(ei=void 0,Kr.exec=ei);Kr.MAX_STRING_LENGTH=Zr;var Jr=s,ti=i;var ei=(0,o.promisify)(Jr.exec);Kr.exec=ei;function ni(t,e){e.length&&Array.prototype.push.apply(t,e)}function ri(t){return[...new Set(t)]}Zr=ti.constants.MAX_STRING_LENGTH,Kr.MAX_STRING_LENGTH=Zr;var ii={};Object.defineProperty(ii,"__esModule",{value:!0});var oi=Ei;ii.posixifyPath=oi;var si=Ai;ii.posixifyPathNormalized=si;var ai=async function(t,e=process.cwd()){return await Oi(Ei(t),e)};ii.globifyPath=ai;var ui=function(t){return`${Ai(t)}/**`};ii.globifyDirectory=ui;var ci=async function(t){return await Ci(await Si(di.default.join(t,".gitignore"),"utf-8"),t)};ii.globifyGitIgnoreFile=ci;var li=Ci;ii.globifyGitIgnore=li;var pi,fi,hi,di=wi(u),gi=r;hi=function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1};var yi={"{":"}","(":")","[":"]"},vi=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,mi=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;fi=function(t,e){if("string"!=typeof t||""===t)return!1;if(hi(t))return!0;var n,r=vi;for(e&&!1===e.strict&&(r=mi);n=r.exec(t);){if(n[2])return!0;var i=n.index+n[0].length,o=n[1],s=o?yi[o]:null;if(o&&s){var a=t.indexOf(s,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1};var _i=/[‘“!#$%&+^<=>`]/;pi=function(t){return"string"!=typeof t||fi(t)||_i.test(t)};var bi=wi((function(t){return!1===pi(t)}));function wi(t){return t&&t.__esModule?t:{default:t}}const{readFile:Si,stat:xi}=gi.promises;function Ei(t){return di.default.normalize(t).replace(/\\/g,"/")}function Ai(t){return Ei(t).replace(/\/$/,"")}async function Ci(t,e){const n=t.split("\n").filter((t=>{return!(/^\s*$/.test(t)||(e=t,"#"===e[0]));var e})).map((t=>function(t){return t.replace(/^\s+/,"")}(function(t){return/\\\s+$/.test(t)?t.replace(/\\(\s+)$/,"$1"):t.replace(/\s+$/,"")}(t)))),r=n.length;let i=new Array(r);for(let t=0;t[].concat(t,e)),[])};Li.flatten=Ni,Fi=function(t,e){const n=[[]];let r=0;for(const i of t)e(i)?(r++,n[r]=[]):n[r].push(i);return n},Li.splitWhen=Fi;var Di=Li;Ti.array=Li;var $i={};Object.defineProperty($i,"__esModule",{value:!0});var Ii=void 0;$i.isEnoentCodeError=Ii,Ii=function(t){return"ENOENT"===t.code},$i.isEnoentCodeError=Ii;var Hi=$i;Ti.errno=$i;var Bi={};Object.defineProperty(Bi,"__esModule",{value:!0});var Gi=void 0;Bi.createDirentFromStats=Gi;class Wi{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Gi=function(t,e){return new Wi(t,e)},Bi.createDirentFromStats=Gi;var qi=Bi;Ti.fs=Bi;var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0});var Vi=(Qi=void 0,Xi=Ui.unixify=Qi,Yi=Ui.makeAbsolute=Xi,Ui.escape=Yi);Ui.removeLeadingDotSegment=Vi;const zi=u,Ki=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;var Qi=function(t){return t.replace(/\\/g,"/")};Ui.unixify=Qi;var Xi=function(t,e){return zi.resolve(t,e)};Ui.makeAbsolute=Xi;var Yi=function(t){return t.replace(Ki,"\\$2")};Ui.escape=Yi,Vi=function(t){if("."===t.charAt(0)){const e=t.charAt(1);if("/"===e||"\\"===e)return t.slice(2)}return t},Ui.removeLeadingDotSegment=Vi;var Zi=Ui;Ti.path=Ui;var Ji={};Object.defineProperty(Ji,"__esModule",{value:!0});var to=(dp=void 0,yp=Ji.isStaticPattern=dp,vp=Ji.isDynamicPattern=yp,mp=Ji.convertToPositivePattern=vp,bp=Ji.convertToNegativePattern=mp,Sp=Ji.isNegativePattern=bp,xp=Ji.isPositivePattern=Sp,Ep=Ji.getNegativePatterns=xp,Ap=Ji.getPositivePatterns=Ep,Cp=Ji.getBaseDirectory=Ap,Rp=Ji.hasGlobStar=Cp,Pp=Ji.endsWithSlashGlobStar=Rp,jp=Ji.isAffectDepthOfReadingPattern=Pp,Tp=Ji.expandPatternsWithBraceExpansion=jp,Mp=Ji.expandBraceExpansion=Tp,Fp=Ji.getPatternParts=Mp,Np=Ji.makeRe=Fp,Ji.convertPatternsToRe=Np);Ji.matchAny=to;const eo=u;var no,ro=u.posix.dirname,io="win32"===n.platform(),oo=/\\/g,so=/[\{\[].*[\/]*.*[\}\]]$/,ao=/(^|[^\\])([\{\[]|\([^\)]+$)/,uo=/\\([\!\*\?\|\[\]\(\)\{\}])/g;no=function(t,e){Object.assign({flipBackslashes:!0},e).flipBackslashes&&io&&t.indexOf("/")<0&&(t=t.replace(oo,"/")),so.test(t)&&(t+="/"),t+="a";do{t=ro(t)}while(fi(t)||ao.test(t));return t.replace(uo,"$1")};var co={};const lo=o;var po,fo,ho,go={},yo={},vo=function(){return[{type:yo.RANGE,from:48,to:57}]},mo=function(){return[{type:yo.CHAR,value:95},{type:yo.RANGE,from:97,to:122},{type:yo.RANGE,from:65,to:90}].concat(vo())},_o=function(){return[{type:yo.CHAR,value:9},{type:yo.CHAR,value:10},{type:yo.CHAR,value:11},{type:yo.CHAR,value:12},{type:yo.CHAR,value:13},{type:yo.CHAR,value:32},{type:yo.CHAR,value:160},{type:yo.CHAR,value:5760},{type:yo.CHAR,value:6158},{type:yo.CHAR,value:8192},{type:yo.CHAR,value:8193},{type:yo.CHAR,value:8194},{type:yo.CHAR,value:8195},{type:yo.CHAR,value:8196},{type:yo.CHAR,value:8197},{type:yo.CHAR,value:8198},{type:yo.CHAR,value:8199},{type:yo.CHAR,value:8200},{type:yo.CHAR,value:8201},{type:yo.CHAR,value:8202},{type:yo.CHAR,value:8232},{type:yo.CHAR,value:8233},{type:yo.CHAR,value:8239},{type:yo.CHAR,value:8287},{type:yo.CHAR,value:12288},{type:yo.CHAR,value:65279}]},bo=function(){return{type:yo.SET,set:mo(),not:!1}},wo=function(){return{type:yo.SET,set:mo(),not:!0}},So=function(){return{type:yo.SET,set:vo(),not:!1}},xo=function(){return{type:yo.SET,set:vo(),not:!0}},Eo=function(){return{type:yo.SET,set:_o(),not:!1}},Ao=function(){return{type:yo.SET,set:_o(),not:!0}},Co={0:0,t:9,n:10,v:11,f:12,r:13},Oo=function(t,e){for(var n,r,i=[],o=/\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g;null!=(n=o.exec(t));)if(n[1])i.push(bo());else if(n[2])i.push(So());else if(n[3])i.push(Eo());else if(n[4])i.push(wo());else if(n[5])i.push(xo());else if(n[6])i.push(Ao());else if(n[7])i.push({type:yo.RANGE,from:(n[8]||n[9]).charCodeAt(0),to:n[10].charCodeAt(0)});else{if(!(r=n[12]))return[i,o.lastIndex];i.push({type:yo.CHAR,value:r.charCodeAt(0)})}Ro(e,"Unterminated character class")},Ro=function(t,e){throw new SyntaxError("Invalid regular expression: /"+t+"/: "+e)};(ho=function(t){var e,n,r=0,i={type:yo.ROOT,stack:[]},o=i,s=i.stack,a=[],u=function(e){Ro(t,"Nothing to repeat at column "+(e-1))},c=function(t){return t.replace(/(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\[\\\]\^?])|([0tnvfr]))/g,(function(t,e,n,r,i,o,s,a){if(n)return t;var u=e?8:r?parseInt(r,16):i?parseInt(i,16):o?parseInt(o,8):s?"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?".indexOf(s):Co[a],c=String.fromCharCode(u);return/[\[\]{}\^$.|?*+()]/.test(c)&&(c="\\"+c),c}))}(t);for(e=c.length;r1)return!1;if(i>r)return!1}if(e.options)for(var o=0,s=e.options.length;o65536)throw new Error("expected pattern to be less than 65536 characters");var n=t;if((!e||e&&!1!==e.cache)&&(n=function(t,e){if(!e)return t;var n=t;for(var r in e)e.hasOwnProperty(r)&&(n+=";"+r+"="+String(e[r]));return n}(t,e),Yo.hasOwnProperty(n)))return Yo[n];var r=qo({},e);!0===r.contains&&(!0===r.negate?r.strictNegate=!1:r.strict=!1),!1===r.strict&&(r.strictOpen=!1,r.strictClose=!1);var i,o=!1!==r.strictOpen?"^":"",s=!1!==r.strictClose?"$":"",a=r.flags||"";!0!==r.nocase||/i/.test(a)||(a+="i");try{if((r.negate||"boolean"==typeof r.strictNegate)&&(t=Qo.create(t,r)),i=new RegExp(o+"(?:"+t+")"+s,a),!0===r.safe&&!1===fo(i))throw new Error("potentially unsafe regular expression: "+i.source)}catch(o){if(!0===r.strictErrors||!0===r.safe)throw o.key=n,o.pattern=t,o.originalOptions=e,o.createdOptions=r,o;try{i=new RegExp("^"+t.replace(/(\W)/g,"\\$1")+"$")}catch(t){i=/.^/}}return!1!==r.cache&&function(t,e,n,r){Vo(t,"cached",!0),Vo(t,"pattern",n),Vo(t,"options",r),Vo(t,"key",e),Yo[e]=t}(i,n,t,r),i}(po=function(t,e){return Array.isArray(t)?Zo(t.join("|"),e):Zo(t,e)}).makeRe=Zo;var Jo;(Jo=function(t){if(!Array.isArray(t))throw new TypeError("array-unique expects an array.");for(var e=t.length,n=-1;n++","(":")","[":"]","{":"}"}:i.brackets&&(r=i.brackets);var s,a=[],u=[],c=[""],l=i.sep,p=t.length,f=-1;function h(){if(r&&u.length)return r[u[u.length-1]]}for(;++f=0};var ps,fs={},hs="";fs=function(t,e){if("string"!=typeof t)throw new TypeError("expected a string");if(1===e)return t;if(2===e)return t+t;var n=t.length*e;if(ps!==t||void 0===ps)ps=t,hs="";else if(hs.length>=n)return hs.substr(0,n);for(;n>hs.length&&e>1;)1&e&&(hs+=t),e>>=1,t+=t;return hs=(hs+=t).substr(0,n)};var ds={},gs={};function ys(t,e,n){if(t===e)return{pattern:String(t),digits:[]};for(var r=function(t,e){var n=[];for(var r in t)n.push([t[r],e[r]]);return n}(String(t),String(e)),i=r.length,o=-1,s="",a=0;++o1&&i.digits.pop(),i.digits.push(p.digits[0]),i.string=i.pattern+Es(i.digits),c=l+1)}return u}function ms(t,e,n,r,i){for(var o=[],s=0;se?1:e>t?-1:0}function bs(t,e){return-1===t.indexOf(e)&&t.push(e),t}function ws(t,e,n){for(var r=0;r=0&&(u=vs(i,o,l,n)),l.negatives=c,l.positives=u,l.result=function(t,e,n){var r=ms(t,e,"-",!1,n)||[],i=ms(e,t,"",!1,n)||[],o=ms(t,e,"-?",!0,n)||[];return r.concat(o).concat(i).join("|")}(c,u,n),n.capture&&u.length+c.length>1&&(l.result="("+l.result+")"),gs[r]=l,l.result},us=function(t,e,n,r){if(void 0===t)return[];if(void 0===e||t===e){var i="string"==typeof t;return cs(t)&&!Ps(t)?[i?"0":0]:[t]}"number"!=typeof n&&"string"!=typeof n&&(r=n,n=void 0),"function"==typeof r&&(r={transform:r});var o,s,a=qo({step:n},r);if(a.step&&!Ts(a.step)){if(!0===a.strictRanges)throw new TypeError("expected options.step to be a number");return[]}if(a.isNumber=Ts(t)&&Ts(e),!a.isNumber&&(s=e,!Ts(o=t)&&!ks(o)||!Ts(s)&&!ks(s))){if(!0===a.strictRanges)throw new RangeError("invalid range arguments: "+ls.inspect([t,e]));return[]}return a.isPadded=js(t)||js(e),a.toString=a.stringify||"string"==typeof a.step||"string"==typeof t||"string"==typeof e||!a.isNumber,a.isPadded&&(a.maxLength=Math.max(String(t).length,String(e).length)),"boolean"==typeof a.optimize&&(a.toRegex=a.optimize),"boolean"==typeof a.makeRe&&(a.toRegex=a.makeRe),function(t,e,n){var r=n.isNumber?Ps(t):t.charCodeAt(0),i=n.isNumber?Ps(e):e.charCodeAt(0),o=Math.abs(Ps(n.step))||1;if(n.toRegex&&1===o)return function(t,e,n,r,i){if(i.isPadded)return ds(n,r,i);if(i.isNumber)return ds(Math.min(t,e),Math.max(t,e),i);n=String.fromCharCode(Math.min(t,e)),r=String.fromCharCode(Math.max(t,e));return"["+n+"-"+r+"]"}(r,i,t,e,n);var s={greater:[],lesser:[]},a=r=i;){var l=n.isNumber?r:String.fromCharCode(r);n.toRegex&&(l>=0||!n.isNumber)?s.greater.push(l):s.lesser.push(Math.abs(l)),n.isPadded&&(l=Rs(l,n)),n.toString&&(l=String(l)),"function"==typeof n.transform?u[c++]=n.transform(l,r,i,o,c,u,n):u[c++]=l,a?r+=o:r-=o}if(!0===n.toRegex)return function(t,e,n){var r="",i="";e.greater.length&&(r=e.greater.join("|"));e.lesser.length&&(i="-("+e.lesser.join("|")+")");var o=r&&i?r+"|"+i:r||i;if(n.capture)return"("+o+")";return o}(0,s,n);return u}(t,e,a)},ns.fillRange=us;var Ms;function Ls(t,e,n){return ns.flatten(ns.repeat(ns.arrayify(t),e))}function Fs(t){return!0===t.escaped}function Ns(t,e){return void 0!==t&&t.type===e}Ms=function(t,e){for(var n=new Array(e),r=0;r1){if(!1===n.optimize)return i.val=r[0],i;i.segs=ns.stringifyArray(i.segs)}else if(1===r.length){var o=t.split("..");if(1===o.length)return i.val=i.segs[i.segs.length-1]||i.val||t,i.segs=[],i;if(2===o.length&&o[0]===o[1])return i.escaped=!0,i.val=o[0],i.segs=[],i;if(o.length>1){if(!1!==n.optimize&&(n.optimize=!0,delete n.expand),!0!==n.optimize){var s=Math.min(o[0],o[1]),a=Math.max(o[0],o[1]),u=o[2]||1;if(!1!==n.rangeLimit&&(a-s)/u>=n.rangeLimit)throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.")}return o.push(n),i.segs=ns.fillRange.apply(null,o),i.segs.length?(!0===n.optimize&&(i.segs=ns.stringifyArray(i.segs)),""===i.segs?i.val=t:i.val=i.segs[0],i):(i.escaped=!0,i.val=t,i)}}else i.val=t;return i},ns.escapeBrackets=function(t){return function(e){if(e.escaped&&"b"===e.val)e.val="\\b";else if("("===e.val||"["===e.val){for(var n=ns.extend({},t),r=[],i=[],o=[],s=e.val,a=e.str,u=e.idx-1;++u1&&(t.parent.count*=t.multiplier),!0===e.quantifiers&&ns.isQuantifier(t.val))r=!0;else if(t.val.length>1){if(Ns(t.parent,"brace")&&!Fs(t)){var o=ns.expand(t.val,e);if(i=o.segs,o.isOptimized&&(t.parent.isOptimized=!0),!i.length){var s=o.val||t.val;!1!==e.unescape&&(s=(s=s.replace(/\\([,.])/g,"$1")).replace(/["'`]/g,"")),i=[s],r=!0}}}else","===t.val?e.expand?(t.parent.queue.push([""]),i=[""]):i=["|"]:r=!0;if(r&&Ns(t.parent,"brace")&&(t.parent.nodes.length<=4&&1===t.parent.count||t.parent.length<=3)&&(t.parent.escaped=!0),function(t){return Array.isArray(t.queue)&&t.queue.length}(t.parent)){var a=ns.arrayify(n.pop());t.parent.count>1&&e.expand&&(a=Ls(a,t.parent.count),t.parent.count=1),n.push(ns.join(ns.flatten(a),i.shift())),n.push.apply(n,i)}else t.parent.queue=i})).set("brace.close",(function(t){var n=t.parent.queue,r=t.parent.parent,i=r.queue.pop(),o=t.parent.open,s=t.val;o&&s&&function(t,e){return!!t.parent.isOptimized||Ns(t.parent,"brace")&&!Fs(t.parent)&&!0!==e.expand}(t,e)&&(o="(",s=")");var a=ns.last(n);t.parent.count>1&&e.expand&&(a=Ls(n.pop(),t.parent.count),t.parent.count=1,n.push(a)),s&&"string"==typeof a&&1===a.length&&(o="",s=""),!function(t,e){return Fs(t.parent)||!1!==e.optimize}(t,e)&&!function(t,e){if(1===t.parent.queue.length)return!0;var n=t.parent.nodes;return 3===n.length&&Ns(n[0],"brace.open")&&!Ns(n[1],"text")&&Ns(n[2],"brace.close")}(t)||t.parent.hasEmpty||(n.push(ns.join(o,n.pop()||"")),n=ns.flatten(ns.join(n,s))),void 0===i?r.queue=[n]:r.queue.push(ns.flatten(ns.join(i,n)))})).set("eos",(function(t){this.input||(!1!==e.optimize?this.output=ns.last(ns.flatten(this.ast.queue)):Array.isArray(ns.last(this.ast.queue))?this.output=ns.flatten(this.ast.queue.pop()):this.output=ns.flatten(this.ast.queue),t.parent.count>1&&e.expand&&(this.output=Ls(this.output,t.parent.count)),this.output=ns.arrayify(this.output),this.ast.queue=[])}))};var Ds,$s,Is={},Hs=Wo(),Bs={};function Gs(t){return"object"===ko(t)}function Ws(t){return"function"==typeof t}function qs(t,e,n){return"function"!=typeof t.append?t.emit(e,n):t.append(e,n)}function Us(t,e){if(!t)throw new Error(e)}function Vs(t,e,n){if("string"!=typeof e&&(n=e,e=null),Hs(this,"parent",n),Hs(this,"isNode",!0),Hs(this,"expect",null),"string"!=typeof e&&Po(t)){$s||($s=Object.getOwnPropertyNames(Vs.prototype));for(var r=Object.keys(t),i=0;i1){var a=e.val.charAt(0),u=e.val.slice(-1);s='"'===a&&'"'===u||"'"===a&&"'"===u||"`"===a&&"`"===u}if(s&&!1!==r.unescape&&(e.val=e.val.slice(1,e.val.length-1),e.escaped=!0),e.match){var c=e.match[1];c&&-1!==c.indexOf("}")||(c=e.match[0]);var l=c.replace(/\{/g,",").replace(/\}/g,"");e.multiplier*=l.length,e.val=""}"text"===o.type&&1===o.multiplier&&1===e.multiplier&&e.val?o.val+=e.val:i.push(e)}Bs.isNode=function(t){return"object"===ko(t)&&!0===t.isNode},Bs.noop=function(t){qs(this,"",t)},Bs.identity=function(t){qs(this,t.val,t)},Bs.append=function(t){return function(e){qs(this,t,e)}},Bs.toNoop=function(t,e){e?t.nodes=e:(delete t.nodes,t.type="text",t.val="")},Bs.visit=function(t,e){return Us(Bs.isNode(t),"expected node to be an instance of Node"),Us(Ws(e),"expected a visitor function"),e(t),t.nodes?Bs.mapVisit(t,e):t},Bs.mapVisit=function(t,e){var n;Us(Bs.isNode(t),"expected node to be an instance of Node"),Us((n=t.nodes,Array.isArray(n)),"expected node.nodes to be an array"),Us(Ws(e),"expected a visitor function");for(var r=0;r0)},Bs.isInside=function(t,e,n){if(Us(Bs.isNode(e),"expected node to be an instance of Node"),Us(Gs(t),"expected state to be an object"),Array.isArray(n)){for(var r=0;r2){var u=n.nodes[1];"text"===u.type&&","===u.val&&(n.nodes.splice(1,1),n.nodes.push(u))}n.push(r)}})).set("boundary",(function(){var t=this.position(),e=this.match(/^[$^](?!\{)/);if(e)return t(new Is({type:"text",val:e[0]}))})).set("nobrace",(function(){var t=this.isInside("brace"),e=this.position(),n=this.match(/^\{[^,]?\}/);if(n){var r=this.prev(),i=n[0];return t&&"brace"===r.type&&(r.text=r.text||"",r.text+=i),e(new Is({type:"text",multiplier:0,val:i}))}})).set("text",(function(){var t=this.isInside("brace"),n=this.position(),r=this.match(/^((?!\\)[^${}[\]])+/);if(r){var i=this.prev(),o=r[0];t&&"brace"===i.type&&(i.text=i.text||"",i.text+=o);var s=n(new Is({type:"text",multiplier:1,val:o}));return Ks.call(this,n,s,i,e)}}))};var Qs={},Xs={},Ys={},Zs=o,Js=Wo(),ta={},ea={};function na(t){if(t)return function(t){for(var e in na.prototype)t[e]=na.prototype[e];return t}(t)}ea=na,na.prototype.on=na.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},na.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},na.prototype.off=na.prototype.removeListener=na.prototype.removeAllListeners=na.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i=0||t.push(o)}}}return t};var fa;function ha(t){return t?Array.isArray(t)?t.join("."):t:""}fa=function(t,e,n,r,i){if(null===(o=t)||"object"!=typeof o&&"function"!=typeof o||!e)return t;var o;if(e=ha(e),n&&(e+="."+ha(n)),r&&(e+="."+ha(r)),i&&(e+="."+ha(i)),e in t)return t[e];for(var s=e.split("."),a=s.length,u=-1;t&&++u-1)return!0;return Ia(Ba(t),e)}if(Array.isArray(t)){for(var i=t;n--;)if(i.indexOf(e[n])>-1)return!0;return!1}throw new TypeError("expected an array or object.")}function Ha(t){return t?Array.isArray(t)?t:[t]:[]}function Ba(t){return function(t){return $a(t)&&void 0!==t.constructor}(t)?Object.getOwnPropertyNames(t):[]}Fa=function(t,e,n){if(!$a(t))throw new TypeError("expected receiving object to be an object.");if(!$a(e))throw new TypeError("expected providing object to be an object.");var r=Ba(e),i=Object.keys(e),o=r.length;for(n=Ha(n);o--;){var s=r[o];Ia(i,s)?Da(t,s,e[s]):s in t||Ia(n,s)||ka(t,e,s)}};var Ga=Ia;Fa.has=Ga;var Wa=Wo(),qa=o;function Ua(t){var e=t?Ea(t):ta,n=[];function r(t,n){if(!(this instanceof r))return new r(t,n);e.call(this,t),this.is("base"),this.initBase(t,n)}return Zs.inherits(r,e),ea(r),r.prototype.initBase=function(e,i){this.options=Ca({},this.options,i),this.cache=this.cache||{},this.define("registered",{}),t&&(this[t]={}),this.define("_callbacks",this._callbacks),Po(e)&&this.visit("set",e),r.run(this,"use",n)},r.prototype.is=function(t){if("string"!=typeof t)throw new TypeError("expected name to be a string");return this.define("is"+ja(t),!0),this.define("_name",t),this.define("_appname",t),this},r.prototype.isRegistered=function(t,e){return!!this.registered.hasOwnProperty(t)||(!1!==e&&(this.registered[t]=!0,this.emit("plugin",t)),!1)},r.prototype.use=function(t){return t.call(this,this),this},r.prototype.define=function(t,e){return Po(t)?this.visit("define",t):(Js(this,t,e),this)},r.prototype.mixin=function(t,e){return r.prototype[t]=e,this},r.prototype.mixins=r.prototype.mixins||[],Object.defineProperty(r.prototype,"base",{configurable:!0,get:function(){return this.parent?this.parent.base:this}}),Js(r,"use",(function(t){return n.push(t),r})),Js(r,"run",(function(t,e,n){for(var i=n.length,o=0;i--;)t[e](n[o++]);return r})),Js(r,"extend",Ta.extend(r,(function(t,e){return t.prototype.mixins=t.prototype.mixins||[],Js(t,"mixin",(function(e){var n=e(t.prototype,t);return"function"==typeof n&&t.prototype.mixins.push(n),t})),Js(t,"mixins",(function(e){return r.run(e,"mixin",t.prototype.mixins),t})),t.prototype.mixin=function(e,n){return t.prototype[e]=n,this},r}))),Js(r,"mixin",(function(t){var e=t(r.prototype,r);return"function"==typeof e&&r.prototype.mixins.push(e),r})),Js(r,"mixins",(function(t){return r.run(t,"mixin",r.prototype.mixins),r})),Js(r,"inherit",Ta.inherit),Js(r,"bubble",Ta.bubble),r}La=function t(e,n){if("function"!=typeof e)throw new TypeError("expected Parent to be a function.");return function(r,i){if("function"!=typeof r)throw new TypeError("expected Ctor to be a function.");if(qa.inherits(r,e),Fa(r,e),"object"==typeof i){var o=Object.create(i);for(var s in o)r.prototype[s]=o[s]}Wa(r.prototype,"_parent_",{configurable:!0,set:function(){},get:function(){return e.prototype}}),"function"==typeof n&&n(r,e),r.extend=t(r,n)}},Ta.isObject=function(t){return Po(t)||"function"==typeof t},Ta.has=function(t,e){var n=(e=Ta.arrayify(e)).length;if(Ta.isObject(t)){for(var r in t)if(e.indexOf(r)>-1)return!0;var i=Ta.nativeKeys(t);return Ta.has(i,e)}if(Array.isArray(t)){for(var o=t;n--;)if(o.indexOf(e[n])>-1)return!0;return!1}throw new TypeError("expected an array or object.")},Ta.hasAll=function(t,e){for(var n=(e=Ta.arrayify(e)).length;n--;)if(!Ta.has(t,e[n]))return!1;return!0},Ta.arrayify=function(t){return t?Array.isArray(t)?t:[t]:[]},Ta.noop=function(){},Ta.identity=function(t){return t},Ta.hasConstructor=function(t){return Ta.isObject(t)&&void 0!==t.constructor},Ta.nativeKeys=function(t){if(!Ta.hasConstructor(t))return[];var e=Object.getOwnPropertyNames(t);return"caller"in t&&e.push("caller"),e},Ta.getDescriptor=function(t,e){if(!Ta.isObject(t))throw new TypeError("expected an object.");if("string"!=typeof e)throw new TypeError("expected key to be a string.");return Object.getOwnPropertyDescriptor(t,e)},Ta.copyDescriptor=function(t,e,n){if(!Ta.isObject(t))throw new TypeError("expected receiving object to be an object.");if(!Ta.isObject(e))throw new TypeError("expected providing object to be an object.");if("string"!=typeof n)throw new TypeError("expected name to be a string.");var r=Ta.getDescriptor(e,n);r&&Object.defineProperty(t,n,r)},Ta.copy=function(t,e,n){if(!Ta.isObject(t))throw new TypeError("expected receiving object to be an object.");if(!Ta.isObject(e))throw new TypeError("expected providing object to be an object.");var r,i=Object.getOwnPropertyNames(e),o=Object.keys(e),s=i.length;for(n=Ta.arrayify(n);s--;)r=i[s],Ta.has(o,r)?Ma(t,r,e[r]):r in t||Ta.has(n,r)||Ta.copyDescriptor(t,e,r)},Ta.inherit=function(t,e,n){if(!Ta.isObject(t))throw new TypeError("expected receiving object to be an object.");if(!Ta.isObject(e))throw new TypeError("expected providing object to be an object.");var r=[];for(var i in e)r.push(i),t[i]=e[i];r=r.concat(Ta.arrayify(n));var o=e.prototype||e,s=t.prototype||t;Ta.copy(s,o,r)},Ta.extend=function(){return La.apply(null,arguments)},Ta.bubble=function(t,e){e=e||[],t.bubble=function(n,r){Array.isArray(r)&&(e=pa([],e,r));for(var i=e.length,o=-1;++o{"%%"!==t&&(n++,"%c"===t&&(r=n))})),t.splice(r,0,e)};Ja.formatArgs=tu;var eu=function(t){try{t?Ja.storage.setItem("debug",t):Ja.storage.removeItem("debug")}catch(t){}};Ja.save=eu;var nu=function(){let t;try{t=Ja.storage.getItem("debug")}catch(t){}!t&&"undefined"!=typeof process&&"env"in process&&(t=process.env.DEBUG);return t};Ja.load=nu;var ru=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)};Ja.useColors=ru;var iu=function(){try{return localStorage}catch(t){}}();Ja.storage=iu;var ou=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Ja.destroy=ou;Ja.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];var su=console.debug||console.log||(()=>{});Ja.log=su;var au,uu,cu,lu,pu,fu,hu,du=!1;function gu(t,e,n,r){var i=e>=1.5*n;return Math.round(t/n)+" "+r+(i?"s":"")}function yu(){au={},fu=7*(pu=24*(lu=60*(cu=60*(uu=1e3)))),hu=365.25*pu,au=function(t,e){e=e||{};var n,r,i=typeof t;if("string"===i&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*hu;case"weeks":case"week":case"w":return n*fu;case"days":case"day":case"d":return n*pu;case"hours":case"hour":case"hrs":case"hr":case"h":return n*lu;case"minutes":case"minute":case"mins":case"min":case"m":return n*cu;case"seconds":case"second":case"secs":case"sec":case"s":return n*uu;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}(t);if("number"===i&&isFinite(t))return e.long?(n=t,(r=Math.abs(n))>=pu?gu(n,r,pu,"day"):r>=lu?gu(n,r,lu,"hour"):r>=cu?gu(n,r,cu,"minute"):r>=uu?gu(n,r,uu,"second"):n+" ms"):function(t){var e=Math.abs(t);return e>=pu?Math.round(t/pu)+"d":e>=lu?Math.round(t/lu)+"h":e>=cu?Math.round(t/cu)+"m":e>=uu?Math.round(t/uu)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}}Ja=function(t){function e(t){let r,i=null;function o(...t){if(!o.enabled)return;const n=o,i=Number(new Date),s=i-(r||i);n.diff=s,n.prev=r,n.curr=i,r=i,t[0]=e.coerce(t[0]),"string"!=typeof t[0]&&t.unshift("%O");let a=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,((r,i)=>{if("%%"===r)return"%";a++;const o=e.formatters[i];if("function"==typeof o){const e=t[a];r=o.call(n,e),t.splice(a,1),a--}return r})),e.formatArgs.call(n,t);(n.log||e.log).apply(n,t)}return o.namespace=t,o.useColors=e.useColors(),o.color=e.selectColor(t),o.extend=n,o.destroy=e.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null===i?e.enabled(t):i,set:t=>{i=t}}),"function"==typeof e.init&&e.init(o),o}function n(t,n){const r=e(this.namespace+(void 0===n?":":n)+t);return r.log=this.log,r}function r(t){return t.toString().substring(2,t.toString().length-2).replace(/\.\*\?$/,"*")}return e.debug=e,e.default=e,e.coerce=function(t){if(t instanceof Error)return t.stack||t.message;return t},e.disable=function(){const t=[...e.names.map(r),...e.skips.map(r).map((t=>"-"+t))].join(",");return e.enable(""),t},e.enable=function(t){let n;e.save(t),e.names=[],e.skips=[];const r=("string"==typeof t?t:"").split(/[\s,]+/),i=r.length;for(n=0;n{e[n]=t[n]})),e.names=[],e.skips=[],e.formatters={},e.selectColor=function(t){let n=0;for(let e=0;e>>=5)>0&&(e|=32),n+=wu(e)}while(r>0);return n},xu=function(t,e,n){var r,i,o,s,a,u=t.length,c=0,l=0;do{if(e>=u)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=65<=(o=t.charCodeAt(e++))&&o<=90?o-65:97<=o&&o<=122?o-97+26:48<=o&&o<=57?o-48+52:43==o?62:47==o?63:-1))throw new Error("Invalid base64 digit: "+t.charAt(e-1));r=!!(32&i),c+=(i&=31)<>1,1==(1&s)?-a:a),n.rest=e};var Eu=function(t,e,n){if(e in t)return t[e];if(3===arguments.length)return n;throw new Error('"'+e+'" is a required argument.')},Au=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,Cu=/^data:.+\,.+$/;function Ou(t){var e=t.match(Au);return e?{scheme:e[1],auth:e[2],host:e[3],port:e[4],path:e[5]}:null}var Ru=Ou;function Pu(t){var e="";return t.scheme&&(e+=t.scheme+":"),e+="//",t.auth&&(e+=t.auth+"@"),t.host&&(e+=t.host),t.port&&(e+=":"+t.port),t.path&&(e+=t.path),e}function ju(t){var e=t,n=Ou(t);if(n){if(!n.path)return t;e=n.path}for(var r,i=Mu(e),o=e.split(/\/+/),s=0,a=o.length-1;a>=0;a--)"."===(r=o[a])?o.splice(a,1):".."===r?s++:s>0&&(""===r?(o.splice(a+1,s),s=0):(o.splice(a,2),s--));return""===(e=o.join("/"))&&(e=i?"/":"."),n?(n.path=e,Pu(n)):e}var ku=ju;var Tu=function(t,e){""===t&&(t="."),""===e&&(e=".");var n=Ou(e),r=Ou(t);if(r&&(t=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),Pu(n);if(n||e.match(Cu))return e;if(r&&!r.host&&!r.path)return r.host=e,Pu(r);var i="/"===e.charAt(0)?e:ju(t.replace(/\/+$/,"")+"/"+e);return r?(r.path=i,Pu(r)):i},Mu=function(t){return"/"===t.charAt(0)||!!t.match(Au)};var Lu=function(t,e){""===t&&(t="."),t=t.replace(/\/$/,"");for(var n=0;0!==e.indexOf(t+"/");){var r=t.lastIndexOf("/");if(r<0)return e;if((t=t.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return e;++n}return Array(n+1).join("../")+e.substr(t.length+1)},Fu=!("__proto__"in Object.create(null));function Nu(t){return t}var Du=Fu?Nu:function(t){return Iu(t)?"$"+t:t};var $u=Fu?Nu:function(t){return Iu(t)?t.slice(1):t};function Iu(t){if(!t)return!1;var e=t.length;if(e<9)return!1;if(95!==t.charCodeAt(e-1)||95!==t.charCodeAt(e-2)||111!==t.charCodeAt(e-3)||116!==t.charCodeAt(e-4)||111!==t.charCodeAt(e-5)||114!==t.charCodeAt(e-6)||112!==t.charCodeAt(e-7)||95!==t.charCodeAt(e-8)||95!==t.charCodeAt(e-9))return!1;for(var n=e-10;n>=0;n--)if(36!==t.charCodeAt(n))return!1;return!0}var Hu=function(t,e,n){var r=t.source-e.source;return 0!==r||0!==(r=t.originalLine-e.originalLine)||0!==(r=t.originalColumn-e.originalColumn)||n||0!==(r=t.generatedColumn-e.generatedColumn)||0!==(r=t.generatedLine-e.generatedLine)?r:t.name-e.name};var Bu=function(t,e,n){var r=t.generatedLine-e.generatedLine;return 0!==r||0!==(r=t.generatedColumn-e.generatedColumn)||n||0!==(r=t.source-e.source)||0!==(r=t.originalLine-e.originalLine)||0!==(r=t.originalColumn-e.originalColumn)?r:t.name-e.name};function Gu(t,e){return t===e?0:t>e?1:-1}var Wu=function(t,e){var n=t.generatedLine-e.generatedLine;return 0!==n||0!==(n=t.generatedColumn-e.generatedColumn)||0!==(n=Gu(t.source,e.source))||0!==(n=t.originalLine-e.originalLine)||0!==(n=t.originalColumn-e.originalColumn)?n:Gu(t.name,e.name)},qu=Object.prototype.hasOwnProperty,Uu="undefined"!=typeof Map;function Vu(){this._array=[],this._set=Uu?new Map:Object.create(null)}Vu.fromArray=function(t,e){for(var n=new Vu,r=0,i=t.length;r=0)return e}else{var n=Du(t);if(qu.call(this._set,n))return this._set[n]}throw new Error('"'+t+'" is not in the set.')},Vu.prototype.at=function(t){if(t>=0&&tr||i==r&&s>=o||Wu(e,n)<=0?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))},Qu.prototype.toArray=function(){return this._sorted||(this._array.sort(Wu),this._sorted=!0),this._array};var Xu=Qu;function Yu(t){t||(t={}),this._file=Eu(t,"file",null),this._sourceRoot=Eu(t,"sourceRoot",null),this._skipValidation=Eu(t,"skipValidation",!1),this._sources=new Ku,this._names=new Ku,this._mappings=new Xu,this._sourcesContents=null}Yu.prototype._version=3,Yu.fromSourceMap=function(t){var e=t.sourceRoot,n=new Yu({file:t.file,sourceRoot:e});return t.eachMapping((function(t){var r={generated:{line:t.generatedLine,column:t.generatedColumn}};null!=t.source&&(r.source=t.source,null!=e&&(r.source=Lu(e,r.source)),r.original={line:t.originalLine,column:t.originalColumn},null!=t.name&&(r.name=t.name)),n.addMapping(r)})),t.sources.forEach((function(e){var r=t.sourceContentFor(e);null!=r&&n.setSourceContent(e,r)})),n},Yu.prototype.addMapping=function(t){var e=Eu(t,"generated"),n=Eu(t,"original",null),r=Eu(t,"source",null),i=Eu(t,"name",null);this._skipValidation||this._validateMapping(e,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:e.line,generatedColumn:e.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},Yu.prototype.setSourceContent=function(t,e){var n=t;null!=this._sourceRoot&&(n=Lu(this._sourceRoot,n)),null!=e?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[Du(n)]=e):this._sourcesContents&&(delete this._sourcesContents[Du(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},Yu.prototype.applySourceMap=function(t,e,n){var r=e;if(null==e){if(null==t.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=t.file}var i=this._sourceRoot;null!=i&&(r=Lu(i,r));var o=new Ku,s=new Ku;this._mappings.unsortedForEach((function(e){if(e.source===r&&null!=e.originalLine){var a=t.originalPositionFor({line:e.originalLine,column:e.originalColumn});null!=a.source&&(e.source=a.source,null!=n&&(e.source=Tu(n,e.source)),null!=i&&(e.source=Lu(i,e.source)),e.originalLine=a.line,e.originalColumn=a.column,null!=a.name&&(e.name=a.name))}var u=e.source;null==u||o.has(u)||o.add(u);var c=e.name;null==c||s.has(c)||s.add(c)}),this),this._sources=o,this._names=s,t.sources.forEach((function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=Tu(n,e)),null!=i&&(e=Lu(i,e)),this.setSourceContent(e,r))}),this)},Yu.prototype._validateMapping=function(t,e,n,r){if(e&&"number"!=typeof e.line&&"number"!=typeof e.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0)||e||n||r)&&!(t&&"line"in t&&"column"in t&&e&&"line"in e&&"column"in e&&t.line>0&&t.column>=0&&e.line>0&&e.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:n,original:e,name:r}))},Yu.prototype._serializeMappings=function(){for(var t,e,n,r,i=0,o=1,s=0,a=0,u=0,c=0,l="",p=this._mappings.toArray(),f=0,h=p.length;f0){if(!Wu(e,p[f-1]))continue;t+=","}t+=Su(e.generatedColumn-i),i=e.generatedColumn,null!=e.source&&(r=this._sources.indexOf(e.source),t+=Su(r-c),c=r,t+=Su(e.originalLine-1-a),a=e.originalLine-1,t+=Su(e.originalColumn-s),s=e.originalColumn,null!=e.name&&(n=this._names.indexOf(e.name),t+=Su(n-u),u=n)),l+=t}return l},Yu.prototype._generateSourcesContent=function(t,e){return t.map((function(t){if(!this._sourcesContents)return null;null!=e&&(t=Lu(e,t));var n=Du(t);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},Yu.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(t.file=this._file),null!=this._sourceRoot&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t},Yu.prototype.toString=function(){return JSON.stringify(this.toJSON())};var Zu=Yu,Ju=Zu;_u.SourceMapGenerator=Ju;function tc(t,e,n,r,i,o){var s=Math.floor((e-t)/2)+t,a=i(n,r[s],!0);return 0===a?s:a>0?e-s>1?tc(s,e,n,r,i,o):2==o?e1?tc(t,s,n,r,i,o):2==o?s:t<0?-1:t}var ec=function(t,e,n,r){if(0===e.length)return-1;var i=tc(-1,e.length,t,e,n,r||1);if(i<0)return-1;for(;i-1>=0&&0===n(e[i],e[i-1],!0);)--i;return i},nc=zu;function rc(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function ic(t,e,n,r){if(n=0){var o=this._originalMappings[i];if(void 0===t.column)for(var s=o.originalLine;o&&o.originalLine===s;)r.push({line:Eu(o,"generatedLine",null),column:Eu(o,"generatedColumn",null),lastColumn:Eu(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i];else for(var a=o.originalColumn;o&&o.originalLine===e&&o.originalColumn==a;)r.push({line:Eu(o,"generatedLine",null),column:Eu(o,"generatedColumn",null),lastColumn:Eu(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++i]}return r};var ac=sc;function uc(t){var e=t;"string"==typeof t&&(e=JSON.parse(t.replace(/^\)\]\}'/,"")));var n=Eu(e,"version"),r=Eu(e,"sources"),i=Eu(e,"names",[]),o=Eu(e,"sourceRoot",null),s=Eu(e,"sourcesContent",null),a=Eu(e,"mappings"),u=Eu(e,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);r=r.map(String).map(ku).map((function(t){return o&&Mu(o)&&Mu(t)?Lu(o,t):t})),this._names=nc.fromArray(i.map(String),!0),this._sources=nc.fromArray(r,!0),this.sourceRoot=o,this.sourcesContent=s,this._mappings=a,this.file=u}function cc(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function lc(t){var e=t;"string"==typeof t&&(e=JSON.parse(t.replace(/^\)\]\}'/,"")));var n=Eu(e,"version"),r=Eu(e,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new nc,this._names=new nc;var i={line:-1,column:0};this._sections=r.map((function(t){if(t.url)throw new Error("Support for url field in sections not implemented.");var e=Eu(t,"offset"),n=Eu(e,"line"),r=Eu(e,"column");if(n1&&(n.source=p+i[1],p+=i[1],n.originalLine=c+i[2],c=n.originalLine,n.originalLine+=1,n.originalColumn=l+i[3],l=n.originalColumn,i.length>4&&(n.name=f+i[4],f+=i[4])),m.push(n),"number"==typeof n.originalLine&&v.push(n)}oc(m,Bu),this.__generatedMappings=m,oc(v,Hu),this.__originalMappings=v},uc.prototype._findMapping=function(t,e,n,r,i,o){if(t[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+t[n]);if(t[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+t[r]);return ec(t,e,i,o)},uc.prototype.computeColumnSpans=function(){for(var t=0;t=0){var r=this._generatedMappings[n];if(r.generatedLine===e.generatedLine){var i=Eu(r,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=Tu(this.sourceRoot,i)));var o=Eu(r,"name",null);return null!==o&&(o=this._names.at(o)),{source:i,line:Eu(r,"originalLine",null),column:Eu(r,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},uc.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(t){return null==t})))},uc.prototype.sourceContentFor=function(t,e){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(t=Lu(this.sourceRoot,t)),this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];var n;if(null!=this.sourceRoot&&(n=Ru(this.sourceRoot))){var r=t.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}if(e)return null;throw new Error('"'+t+'" is not in the SourceMap.')},uc.prototype.generatedPositionFor=function(t){var e=Eu(t,"source");if(null!=this.sourceRoot&&(e=Lu(this.sourceRoot,e)),!this._sources.has(e))return{line:null,column:null,lastColumn:null};var n={source:e=this._sources.indexOf(e),originalLine:Eu(t,"line"),originalColumn:Eu(t,"column")},r=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",Hu,Eu(t,"bias",sc.GREATEST_LOWER_BOUND));if(r>=0){var i=this._originalMappings[r];if(i.source===n.source)return{line:Eu(i,"generatedLine",null),column:Eu(i,"generatedColumn",null),lastColumn:Eu(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},lc.prototype=Object.create(sc.prototype),lc.prototype.constructor=sc,lc.prototype._version=3,Object.defineProperty(lc.prototype,"sources",{get:function(){for(var t=[],e=0;e=0;e--)this.prepend(t[e]);else{if(!t.$$$isSourceNode$$$&&"string"!=typeof t)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+t);this.children.unshift(t)}return this},dc.prototype.walk=function(t){for(var e,n=0,r=this.children.length;n0){for(e=[],n=0;n: "+t);if(s.source=o,s.reason=t,s.pos=n,!this.options.silent)throw s;this.errors.push(s)},define:function(t,e){return tl(this,t,e),this},position:function(){var t={line:this.line,column:this.column},e=this;return function(n){return tl(n,"position",new Jc(t,e)),n}},set:function(t,e){return-1===this.types.indexOf(t)&&this.types.push(t),this.parsers[t]=e.bind(this),this},get:function(t){return this.parsers[t]},push:function(t,e){return this.sets[t]=this.sets[t]||[],this.count++,this.stack.push(e),this.sets[t].push(e)},pop:function(t){return this.sets[t]=this.sets[t]||[],this.count--,this.stack.pop(),this.sets[t].pop()},isInside:function(t){return this.sets[t]=this.sets[t]||[],this.sets[t].length>0},isType:function(t,e){return t&&t.type===e},prev:function(t){return this.stack.length>0?rl.last(this.stack,t):rl.last(this.nodes,t)},consume:function(t){this.input=this.input.substr(t)},updatePosition:function(t,e){var n=t.match(/\n/g);n&&(this.line+=n.length);var r=t.lastIndexOf("\n");this.column=~r?e-r:this.column+e,this.parsed+=t,this.consume(e)},match:function(t){var e=t.exec(this.input);if(e)return this.updatePosition(e[0],e[0].length),e},capture:function(t,e){return"function"==typeof e?this.set.apply(this,arguments):(this.regex.set(t,e),this.set(t,function(){var n=this.parsed,r=this.position(),i=this.match(e);if(i&&i[0]){var o=this.prev(),s=r({type:t,val:i[0],parsed:n,rest:this.input});i[1]&&(s.inner=i[1]),tl(s,"inside",this.stack.length>0),tl(s,"parent",o),o.nodes.push(s)}}.bind(this)),this)},capturePair:function(t,e,n,r){return this.sets[t]=this.sets[t]||[],this.set(t+".open",(function(){var n=this.parsed,i=this.position(),o=this.match(e);if(o&&o[0]){var s=o[0];this.setCount++,this.specialChars=!0;var a=i({type:t+".open",val:s,rest:this.input});void 0!==o[1]&&(a.inner=o[1]);var u=this.prev(),c=i({type:t,nodes:[a]});tl(c,"rest",this.input),tl(c,"parsed",n),tl(c,"prefix",o[1]),tl(c,"parent",u),tl(a,"parent",c),"function"==typeof r&&r.call(this,a,c),this.push(t,c),u.nodes.push(c)}})),this.set(t+".close",(function(){var e=this.position(),r=this.match(n);if(r&&r[0]){var i=this.pop(t),o=e({type:t+".close",rest:this.input,suffix:r[1],val:r[0]});if(!this.isType(i,t)){if(this.options.strict)throw new Error('missing opening "'+t+'"');return this.setCount--,o.escaped=!0,o}"\\"===o.suffix&&(i.escaped=!0,o.escaped=!0),i.nodes.push(o),tl(o,"parent",i)}})),this},eos:function(){var t=this.position();if(!this.input){for(var e=this.prev();"root"!==e.type&&!e.visited;){if(!0===this.options.strict)throw new SyntaxError("invalid syntax:"+Qc.inspect(e,null,2));sl(e)||(e.parent.escaped=!0,e.escaped=!0),ol(e,(function(t){sl(t.parent)||(t.parent.escaped=!0,t.escaped=!0)})),e=e.parent}var n=t({type:"eos",val:this.append||""});return tl(n,"parent",this.ast),n}},next:function(){for(var t,e=this.parsed,n=this.types.length,r=-1;++r=n)throw new Error("expected pattern to be less than "+n+" characters");return fl("create",t,e,(function(){if(""===t||t.length<3)return[t];if(ns.isEmptySets(t))return[];if(ns.isQuotedString(t))return[t.slice(1,-1)];var n=new Qs(e),r=e&&!0===e.expand?n.expand(t,e):n.optimize(t,e),i=r.output;return e&&!0===e.noempty&&(i=i.filter(Boolean)),e&&!0===e.nodupes&&(i=Jo(i)),Object.defineProperty(i,"result",{enumerable:!1,value:r}),i}))},pl.makeRe=function(t,e){if("string"!=typeof t)throw new TypeError("expected a string");var n=e&&e.maxLength||65536;if(t.length>=n)throw new Error("expected pattern to be less than "+n+" characters");return fl("makeRe",t,e,(function(){var n=pl(t,e),r=qo({strictErrors:!1},e);return po(n,r)}))},pl.parse=function(t,e){return new Qs(e).parse(t,e)},pl.compile=function(t,e){return new Qs(e).compile(t,e)},pl.clearCache=function(){ll=pl.cache={}},pl.Braces=Qs,pl.compilers=ts,pl.parsers=Ds,pl.cache=ll,go=pl;var hl={};const dl=u;var gl={};const yl=u,vl="win32"===process.platform;var ml={};const _l=u,bl={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},wl={...bl,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};ml={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:_l.sep,extglobChars:t=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:t=>!0===t?wl:bl};const{REGEX_BACKSLASH:Sl,REGEX_REMOVE_BACKSLASH:xl,REGEX_SPECIAL_CHARS:El,REGEX_SPECIAL_CHARS_GLOBAL:Al}=ml;var Cl=t=>t.replace(Al,"\\$1"),Ol=t=>t.replace(Sl,"/"),Rl=t=>t.replace(xl,(t=>"\\"===t?"":t)),Pl=()=>{const t=process.version.slice(1).split(".").map(Number);return 3===t.length&&t[0]>=9||8===t[0]&&t[1]>=10},jl=t=>t&&"boolean"==typeof t.windows?t.windows:!0===vl||"\\"===yl.sep,kl=(t,e,n)=>{const r=t.lastIndexOf(e,n);return-1===r?t:"\\"===t[r-1]?kl(t,e,r-1):`${t.slice(0,r)}\\${t.slice(r)}`},Tl=(t,e={})=>{let n=t;return n.startsWith("./")&&(n=n.slice(2),e.prefix="./"),n};const{CHAR_ASTERISK:Ml,CHAR_AT:Ll,CHAR_BACKWARD_SLASH:Fl,CHAR_COMMA:Nl,CHAR_DOT:Dl,CHAR_EXCLAMATION_MARK:$l,CHAR_FORWARD_SLASH:Il,CHAR_LEFT_CURLY_BRACE:Hl,CHAR_LEFT_PARENTHESES:Bl,CHAR_LEFT_SQUARE_BRACKET:Gl,CHAR_PLUS:Wl,CHAR_QUESTION_MARK:ql,CHAR_RIGHT_CURLY_BRACE:Ul,CHAR_RIGHT_PARENTHESES:Vl,CHAR_RIGHT_SQUARE_BRACKET:zl}=ml,Kl=t=>t===Il||t===Fl,Ql=t=>{!0!==t.isPrefix&&(t.depth=t.isGlobstar?1/0:1)};gl=(t,e)=>{const n=e||{},r=t.length-1,i=!0===n.parts||!0===n.scanToEnd,o=[],s=[],a=[];let u,c,l=t,p=-1,f=0,h=0,d=!1,g=!1,y=!1,v=!1,m=!1,_=!1,b=!1,w=!1,S=!1,x=0,E={value:"",depth:0,isGlob:!1};const A=()=>p>=r,C=()=>(u=c,l.charCodeAt(++p));for(;p0&&(R=l.slice(0,f),l=l.slice(f),h-=f),O&&!0===y&&h>0?(O=l.slice(0,h),P=l.slice(h)):!0===y?(O="",P=l):O=l,O&&""!==O&&"/"!==O&&O!==l&&Kl(O.charCodeAt(O.length-1))&&(O=O.slice(0,-1)),!0===n.unescape&&(P&&(P=Rl(P)),O&&!0===b&&(O=Rl(O)));const j={prefix:R,input:t,start:f,base:O,glob:P,isBrace:d,isBracket:g,isGlob:y,isExtglob:v,isGlobstar:m,negated:w};if(!0===n.tokens&&(j.maxDepth=0,Kl(c)||s.push(E),j.tokens=s),!0===n.parts||!0===n.tokens){let e;for(let r=0;r{if("function"==typeof e.expandRange)return e.expandRange(...t,e);t.sort();const n=`[${t.join("-")}]`;try{new RegExp(n)}catch(e){return t.map((t=>Cl(t))).join("..")}return n},rp=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,ip=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");t=ep[t]||t;const n={...e},r="number"==typeof n.maxLength?Math.min(Yl,n.maxLength):Yl;let i=t.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);const o={type:"bos",value:"",output:n.prepend||""},s=[o],a=n.capture?"":"?:",u=jl(e),c=ml.globChars(u),l=ml.extglobChars(c),{DOT_LITERAL:p,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:d,DOTS_SLASH:g,NO_DOT:y,NO_DOT_SLASH:v,NO_DOTS_SLASH:m,QMARK:_,QMARK_NO_DOT:b,STAR:w,START_ANCHOR:S}=c,x=t=>`(${a}(?:(?!${S}${t.dot?g:p}).)*?)`,E=n.dot?"":y,A=n.dot?_:b;let C=!0===n.bash?x(n):w;n.capture&&(C=`(${C})`),"boolean"==typeof n.noext&&(n.noextglob=n.noext);const O={input:t,index:-1,start:0,dot:!0===n.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:s};t=Tl(t,O),i=t.length;const R=[],P=[],j=[];let k,T=o;const M=()=>O.index===i-1,L=O.peek=(e=1)=>t[O.index+e],F=O.advance=()=>t[++O.index],N=()=>t.slice(O.index+1),D=(t="",e=0)=>{O.consumed+=t,O.index+=e},$=t=>{O.output+=null!=t.output?t.output:t.value,D(t.value)},I=()=>{let t=1;for(;"!"===L()&&("("!==L(2)||"?"===L(3));)F(),O.start++,t++;return t%2!=0&&(O.negated=!0,O.start++,!0)},H=t=>{O[t]++,j.push(t)},B=t=>{O[t]--,j.pop()},G=t=>{if("globstar"===T.type){const e=O.braces>0&&("comma"===t.type||"brace"===t.type),n=!0===t.extglob||R.length&&("pipe"===t.type||"paren"===t.type);"slash"===t.type||"paren"===t.type||e||n||(O.output=O.output.slice(0,-T.output.length),T.type="star",T.value="*",T.output=C,O.output+=T.output)}if(R.length&&"paren"!==t.type&&!l[t.value]&&(R[R.length-1].inner+=t.value),(t.value||t.output)&&$(t),T&&"text"===T.type&&"text"===t.type)return T.value+=t.value,void(T.output=(T.output||"")+t.value);t.prev=T,s.push(t),T=t},W=(t,e)=>{const r={...l[e],conditions:1,inner:""};r.prev=T,r.parens=O.parens,r.output=O.output;const i=(n.capture?"(":"")+r.open;H("parens"),G({type:t,value:e,output:O.output?"":d}),G({type:"paren",extglob:!0,value:F(),output:i}),R.push(r)},q=t=>{let e=t.close+(n.capture?")":"");if("negate"===t.type){let r=C;t.inner&&t.inner.length>1&&t.inner.includes("/")&&(r=x(n)),(r!==C||M()||/^\)+$/.test(N()))&&(e=t.close=`)$))${r}`),"bos"===t.prev.type&&M()&&(O.negatedExtglob=!0)}G({type:"paren",extglob:!0,value:k,output:e}),B("parens")};if(!1!==n.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(t)){let r=!1,i=t.replace(tp,((t,e,n,i,o,s)=>"\\"===i?(r=!0,t):"?"===i?e?e+i+(o?_.repeat(o.length):""):0===s?A+(o?_.repeat(o.length):""):_.repeat(n.length):"."===i?p.repeat(n.length):"*"===i?e?e+i+(o?C:""):C:e?t:`\\${t}`));return!0===r&&(i=!0===n.unescape?i.replace(/\\/g,""):i.replace(/\\+/g,(t=>t.length%2==0?"\\\\":t?"\\":""))),i===t&&!0===n.contains?(O.output=t,O):(O.output=((t,e={},n={})=>{let r=`${n.contains?"":"^"}(?:${t})${n.contains?"":"$"}`;return!0===e.negated&&(r=`(?:^(?!${r}).*$)`),r})(i,O,e),O)}for(;!M();){if(k=F(),"\0"===k)continue;if("\\"===k){const t=L();if("/"===t&&!0!==n.bash)continue;if("."===t||";"===t)continue;if(!t){k+="\\",G({type:"text",value:k});continue}const e=/^\\+/.exec(N());let r=0;if(e&&e[0].length>2&&(r=e[0].length,O.index+=r,r%2!=0&&(k+="\\")),!0===n.unescape?k=F()||"":k+=F()||"",0===O.brackets){G({type:"text",value:k});continue}}if(O.brackets>0&&("]"!==k||"["===T.value||"[^"===T.value)){if(!1!==n.posix&&":"===k){const t=T.value.slice(1);if(t.includes("[")&&(T.posix=!0,t.includes(":"))){const t=T.value.lastIndexOf("["),e=T.value.slice(0,t),n=T.value.slice(t+2),r=Zl[n];if(r){T.value=e+r,O.backtrack=!0,F(),o.output||1!==s.indexOf(T)||(o.output=d);continue}}}("["===k&&":"!==L()||"-"===k&&"]"===L())&&(k=`\\${k}`),"]"!==k||"["!==T.value&&"[^"!==T.value||(k=`\\${k}`),!0===n.posix&&"!"===k&&"["===T.value&&(k="^"),T.value+=k,$({value:k});continue}if(1===O.quotes&&'"'!==k){k=Cl(k),T.value+=k,$({value:k});continue}if('"'===k){O.quotes=1===O.quotes?0:1,!0===n.keepQuotes&&G({type:"text",value:k});continue}if("("===k){H("parens"),G({type:"paren",value:k});continue}if(")"===k){if(0===O.parens&&!0===n.strictBrackets)throw new SyntaxError(rp("opening","("));const t=R[R.length-1];if(t&&O.parens===t.parens+1){q(R.pop());continue}G({type:"paren",value:k,output:O.parens?")":"\\)"}),B("parens");continue}if("["===k){if(!0!==n.nobracket&&N().includes("]"))H("brackets");else{if(!0!==n.nobracket&&!0===n.strictBrackets)throw new SyntaxError(rp("closing","]"));k=`\\${k}`}G({type:"bracket",value:k});continue}if("]"===k){if(!0===n.nobracket||T&&"bracket"===T.type&&1===T.value.length){G({type:"text",value:k,output:`\\${k}`});continue}if(0===O.brackets){if(!0===n.strictBrackets)throw new SyntaxError(rp("opening","["));G({type:"text",value:k,output:`\\${k}`});continue}B("brackets");const t=T.value.slice(1);if(!0===T.posix||"^"!==t[0]||t.includes("/")||(k=`/${k}`),T.value+=k,$({value:k}),!1===n.literalBrackets||(U=t,El.test(U)))continue;const e=Cl(T.value);if(O.output=O.output.slice(0,-T.value.length),!0===n.literalBrackets){O.output+=e,T.value=e;continue}T.value=`(${a}${e}|${T.value})`,O.output+=T.value;continue}if("{"===k&&!0!==n.nobrace){H("braces");const t={type:"brace",value:k,output:"(",outputIndex:O.output.length,tokensIndex:O.tokens.length};P.push(t),G(t);continue}if("}"===k){const t=P[P.length-1];if(!0===n.nobrace||!t){G({type:"text",value:k,output:k});continue}let e=")";if(!0===t.dots){const t=s.slice(),r=[];for(let e=t.length-1;e>=0&&(s.pop(),"brace"!==t[e].type);e--)"dots"!==t[e].type&&r.unshift(t[e].value);e=np(r,n),O.backtrack=!0}if(!0!==t.comma&&!0!==t.dots){const n=O.output.slice(0,t.outputIndex),r=O.tokens.slice(t.tokensIndex);t.value=t.output="\\{",k=e="\\}",O.output=n;for(const t of r)O.output+=t.output||t.value}G({type:"brace",value:k,output:e}),B("braces"),P.pop();continue}if("|"===k){R.length>0&&R[R.length-1].conditions++,G({type:"text",value:k});continue}if(","===k){let t=k;const e=P[P.length-1];e&&"braces"===j[j.length-1]&&(e.comma=!0,t="|"),G({type:"comma",value:k,output:t});continue}if("/"===k){if("dot"===T.type&&O.index===O.start+1){O.start=O.index+1,O.consumed="",O.output="",s.pop(),T=o;continue}G({type:"slash",value:k,output:h});continue}if("."===k){if(O.braces>0&&"dot"===T.type){"."===T.value&&(T.output=p);const t=P[P.length-1];T.type="dots",T.output+=k,T.value+=k,t.dots=!0;continue}if(O.braces+O.parens===0&&"bos"!==T.type&&"slash"!==T.type){G({type:"text",value:k,output:p});continue}G({type:"dot",value:k,output:p});continue}if("?"===k){if(!(T&&"("===T.value)&&!0!==n.noextglob&&"("===L()&&"?"!==L(2)){W("qmark",k);continue}if(T&&"paren"===T.type){const t=L();let e=k;if("<"===t&&!Pl())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===T.value&&!/[!=<:]/.test(t)||"<"===t&&!/<([!=]|\w+>)/.test(N()))&&(e=`\\${k}`),G({type:"text",value:k,output:e});continue}if(!0!==n.dot&&("slash"===T.type||"bos"===T.type)){G({type:"qmark",value:k,output:b});continue}G({type:"qmark",value:k,output:_});continue}if("!"===k){if(!0!==n.noextglob&&"("===L()&&("?"!==L(2)||!/[!=<:]/.test(L(3)))){W("negate",k);continue}if(!0!==n.nonegate&&0===O.index){I();continue}}if("+"===k){if(!0!==n.noextglob&&"("===L()&&"?"!==L(2)){W("plus",k);continue}if(T&&"("===T.value||!1===n.regex){G({type:"plus",value:k,output:f});continue}if(T&&("bracket"===T.type||"paren"===T.type||"brace"===T.type)||O.parens>0){G({type:"plus",value:k});continue}G({type:"plus",value:f});continue}if("@"===k){if(!0!==n.noextglob&&"("===L()&&"?"!==L(2)){G({type:"at",extglob:!0,value:k,output:""});continue}G({type:"text",value:k});continue}if("*"!==k){"$"!==k&&"^"!==k||(k=`\\${k}`);const t=Jl.exec(N());t&&(k+=t[0],O.index+=t[0].length),G({type:"text",value:k});continue}if(T&&("globstar"===T.type||!0===T.star)){T.type="star",T.star=!0,T.value+=k,T.output=C,O.backtrack=!0,O.globstar=!0,D(k);continue}let e=N();if(!0!==n.noextglob&&/^\([^?]/.test(e)){W("star",k);continue}if("star"===T.type){if(!0===n.noglobstar){D(k);continue}const r=T.prev,i=r.prev,o="slash"===r.type||"bos"===r.type,s=i&&("star"===i.type||"globstar"===i.type);if(!0===n.bash&&(!o||e[0]&&"/"!==e[0])){G({type:"star",value:k,output:""});continue}const a=O.braces>0&&("comma"===r.type||"brace"===r.type),u=R.length&&("pipe"===r.type||"paren"===r.type);if(!o&&"paren"!==r.type&&!a&&!u){G({type:"star",value:k,output:""});continue}for(;"/**"===e.slice(0,3);){const n=t[O.index+4];if(n&&"/"!==n)break;e=e.slice(3),D("/**",3)}if("bos"===r.type&&M()){T.type="globstar",T.value+=k,T.output=x(n),O.output=T.output,O.globstar=!0,D(k);continue}if("slash"===r.type&&"bos"!==r.prev.type&&!s&&M()){O.output=O.output.slice(0,-(r.output+T.output).length),r.output=`(?:${r.output}`,T.type="globstar",T.output=x(n)+(n.strictSlashes?")":"|$)"),T.value+=k,O.globstar=!0,O.output+=r.output+T.output,D(k);continue}if("slash"===r.type&&"bos"!==r.prev.type&&"/"===e[0]){const t=void 0!==e[1]?"|$":"";O.output=O.output.slice(0,-(r.output+T.output).length),r.output=`(?:${r.output}`,T.type="globstar",T.output=`${x(n)}${h}|${h}${t})`,T.value+=k,O.output+=r.output+T.output,O.globstar=!0,D(k+F()),G({type:"slash",value:"/",output:""});continue}if("bos"===r.type&&"/"===e[0]){T.type="globstar",T.value+=k,T.output=`(?:^|${h}|${x(n)}${h})`,O.output=T.output,O.globstar=!0,D(k+F()),G({type:"slash",value:"/",output:""});continue}O.output=O.output.slice(0,-T.output.length),T.type="globstar",T.output=x(n),T.value+=k,O.output+=T.output,O.globstar=!0,D(k);continue}const r={type:"star",value:k,output:C};!0!==n.bash?!T||"bracket"!==T.type&&"paren"!==T.type||!0!==n.regex?(O.index!==O.start&&"slash"!==T.type&&"dot"!==T.type||("dot"===T.type?(O.output+=v,T.output+=v):!0===n.dot?(O.output+=m,T.output+=m):(O.output+=E,T.output+=E),"*"!==L()&&(O.output+=d,T.output+=d)),G(r)):(r.output=k,G(r)):(r.output=".*?","bos"!==T.type&&"slash"!==T.type||(r.output=E+r.output),G(r))}for(var U;O.brackets>0;){if(!0===n.strictBrackets)throw new SyntaxError(rp("closing","]"));O.output=kl(O.output,"["),B("brackets")}for(;O.parens>0;){if(!0===n.strictBrackets)throw new SyntaxError(rp("closing",")"));O.output=kl(O.output,"("),B("parens")}for(;O.braces>0;){if(!0===n.strictBrackets)throw new SyntaxError(rp("closing","}"));O.output=kl(O.output,"{"),B("braces")}if(!0===n.strictSlashes||"star"!==T.type&&"bracket"!==T.type||G({type:"maybe_slash",value:"",output:`${h}?`}),!0===O.backtrack){O.output="";for(const t of O.tokens)O.output+=null!=t.output?t.output:t.value,t.suffix&&(O.output+=t.suffix)}return O};ip.fastpaths=(t,e)=>{const n={...e},r="number"==typeof n.maxLength?Math.min(Yl,n.maxLength):Yl,i=t.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);t=ep[t]||t;const o=jl(e),{DOT_LITERAL:s,SLASH_LITERAL:a,ONE_CHAR:u,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:p,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:d}=ml.globChars(o),g=n.dot?p:l,y=n.dot?f:l,v=n.capture?"":"?:";let m=!0===n.bash?".*?":h;n.capture&&(m=`(${m})`);const _=t=>!0===t.noglobstar?m:`(${v}(?:(?!${d}${t.dot?c:s}).)*?)`,b=t=>{switch(t){case"*":return`${g}${u}${m}`;case".*":return`${s}${u}${m}`;case"*.*":return`${g}${m}${s}${u}${m}`;case"*/*":return`${g}${m}${a}${u}${y}${m}`;case"**":return g+_(n);case"**/*":return`(?:${g}${_(n)}${a})?${y}${u}${m}`;case"**/*.*":return`(?:${g}${_(n)}${a})?${y}${m}${s}${u}${m}`;case"**/.*":return`(?:${g}${_(n)}${a})?${s}${u}${m}`;default:{const e=/^(.*?)\.(\w+)$/.exec(t);if(!e)return;const n=b(e[1]);if(!n)return;return n+s+e[2]}}},w=Tl(t,{negated:!1,prefix:""});let S=b(w);return S&&!0!==n.strictSlashes&&(S+=`${a}?`),S},Xl=ip;const op=(t,e,n=!1)=>{if(Array.isArray(t)){const r=t.map((t=>op(t,e,n)));return t=>{for(const e of r){const n=e(t);if(n)return n}return!1}}const r=(i=t)&&"object"==typeof i&&!Array.isArray(i)&&t.tokens&&t.input;var i;if(""===t||"string"!=typeof t&&!r)throw new TypeError("Expected pattern to be a non-empty string");const o=e||{},s=jl(e),a=r?op.compileRe(t,e):op.makeRe(t,e,!1,!0),u=a.state;delete a.state;let c=()=>!1;if(o.ignore){const t={...e,ignore:null,onMatch:null,onResult:null};c=op(o.ignore,t,n)}const l=(n,r=!1)=>{const{isMatch:i,match:l,output:p}=op.test(n,a,e,{glob:t,posix:s}),f={glob:t,state:u,regex:a,posix:s,input:n,output:p,match:l,isMatch:i};return"function"==typeof o.onResult&&o.onResult(f),!1===i?(f.isMatch=!1,!!r&&f):c(n)?("function"==typeof o.onIgnore&&o.onIgnore(f),f.isMatch=!1,!!r&&f):("function"==typeof o.onMatch&&o.onMatch(f),!r||f)};return n&&(l.state=u),l};op.test=(t,e,n,{glob:r,posix:i}={})=>{if("string"!=typeof t)throw new TypeError("Expected input to be a string");if(""===t)return{isMatch:!1,output:""};const o=n||{},s=o.format||(i?Ol:null);let a=t===r,u=a&&s?s(t):t;return!1===a&&(u=s?s(t):t,a=u===r),!1!==a&&!0!==o.capture||(a=!0===o.matchBase||!0===o.basename?op.matchBase(t,e,n,i):e.exec(u)),{isMatch:Boolean(a),match:a,output:u}},op.matchBase=(t,e,n,r=jl(n))=>(e instanceof RegExp?e:op.makeRe(e,n)).test(dl.basename(t)),op.isMatch=(t,e,n)=>op(e,n)(t),op.parse=(t,e)=>Array.isArray(t)?t.map((t=>op.parse(t,e))):Xl(t,{...e,fastpaths:!1}),op.scan=(t,e)=>gl(t,e),op.compileRe=(t,e,n=!1,r=!1)=>{if(!0===n)return t.output;const i=e||{},o=i.contains?"":"^",s=i.contains?"":"$";let a=`${o}(?:${t.output})${s}`;t&&!0===t.negated&&(a=`^(?!${a}).*$`);const u=op.toRegex(a,e);return!0===r&&(u.state=t),u},op.makeRe=(t,e,n=!1,r=!1)=>{if(!t||"string"!=typeof t)throw new TypeError("Expected a non-empty string");const i=e||{};let o,s={negated:!1,fastpaths:!0},a="";return t.startsWith("./")&&(t=t.slice(2),a=s.prefix="./"),!1===i.fastpaths||"."!==t[0]&&"*"!==t[0]||(o=Xl.fastpaths(t,e)),void 0===o?(s=Xl(t,e),s.prefix=a+(s.prefix||"")):s.output=o,op.compileRe(s,e,n,r)},op.toRegex=(t,e)=>{try{const n=e||{};return new RegExp(t,n.flags||(n.nocase?"i":""))}catch(t){if(e&&!0===e.debug)throw t;return/$^/}},op.constants=ml,hl=op;const sp=t=>"string"==typeof t&&(""===t||"./"===t),ap=(t,e,n)=>{e=[].concat(e),t=[].concat(t);let r=new Set,i=new Set,o=new Set,s=0,a=t=>{o.add(t.output),n&&n.onResult&&n.onResult(t)};for(let o=0;o!r.has(t)));if(n&&0===u.length){if(!0===n.failglob)throw new Error(`No matches found for "${e.join(", ")}"`);if(!0===n.nonull||!0===n.nullglob)return n.unescape?e.map((t=>t.replace(/\\/g,""))):e}return u};ap.match=ap,ap.matcher=(t,e)=>hl(t,e),ap.any=ap.isMatch=(t,e,n)=>hl(e,n)(t),ap.not=(t,e,n={})=>{e=[].concat(e).map(String);let r=new Set,i=[],o=ap(t,e,{...n,onResult:t=>{n.onResult&&n.onResult(t),i.push(t.output)}});for(let t of i)o.includes(t)||r.add(t);return[...r]},ap.contains=(t,e,n)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${lo.inspect(t)}"`);if(Array.isArray(e))return e.some((e=>ap.contains(t,e,n)));if("string"==typeof e){if(sp(t)||sp(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return ap.isMatch(t,e,{...n,contains:!0})},ap.matchKeys=(t,e,n)=>{if(null===(r=t)||"object"!=typeof r||Array.isArray(r))throw new TypeError("Expected the first argument to be an object");var r;let i=ap(Object.keys(t),e,n),o={};for(let e of i)o[e]=t[e];return o},ap.some=(t,e,n)=>{let r=[].concat(t);for(let t of[].concat(e)){let e=hl(String(t),n);if(r.some((t=>e(t))))return!0}return!1},ap.every=(t,e,n)=>{let r=[].concat(t);for(let t of[].concat(e)){let e=hl(String(t),n);if(!r.every((t=>e(t))))return!1}return!0},ap.all=(t,e,n)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${lo.inspect(t)}"`);return[].concat(e).every((e=>hl(e,n)(t)))},ap.capture=(t,e,n)=>{let r=jl(n),i=hl.makeRe(String(t),{...n,capture:!0}).exec(r?Ol(e):e);if(i)return i.slice(1).map((t=>void 0===t?"":t))},ap.makeRe=(...t)=>hl.makeRe(...t),ap.scan=(...t)=>hl.scan(...t),ap.parse=(t,e)=>{let n=[];for(let r of[].concat(t||[]))for(let t of go(String(r),e))n.push(hl.parse(t,e));return n},ap.braces=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return e&&!0===e.nobrace||!/\{.*\}/.test(t)?[t]:go(t,e)},ap.braceExpand=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return ap.braces(t,{...e,expand:!0})},co=ap;const up=/[*?]|^!/,cp=/\[.*]/,lp=/(?:^|[^!*+?@])\(.*\|.*\)/,pp=/[!*+?@]\(.*\)/,fp=/{.*(?:,|\.\.).*}/;function hp(t,e={}){return!gp(t,e)}var dp=hp;function gp(t,e={}){return""!==t&&(!(!1!==e.caseSensitiveMatch&&!t.includes("\\"))||(!!(up.test(t)||cp.test(t)||lp.test(t))||(!(!1===e.extglob||!pp.test(t))||!(!1===e.braceExpansion||!fp.test(t)))))}Ji.isStaticPattern=dp;var yp=gp;Ji.isDynamicPattern=yp;var vp=function(t){return _p(t)?t.slice(1):t};Ji.convertToPositivePattern=vp;var mp=function(t){return"!"+t};function _p(t){return t.startsWith("!")&&"("!==t[1]}Ji.convertToNegativePattern=mp;var bp=_p;function wp(t){return!_p(t)}Ji.isNegativePattern=bp;var Sp=wp;Ji.isPositivePattern=Sp;var xp=function(t){return t.filter(_p)};Ji.getNegativePatterns=xp;var Ep=function(t){return t.filter(wp)};Ji.getPositivePatterns=Ep;var Ap=function(t){return no(t,{flipBackslashes:!1})};Ji.getBaseDirectory=Ap;var Cp=function(t){return t.includes("**")};function Op(t){return t.endsWith("/**")}Ji.hasGlobStar=Cp;var Rp=Op;Ji.endsWithSlashGlobStar=Rp;var Pp=function(t){const e=eo.basename(t);return Op(t)||hp(e)};Ji.isAffectDepthOfReadingPattern=Pp;var jp=function(t){return t.reduce(((t,e)=>t.concat(kp(e))),[])};function kp(t){return co.braces(t,{expand:!0,nodupes:!0})}Ji.expandPatternsWithBraceExpansion=jp;var Tp=kp;Ji.expandBraceExpansion=Tp;var Mp=function(t,e){let{parts:n}=hl.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return 0===n.length&&(n=[t]),n[0].startsWith("/")&&(n[0]=n[0].slice(1),n.unshift("")),n};function Lp(t,e){return co.makeRe(t,e)}Ji.getPatternParts=Mp;var Fp=Lp;Ji.makeRe=Fp;var Np=function(t,e){return t.map((t=>Lp(t,e)))};Ji.convertPatternsToRe=Np,to=function(t,e){return e.some((e=>e.test(t)))},Ji.matchAny=to;var Dp=Ji;Ti.pattern=Ji;var $p={};Object.defineProperty($p,"__esModule",{value:!0});var Ip=void 0;$p.merge=Ip;var Hp={};const Bp=e.PassThrough,Gp=Array.prototype.slice;function Wp(t,e){if(Array.isArray(t))for(let n=0,r=t.length;nt.emit("close")))}Hp=function(){const t=[],e=Gp.call(arguments);let n=!1,r=e[e.length-1];r&&!Array.isArray(r)&&null==r.pipe?e.pop():r={};const i=!1!==r.end,o=!0===r.pipeError;null==r.objectMode&&(r.objectMode=!0);null==r.highWaterMark&&(r.highWaterMark=65536);const s=Bp(r);function a(){for(let e=0,n=arguments.length;e0||(n=!1,u())}function a(t){function e(){t.removeListener("merge2UnpipeEnd",e),t.removeListener("end",e),o&&t.removeListener("error",n),i()}function n(t){s.emit("error",t)}if(t._readableState.endEmitted)return i();t.on("merge2UnpipeEnd",e),t.on("end",e),o&&t.on("error",n),t.pipe(s,{end:!1}),t.resume()}for(let t=0;t{t.once("error",(t=>e.emit("error",t)))})),e.once("close",(()=>qp(t))),e.once("end",(()=>qp(t))),e},$p.merge=Ip;var Up=$p;Ti.stream=$p;var Vp={};Object.defineProperty(Vp,"__esModule",{value:!0});var zp=(Kp=void 0,Vp.isString=Kp);Vp.isEmpty=zp;var Kp=function(t){return"string"==typeof t};Vp.isString=Kp,zp=function(t){return""===t},Vp.isEmpty=zp,Mi=Vp,Ti.string=Mi;var Qp=function(t,e){const n=Zp(t),r=tf(t,e.ignore),i=n.filter((t=>Ti.pattern.isStaticPattern(t,e))),o=n.filter((t=>Ti.pattern.isDynamicPattern(t,e))),s=Xp(i,r,!1),a=Xp(o,r,!0);return s.concat(a)};function Xp(t,e,n){const r=nf(t);if("."in r){return[af(".",t,e,n)]}return of(r,e,n)}ji.generate=Qp;var Yp=Xp;function Zp(t){return Ti.pattern.getPositivePatterns(t)}ji.convertPatternsToTasks=Yp;var Jp=Zp;function tf(t,e){return Ti.pattern.getNegativePatterns(t).concat(e).map(Ti.pattern.convertToPositivePattern)}ji.getPositivePatterns=Jp;var ef=tf;function nf(t){return t.reduce(((t,e)=>{const n=Ti.pattern.getBaseDirectory(e);return n in t?t[n].push(e):t[n]=[e],t}),{})}ji.getNegativePatternsAsPositive=ef;var rf=nf;function of(t,e,n){return Object.keys(t).map((r=>af(r,t[r],e,n)))}ji.groupPatternsByBaseDirectory=rf;var sf=of;function af(t,e,n,r){return{dynamic:r,positive:e,negative:n,base:t,patterns:[].concat(e,n.map(Ti.pattern.convertToNegativePattern))}}ji.convertPatternGroupsToTasks=sf,ki=af,ji.convertPatternGroupToTask=ki;var uf={};Object.defineProperty(uf,"__esModule",{value:!0});var cf={};Object.defineProperty(cf,"__esModule",{value:!0});const lf=e;var pf={};Object.defineProperty(pf,"__esModule",{value:!0});var ff=(Af=void 0,Cf=pf.Settings=Af,pf.stat=Cf);pf.statSync=ff;var hf={};Object.defineProperty(hf,"__esModule",{value:!0});var df=void 0;function gf(t,e){t(e)}function yf(t,e){t(null,e)}hf.read=df,df=function(t,e,n){e.fs.lstat(t,((r,i)=>null!==r?gf(n,r):i.isSymbolicLink()&&e.followSymbolicLink?void e.fs.stat(t,((t,r)=>{if(null!==t)return e.throwErrorOnBrokenSymbolicLink?gf(n,t):yf(n,i);e.markSymbolicLink&&(r.isSymbolicLink=()=>!0),yf(n,r)})):yf(n,i)))},hf.read=df;var vf={};Object.defineProperty(vf,"__esModule",{value:!0});var mf=void 0;vf.read=mf,mf=function(t,e){const n=e.fs.lstatSync(t);if(!n.isSymbolicLink()||!e.followSymbolicLink)return n;try{const n=e.fs.statSync(t);return e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),n}catch(t){if(!e.throwErrorOnBrokenSymbolicLink)return n;throw t}},vf.read=mf;var _f={};Object.defineProperty(_f,"__esModule",{value:!0});var bf={};Object.defineProperty(bf,"__esModule",{value:!0});var wf=(xf=void 0,bf.FILE_SYSTEM_ADAPTER=xf);bf.createFileSystemAdapter=wf;const Sf=r;var xf={lstat:Sf.lstat,stat:Sf.stat,lstatSync:Sf.lstatSync,statSync:Sf.statSync};bf.FILE_SYSTEM_ADAPTER=xf,wf=function(t){return void 0===t?bf.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},bf.FILE_SYSTEM_ADAPTER),t)},bf.createFileSystemAdapter=wf;var Ef=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=bf.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,e){return null!=t?t:e}};_f.default=Ef;var Af=_f.default;pf.Settings=Af;var Cf=function(t,e,n){if("function"==typeof e)return hf.read(t,Of(),e);hf.read(t,Of(e),n)};function Of(t={}){return t instanceof _f.default?t:new _f.default(t)}pf.stat=Cf,ff=function(t,e){const n=Of(e);return vf.read(t,n)},pf.statSync=ff;var Rf={};Object.defineProperty(Rf,"__esModule",{value:!0});var Pf=(zh=void 0,Kh=Rf.walk=zh,Qh=Rf.walkSync=Kh,Rf.walkStream=Qh);Rf.Settings=Pf;var jf={};Object.defineProperty(jf,"__esModule",{value:!0});var kf={};Object.defineProperty(kf,"__esModule",{value:!0});const Tf=c;var Mf={};Object.defineProperty(Mf,"__esModule",{value:!0});var Lf=(vh=void 0,mh=Mf.scandir=vh,Mf.scandirSync=mh);Mf.Settings=Lf;var Ff={};Object.defineProperty(Ff,"__esModule",{value:!0});var Nf=(Zf=void 0,th=Ff.read=Zf,Ff.readdirWithFileTypes=th);Ff.readdir=Nf;var Df={};Df=function(t,e){let n,r,i,o=!0;Array.isArray(t)?(n=[],r=t.length):(i=Object.keys(t),n={},r=i.length);function s(t){function r(){e&&e(t,n),e=null}o?$f(r):r()}function a(t,e,i){n[t]=i,(0==--r||e)&&s(e)}r?i?i.forEach((function(e){t[e]((function(t,n){a(e,t,n)}))})):t.forEach((function(t,e){t((function(t,n){a(e,t,n)}))})):s(null);o=!1};var $f={};let If;$f="function"==typeof queueMicrotask?queueMicrotask.bind(globalThis):t=>(If||(If=Promise.resolve())).then(t).catch((t=>setTimeout((()=>{throw t}),0)));var Hf={};Object.defineProperty(Hf,"__esModule",{value:!0});var Bf=void 0;Hf.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Bf;const Gf=process.versions.node.split("."),Wf=parseInt(Gf[0],10),qf=parseInt(Gf[1],10);Bf=Wf>10||10===Wf&&qf>=10,Hf.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Bf;var Uf={};Object.defineProperty(Uf,"__esModule",{value:!0});var Vf=void 0;Uf.fs=Vf;var zf={};Object.defineProperty(zf,"__esModule",{value:!0});var Kf=void 0;zf.createDirentFromStats=Kf;class Qf{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Kf=function(t,e){return new Qf(t,e)},zf.createDirentFromStats=Kf,Vf=zf,Uf.fs=Vf;var Xf={};Object.defineProperty(Xf,"__esModule",{value:!0});var Yf=void 0;Xf.joinPathSegments=Yf,Yf=function(t,e,n){return t.endsWith(n)?t+e:t+n+e},Xf.joinPathSegments=Yf;var Zf=function(t,e,n){return!e.stats&&Hf.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Jf(t,e,n):eh(t,e,n)};function Jf(t,e,n){e.fs.readdir(t,{withFileTypes:!0},((r,i)=>{if(null!==r)return nh(n,r);const o=i.map((n=>({dirent:n,name:n.name,path:Xf.joinPathSegments(t,n.name,e.pathSegmentSeparator)})));if(!e.followSymbolicLinks)return rh(n,o);const s=o.map((t=>function(t,e){return n=>{if(!t.dirent.isSymbolicLink())return n(null,t);e.fs.stat(t.path,((r,i)=>null!==r?e.throwErrorOnBrokenSymbolicLink?n(r):n(null,t):(t.dirent=Uf.fs.createDirentFromStats(t.name,i),n(null,t))))}}(t,e)));Df(s,((t,e)=>{if(null!==t)return nh(n,t);rh(n,e)}))}))}Ff.read=Zf;var th=Jf;function eh(t,e,n){e.fs.readdir(t,((r,i)=>{if(null!==r)return nh(n,r);const o=i.map((n=>Xf.joinPathSegments(t,n,e.pathSegmentSeparator))),s=o.map((t=>n=>pf.stat(t,e.fsStatSettings,n)));Df(s,((t,r)=>{if(null!==t)return nh(n,t);const s=[];i.forEach(((t,n)=>{const i=r[n],a={name:t,path:o[n],dirent:Uf.fs.createDirentFromStats(t,i)};e.stats&&(a.stats=i),s.push(a)})),rh(n,s)}))}))}function nh(t,e){t(e)}function rh(t,e){t(null,e)}Ff.readdirWithFileTypes=th,Nf=eh,Ff.readdir=Nf;var ih={};Object.defineProperty(ih,"__esModule",{value:!0});var oh=(sh=void 0,uh=ih.read=sh,ih.readdirWithFileTypes=uh);ih.readdir=oh;var sh=function(t,e){return!e.stats&&Hf.IS_SUPPORT_READDIR_WITH_FILE_TYPES?ah(t,e):ch(t,e)};function ah(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map((n=>{const r={dirent:n,name:n.name,path:Xf.joinPathSegments(t,n.name,e.pathSegmentSeparator)};if(r.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{const t=e.fs.statSync(r.path);r.dirent=Uf.fs.createDirentFromStats(r.name,t)}catch(t){if(e.throwErrorOnBrokenSymbolicLink)throw t}return r}))}ih.read=sh;var uh=ah;function ch(t,e){return e.fs.readdirSync(t).map((n=>{const r=Xf.joinPathSegments(t,n,e.pathSegmentSeparator),i=pf.statSync(r,e.fsStatSettings),o={name:n,path:r,dirent:Uf.fs.createDirentFromStats(n,i)};return e.stats&&(o.stats=i),o}))}ih.readdirWithFileTypes=uh,oh=ch,ih.readdir=oh;var lh={};Object.defineProperty(lh,"__esModule",{value:!0});const ph=u;var fh={};Object.defineProperty(fh,"__esModule",{value:!0});var hh=(gh=void 0,fh.FILE_SYSTEM_ADAPTER=gh);fh.createFileSystemAdapter=hh;const dh=r;var gh={lstat:dh.lstat,stat:dh.stat,lstatSync:dh.lstatSync,statSync:dh.statSync,readdir:dh.readdir,readdirSync:dh.readdirSync};fh.FILE_SYSTEM_ADAPTER=gh,hh=function(t){return void 0===t?fh.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},fh.FILE_SYSTEM_ADAPTER),t)},fh.createFileSystemAdapter=hh;var yh=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=fh.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,ph.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pf.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};lh.default=yh,Lf=lh.default,Mf.Settings=Lf;var vh=function(t,e,n){if("function"==typeof e)return Ff.read(t,_h(),e);Ff.read(t,_h(e),n)};Mf.scandir=vh;var mh=function(t,e){const n=_h(e);return ih.read(t,n)};function _h(t={}){return t instanceof lh.default?t:new lh.default(t)}Mf.scandirSync=mh;var bh={},wh={};function Sh(t,e,n){if("function"==typeof t&&(n=e,e=t,t=null),n<1)throw new Error("fastqueue concurrency must be greater than 1");var r=wh(Eh),i=null,o=null,s=0,a=null,u={push:function(n,l){var p=r.get();p.context=t,p.release=c,p.value=n,p.callback=l||xh,p.errorHandler=a,s===u.concurrency||u.paused?o?(o.next=p,o=p):(i=p,o=p,u.saturated()):(s++,e.call(t,p.value,p.worked))},drain:xh,saturated:xh,pause:function(){u.paused=!0},paused:!1,concurrency:n,running:function(){return s},resume:function(){if(!u.paused)return;u.paused=!1;for(var t=0;t{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate((()=>{this._pushToQueue(this._root,this._settings.basePath)})),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,e){const n={directory:t,base:e};this._queue.push(n,(t=>{null!==t&&this._handleError(t)}))}_worker(t,e){this._scandir(t.directory,this._settings.fsScandirSettings,((n,r)=>{if(null!==n)return e(n,void 0);for(const e of r)this._handleEntry(e,t.base);e(null,void 0)}))}_handleError(t){!this._isDestroyed&&Ch.isFatalError(this._settings,t)&&(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,e){if(this._isDestroyed||this._isFatalError)return;const n=t.path;void 0!==e&&(t.path=Ch.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Ch.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&Ch.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(n,t.path)}_emitEntry(t){this._emitter.emit("entry",t)}}var Lh=Mh;kf.default=Lh;var Fh=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new kf.default(this._root,this._settings),this._storage=new Set}read(t){this._reader.onError((e=>{!function(t,e){t(e)}(t,e)})),this._reader.onEntry((t=>{this._storage.add(t)})),this._reader.onEnd((()=>{!function(t,e){t(null,e)}(t,[...this._storage])})),this._reader.read()}};jf.default=Fh;var Nh={};Object.defineProperty(Nh,"__esModule",{value:!0});const Dh=e;var $h=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new kf.default(this._root,this._settings),this._stream=new Dh.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError((t=>{this._stream.emit("error",t)})),this._reader.onEntry((t=>{this._stream.push(t)})),this._reader.onEnd((()=>{this._stream.push(null)})),this._reader.read(),this._stream}};Nh.default=$h;var Ih={};Object.defineProperty(Ih,"__esModule",{value:!0});var Hh={};Object.defineProperty(Hh,"__esModule",{value:!0});class Bh extends kh.default{constructor(){super(...arguments),this._scandir=Mf.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(t,e){this._queue.add({directory:t,base:e})}_handleQueue(){for(const t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,e){try{const n=this._scandir(t,this._settings.fsScandirSettings);for(const t of n)this._handleEntry(t,e)}catch(t){this._handleError(t)}}_handleError(t){if(Ch.isFatalError(this._settings,t))throw t}_handleEntry(t,e){const n=t.path;void 0!==e&&(t.path=Ch.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Ch.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&Ch.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(n,t.path)}_pushToStorage(t){this._storage.add(t)}}var Gh=Bh;Hh.default=Gh;var Wh=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Hh.default(this._root,this._settings)}read(){return this._reader.read()}};Ih.default=Wh;var qh={};Object.defineProperty(qh,"__esModule",{value:!0});const Uh=u;var Vh=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,1/0),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Uh.sep),this.fsScandirSettings=new Mf.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};qh.default=Vh,Pf=qh.default,Rf.Settings=Pf;var zh=function(t,e,n){if("function"==typeof e)return new jf.default(t,Xh()).read(e);new jf.default(t,Xh(e)).read(n)};Rf.walk=zh;var Kh=function(t,e){const n=Xh(e);return new Ih.default(t,n).read()};Rf.walkSync=Kh;var Qh=function(t,e){const n=Xh(e);return new Nh.default(t,n).read()};function Xh(t={}){return t instanceof qh.default?t:new qh.default(t)}Rf.walkStream=Qh;var Yh={};Object.defineProperty(Yh,"__esModule",{value:!0});const Zh=u;var Jh=class{constructor(t){this._settings=t,this._fsStatSettings=new pf.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return Zh.resolve(this._settings.cwd,t)}_makeEntry(t,e){const n={name:e,path:e,dirent:Ti.fs.createDirentFromStats(e,t)};return this._settings.stats&&(n.stats=t),n}_isFatalError(t){return!Ti.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};Yh.default=Jh;class td extends Yh.default{constructor(){super(...arguments),this._walkStream=Rf.walkStream,this._stat=pf.stat}dynamic(t,e){return this._walkStream(t,e)}static(t,e){const n=t.map(this._getFullEntryPath,this),r=new lf.PassThrough({objectMode:!0});r._write=(i,o,s)=>this._getEntry(n[i],t[i],e).then((t=>{null!==t&&e.entryFilter(t)&&r.push(t),i===n.length-1&&r.end(),s()})).catch(s);for(let t=0;tthis._makeEntry(t,e))).catch((t=>{if(n.errorFilter(t))return null;throw t}))}_getStat(t){return new Promise(((e,n)=>{this._stat(t,this._fsStatSettings,((t,r)=>null===t?e(r):n(t)))}))}}var ed=td;cf.default=ed;var nd={};Object.defineProperty(nd,"__esModule",{value:!0});const rd=u;var id={};Object.defineProperty(id,"__esModule",{value:!0});var od={};Object.defineProperty(od,"__esModule",{value:!0});var sd={};Object.defineProperty(sd,"__esModule",{value:!0});var ad=class{constructor(t,e,n){this._patterns=t,this._settings=e,this._micromatchOptions=n,this._storage=[],this._fillStorage()}_fillStorage(){const t=Ti.pattern.expandPatternsWithBraceExpansion(this._patterns);for(const e of t){const t=this._getPatternSegments(e),n=this._splitSegmentsIntoSections(t);this._storage.push({complete:n.length<=1,pattern:e,segments:t,sections:n})}}_getPatternSegments(t){return Ti.pattern.getPatternParts(t,this._micromatchOptions).map((t=>Ti.pattern.isDynamicPattern(t,this._settings)?{dynamic:!0,pattern:t,patternRe:Ti.pattern.makeRe(t,this._micromatchOptions)}:{dynamic:!1,pattern:t}))}_splitSegmentsIntoSections(t){return Ti.array.splitWhen(t,(t=>t.dynamic&&Ti.pattern.hasGlobStar(t.pattern)))}};sd.default=ad;class ud extends sd.default{match(t){const e=t.split("/"),n=e.length,r=this._storage.filter((t=>!t.complete||t.segments.length>n));for(const t of r){const r=t.sections[0];if(!t.complete&&n>r.length)return!0;if(e.every(((e,n)=>{const r=t.segments[n];return!(!r.dynamic||!r.patternRe.test(e))||!r.dynamic&&r.pattern===e})))return!0}return!1}}var cd=ud;od.default=cd;var ld=class{constructor(t,e){this._settings=t,this._micromatchOptions=e}getFilter(t,e,n){const r=this._getMatcher(e),i=this._getNegativePatternsRe(n);return e=>this._filter(t,e,r,i)}_getMatcher(t){return new od.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){const e=t.filter(Ti.pattern.isAffectDepthOfReadingPattern);return Ti.pattern.convertPatternsToRe(e,this._micromatchOptions)}_filter(t,e,n,r){if(this._isSkippedByDeep(t,e.path))return!1;if(this._isSkippedSymbolicLink(e))return!1;const i=Ti.path.removeLeadingDotSegment(e.path);return!this._isSkippedByPositivePatterns(i,n)&&this._isSkippedByNegativePatterns(i,r)}_isSkippedByDeep(t,e){return this._settings.deep!==1/0&&this._getEntryLevel(t,e)>=this._settings.deep}_getEntryLevel(t,e){const n=e.split("/").length;if(""===t)return n;return n-t.split("/").length}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,e){return!this._settings.baseNameMatch&&!e.match(t)}_isSkippedByNegativePatterns(t,e){return!Ti.pattern.matchAny(t,e)}};id.default=ld;var pd={};Object.defineProperty(pd,"__esModule",{value:!0});var fd=class{constructor(t,e){this._settings=t,this._micromatchOptions=e,this.index=new Map}getFilter(t,e){const n=Ti.pattern.convertPatternsToRe(t,this._micromatchOptions),r=Ti.pattern.convertPatternsToRe(e,this._micromatchOptions);return t=>this._filter(t,n,r)}_filter(t,e,n){if(this._settings.unique&&this._isDuplicateEntry(t))return!1;if(this._onlyFileFilter(t)||this._onlyDirectoryFilter(t))return!1;if(this._isSkippedByAbsoluteNegativePatterns(t.path,n))return!1;const r=this._settings.baseNameMatch?t.name:t.path,i=this._isMatchToPatterns(r,e)&&!this._isMatchToPatterns(t.path,n);return this._settings.unique&&i&&this._createIndexRecord(t),i}_isDuplicateEntry(t){return this.index.has(t.path)}_createIndexRecord(t){this.index.set(t.path,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,e){if(!this._settings.absolute)return!1;const n=Ti.path.makeAbsolute(this._settings.cwd,t);return Ti.pattern.matchAny(n,e)}_isMatchToPatterns(t,e){const n=Ti.path.removeLeadingDotSegment(t);return Ti.pattern.matchAny(n,e)}};pd.default=fd;var hd={};Object.defineProperty(hd,"__esModule",{value:!0});var dd=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return Ti.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};hd.default=dd;var gd={};Object.defineProperty(gd,"__esModule",{value:!0});var yd=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let e=t.path;return this._settings.absolute&&(e=Ti.path.makeAbsolute(this._settings.cwd,e),e=Ti.path.unixify(e)),this._settings.markDirectories&&t.dirent.isDirectory()&&(e+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:e}):e}};gd.default=yd;var vd=class{constructor(t){this._settings=t,this.errorFilter=new hd.default(this._settings),this.entryFilter=new pd.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new id.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new gd.default(this._settings)}_getRootDirectory(t){return rd.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){const e="."===t.base?"":t.base;return{basePath:e,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(e,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};nd.default=vd;class md extends nd.default{constructor(){super(...arguments),this._reader=new cf.default(this._settings)}read(t){const e=this._getRootDirectory(t),n=this._getReaderOptions(t),r=[];return new Promise(((i,o)=>{const s=this.api(e,t,n);s.once("error",o),s.on("data",(t=>r.push(n.transform(t)))),s.once("end",(()=>i(r)))}))}api(t,e,n){return e.dynamic?this._reader.dynamic(t,n):this._reader.static(e.patterns,n)}}var _d=md;uf.default=_d;var bd={};Object.defineProperty(bd,"__esModule",{value:!0});const wd=e;class Sd extends nd.default{constructor(){super(...arguments),this._reader=new cf.default(this._settings)}read(t){const e=this._getRootDirectory(t),n=this._getReaderOptions(t),r=this.api(e,t,n),i=new wd.Readable({objectMode:!0,read:()=>{}});return r.once("error",(t=>i.emit("error",t))).on("data",(t=>i.emit("data",n.transform(t)))).once("end",(()=>i.emit("end"))),i.once("close",(()=>r.destroy())),i}api(t,e,n){return e.dynamic?this._reader.dynamic(t,n):this._reader.static(e.patterns,n)}}var xd=Sd;bd.default=xd;var Ed={};Object.defineProperty(Ed,"__esModule",{value:!0});var Ad={};Object.defineProperty(Ad,"__esModule",{value:!0});class Cd extends Yh.default{constructor(){super(...arguments),this._walkSync=Rf.walkSync,this._statSync=pf.statSync}dynamic(t,e){return this._walkSync(t,e)}static(t,e){const n=[];for(const r of t){const t=this._getFullEntryPath(r),i=this._getEntry(t,r,e);null!==i&&e.entryFilter(i)&&n.push(i)}return n}_getEntry(t,e,n){try{const n=this._getStat(t);return this._makeEntry(n,e)}catch(t){if(n.errorFilter(t))return null;throw t}}_getStat(t){return this._statSync(t,this._fsStatSettings)}}var Od=Cd;Ad.default=Od;class Rd extends nd.default{constructor(){super(...arguments),this._reader=new Ad.default(this._settings)}read(t){const e=this._getRootDirectory(t),n=this._getReaderOptions(t);return this.api(e,t,n).map(n.transform)}api(t,e,n){return e.dynamic?this._reader.dynamic(t,n):this._reader.static(e.patterns,n)}}var Pd=Rd;Ed.default=Pd;var jd={};Object.defineProperty(jd,"__esModule",{value:!0});var kd=void 0;jd.DEFAULT_FILE_SYSTEM_ADAPTER=kd;const Td=r,Md=n,Ld=Math.max(Md.cpus().length,1);kd={lstat:Td.lstat,lstatSync:Td.lstatSync,stat:Td.stat,statSync:Td.statSync,readdir:Td.readdir,readdirSync:Td.readdirSync},jd.DEFAULT_FILE_SYSTEM_ADAPTER=kd;var Fd,Nd=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Ld),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(t,e){return void 0===t?e:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},jd.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};async function Dd(t,e){Id(t);const n=$d(t,uf.default,e),r=await Promise.all(n);return Ti.array.flatten(r)}function $d(t,e,n){const r=[].concat(t),i=new jd.default(n),o=ji.generate(r,i),s=new e(i);return o.map(s.read,s)}function Id(t){if(![].concat(t).every((t=>Ti.string.isString(t)&&!Ti.string.isEmpty(t))))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}jd.default=Nd,(Fd=Dd||(Dd={})).sync=function(t,e){Id(t);const n=$d(t,Ed.default,e);return Ti.array.flatten(n)},Fd.stream=function(t,e){Id(t);const n=$d(t,bd.default,e);return Ti.stream.merge(n)},Fd.generateTasks=function(t,e){Id(t);const n=[].concat(t),r=new jd.default(e);return ji.generate(n,r)},Fd.isDynamicPattern=function(t,e){Id(t);const n=new jd.default(e);return Ti.pattern.isDynamicPattern(t,n)},Fd.escapePath=function(t){return Id(t),Ti.path.escape(t)};var Hd=Bd(Dd);function Bd(t){return t&&t.__esModule?t:{default:t}}class Gd extends gr.EventEmitter{constructor(){super();const t=this.rebuildCache.bind(this);this._projectChangeWatcher=atom.project.onDidChangePaths(t);const e=this._onDidChangeFiles.bind(this);this._projectWatcher=atom.project.onDidChangeFiles(e),this._repositories=[],this._filePathsByProjectDirectory=new Map,this._filePathsByDirectory=new Map,this._fileWatchersByDirectory=new Map,this.updateConfig()}updateConfig(){this.config={excludeVcsIgnoredPaths:atom.config.get("core.excludeVcsIgnoredPaths"),ignoreSubmodules:atom.config.get("autocomplete-paths.ignoreSubmodules"),shouldIgnoredNames:atom.config.get("autocomplete-paths.ignoredNames"),ignoredNames:atom.config.get("core.ignoredNames"),ignoredPatterns:atom.config.get("autocomplete-paths.ignoredPatterns"),maxFileCount:atom.config.get("autocomplete-paths.maxFileCount")}}async rebuildCache(){this.dispose(),this._cancelled=!1,this.emit("rebuild-cache");try{return await this._buildInitialCacheWithGlob()}catch(t){return console.error(t),await this._buildInitialCacheWithAtom()}}getFilePathsForProjectDirectory(t,e=null){let n=this._filePathsByProjectDirectory.get(t.path)||[];return e?n.filter((t=>0===t.indexOf(e))):n}dispose(t){this._fileWatchersByDirectory.forEach((t=>{t.dispose()})),this._fileWatchersByDirectory=new Map,this._filePathsByProjectDirectory=new Map,this._filePathsByDirectory=new Map,this._repositories=[],this._projectWatcher&&(this._projectWatcher.dispose(),this._projectWatcher=null),t&&this._projectChangeWatcher&&(this._projectChangeWatcher.dispose(),this._projectChangeWatcher=null)}_isPathIgnored(t){let e=!1;return this.config.excludeVcsIgnoredPaths&&this._repositories.forEach((n=>{if(e)return;const r=this.config.ignoreSubmodules&&n.isSubmodule(t);(n.isPathIgnored(t)||r)&&(e=!0)})),this.config.shouldIgnoredNames&&this.config.ignoredNames.forEach((n=>{e||(e=e||(0,Vr.default)(t,n,{matchBase:!0,dot:!0}))})),this.config.ignoredPatterns&&this.config.ignoredPatterns.forEach((n=>{e||(e=e||(0,Vr.default)(t,n,{dot:!0}))})),e}async _cacheProjectPathsAndRepositories(){this._projectDirectories=atom.project.getDirectories();const t=this._projectDirectories.length;let e=new Array(t);for(let n=0;nnull!==t))}_onDirectoryChanged(t,e){this._removeFilePathsForDirectory(t,e),this._cleanWatchersForDirectory(e),this._populateCacheWithGlob(e.path).catch((n=>{console.error(n),this._populateCacheWithAtom(t,e)}))}_cleanWatchersForDirectory(t){this._fileWatchersByDirectory.forEach(((e,n)=>{t.contains(n.path)&&(e.dispose(),this._fileWatchersByDirectory.delete(n))}))}_removeFilePathsForDirectory(t,e){let n=this._filePathsByProjectDirectory.get(t.path);n&&(n=n.filter((t=>!e.contains(t))),this._filePathsByProjectDirectory.set(t.path,n),this._filePathsByDirectory.delete(e.path))}_getDirectoryEntries(t){return new Promise(((e,n)=>{t.getEntries(((t,r)=>{if(t)return n(t);e(r)}))}))}_onDidChangeFiles(t){t.filter((t=>"modified"!==t.action)).forEach((t=>{if(!this._projectDirectories)return;const{action:e,path:n,oldPath:r}=t,i=this._projectDirectories.find((t=>0===n.indexOf(t.path)));if(!i)return;const o=i.path;if(this._isPathIgnored(n))return;const s=this._filePathsByProjectDirectory.get(o)||[];switch(e){case"created":s.push(n);break;case"deleted":{const t=s.indexOf(n);t>-1&&s.splice(t,1);break}case"renamed":{const t=s.indexOf(r);t>-1&&(s[t]=n);break}}this._filePathsByProjectDirectory.has(o)||this._filePathsByProjectDirectory.set(o,s)}))}async _buildInitialCacheWithGlob(){await this._cacheProjectPathsAndRepositories();const t=await Promise.all(this._projectDirectories.map((t=>this._populateCacheWithGlob(t.path))));return this.emit("rebuild-cache-done"),t}async _getIgnoredPatternsGlob(t){const e=[];this.config.shouldIgnoredNames&&e.push(...this.config.ignoredNames),this.config.ignoredPatterns&&e.push(...this.config.ignoredPatterns);const n=e.length;let r=new Array(n);for(let i=0;ithis._populateCacheWithAtom(t,t))));return this.emit("rebuild-cache-done"),t}async _populateCacheWithAtom(t,e){if(this._cancelled)return[];if("win32"!==process.platform){let n=this._fileWatchersByDirectory.get(e);n||(n=e.onDidChange((()=>this._onDirectoryChanged(t,e))),this._fileWatchersByDirectory.set(e,n))}const n=await this._getDirectoryEntries(e);if(this._cancelled)return[];let r=[],i=[];for(let t=0,e=n.length;tthis.config.maxFileCount&&!this._cancelled?(atom.notifications.addError("autocomplete-paths",{description:`Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,dismissable:!0}),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),this._cancelled=!0,void this.emit("rebuild-cache-done")):(this._filePathsByProjectDirectory.set(t.path,(0,Kr.union)(o,r)),o=this._filePathsByDirectory.get(e.path)||[],this._filePathsByDirectory.set(e.path,(0,Kr.union)(o,r)),Promise.all(i.map((e=>this._populateCacheWithAtom(t,e)))))}}hr=Gd,fr.default=hr;var Wd=Xd(fr=fr.default),qd=t,Ud={};Object.defineProperty(Ud,"__esModule",{value:!0});var Vd=void 0;Ud.DefaultScopes=Vd;const zd=["import\\s+.*?from\\s+['\"]","import\\s+['\"]","require\\(['\"]","define\\(\\[?['\"]"],Kd=["js","jsx","ts","tsx","coffee","json"],Qd=[["\\.jsx?$",""],["\\.ts$",""],["\\.coffee$",""]];function Xd(t){return t&&t.__esModule?t:{default:t}}Vd=[{scopes:["source.js","source.js.jsx","source.coffee","source.coffee.jsx","source.ts","source.tsx","javascript","source.flow"],prefixes:zd,extensions:Kd,relative:!0,replaceOnInsert:[["([\\/]?index)?\\.jsx?$",""],["([\\/]?index)?\\.ts$",""],["([\\/]?index)?\\.coffee$",""]]},{scopes:["text.html.vue"],prefixes:zd,extensions:Kd.concat("vue"),relative:!0,replaceOnInsert:Qd},{scopes:["text.html.vue"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["css","sass","scss","less","styl"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.coffee","source.coffee.jsx"],prefixes:["require\\s+['\"]","define\\s+\\[?['\"]"],extensions:Kd,relative:!0,replaceOnInsert:Qd},{scopes:["source.php"],prefixes:["require_once\\(['\"]","include\\(['\"]"],extensions:["php"],relative:!0},{scopes:["source.sass","source.css.scss","source.css.less","source.stylus"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["sass","scss","css"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.css"],prefixes:["@import\\s+['\"]?","@import\\s+url\\(['\"]?"],extensions:["css"],relative:!0},{scopes:["source.css","source.sass","source.css.less","source.css.scss","source.stylus"],prefixes:["url\\(['\"]?"],extensions:["png","gif","jpeg","jpg","woff","woff2","ttf","svg","otf"],relative:!0},{scopes:["source.c","source.cpp"],prefixes:["^\\s*#include\\s+['\"]"],extensions:["h","hpp"],relative:!0,includeCurrentDirectory:!1},{scopes:["source.lua"],prefixes:["require[\\s+|\\(]['\"]"],extensions:["lua"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.lua$",""]]},{scopes:["source.ruby"],prefixes:["^\\s*require[\\s+|\\(]['\"]"],extensions:["rb"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\.rb$",""]]},{scopes:["source.python"],prefixes:["^\\s*from\\s+","^\\s*import\\s+"],extensions:["py"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.py$",""]]}],Ud.DefaultScopes=Vd;class Yd extends A.EventEmitter{constructor(){super(),this.reloadScopes(),this._pathsCache=new Wd.default,this._isReady=!1,this._onRebuildCache=this._onRebuildCache.bind(this),this._onRebuildCacheDone=this._onRebuildCacheDone.bind(this),this._pathsCache.on("rebuild-cache",this._onRebuildCache),this._pathsCache.on("rebuild-cache-done",this._onRebuildCacheDone)}reloadScopes(){for(var t in this._scopes=atom.config.get("autocomplete-paths.scopes").slice(0)||[],atom.config.get("autocomplete-paths.ignoreBuiltinScopes")||(this._scopes=this._scopes.concat(Ud.DefaultScopes)),m.OptionScopes)atom.config.get(`autocomplete-paths.${t}`)&&(this._scopes=this._scopes.slice(0).concat(m.OptionScopes[t]))}_onRebuildCache(){this.emit("rebuild-cache")}_onRebuildCacheDone(){this.emit("rebuild-cache-done")}_scopeMatchesRequest(t,e){const n=Array.isArray(t.scopes)?t.scopes:[t.scopes];if(!(tr(e.scopeDescriptor.getScopesArray(),n).length>0))return!1;const r=this._getLineTextForRequest(e);let i=null;return(Array.isArray(t.prefixes)?t.prefixes:[t.prefixes]).forEach((t=>{const e=new RegExp(t,"i");i=i||r.match(e)})),i}_getLineTextForRequest(t){const{editor:e,bufferPosition:n}=t;return e.getTextInRange([[n.row,0],n])}_getSuggestionsForScope(t,e,n){const r=this._getLineTextForRequest(e).substr(n.index+n[0].length),i=r.match(/[/\\|]$/),o=0===r.indexOf("./")||0===r.indexOf("../"),s=C.default.parse(r);i&&(s.dir=C.default.join(s.dir,s.base),s.base="",s.name="");const a=this._getProjectDirectory(e.editor);if(!a)return Promise.resolve([]);const u=C.default.dirname(e.editor.getPath()),c=C.default.resolve(u,s.dir);let l=o?this._pathsCache.getFilePathsForProjectDirectory(a,c):this._pathsCache.getFilePathsForProjectDirectory(a);const p=o?s.base:r,{extensions:f}=t;if(f){const t=new RegExp(`.(${f.join("|")})$`);l=l.filter((e=>t.test(e)))}p&&(l=(0,qd.filter)(l,p,{maxResults:10}));let h=l.map((n=>{const i=atom.config.get("autocomplete-paths.normalizeSlashes"),s=atom.project.relativizePath(n)[1];let a=s;o&&(a=C.default.relative(c,n)),i&&(a=(0,pr.default)(a));let u=C.default.relative(C.default.dirname(e.editor.getPath()),n);i&&(u=(0,pr.default)(u)),!1!==t.relative&&(n=u,!1!==t.includeCurrentDirectory&&"."!==n[0]&&(n=`./${n}`)),t.projectRelativePath&&(n=(0,pr.default)(s)),t.replaceOnInsert&&t.replaceOnInsert.forEach((([t,e])=>{const r=new RegExp(t);r.test(n)&&(n=n.replace(r,e))}));const l=u.split(C.default.sep).length;return{text:n,replacementPrefix:r,displayText:a,type:"import",iconHTML:'',score:(0,qd.score)(a,e.prefix),distanceToFile:l}}));const d=h.length;if(h.length){const t=Rn(h,(t=>t.distanceToFile)).distanceToFile;h.forEach(((e,n)=>{e.score=d-n+(t-e.distanceToFile)})),h.sort(((t,e)=>e.score-t.score))}return Promise.resolve(h)}async getSuggestions(t){const e=this._scopes.map((e=>[e,this._scopeMatchesRequest(e,t)])).filter((t=>t[1])).map((([e,n])=>this._getSuggestionsForScope(e,t,n))),n=Qn(await Promise.all(e));return!!n.length&&n}async rebuildCache(){const t=await this._pathsCache.rebuildCache();return this._isReady=!0,t}_getProjectDirectory(t){const e=t.getBuffer().getPath();let n=null;return atom.project.getDirectories().forEach((t=>{t.contains(e)&&(n=t)})),n}isReady(){return this._isReady}get suggestionPriority(){return atom.config.get("autocomplete-paths.suggestionPriority")}get fileCount(){return atom.project.getDirectories().reduce(((t,e)=>t+this._pathsCache.getFilePathsForProjectDirectory(e).length),0)}dispose(){this._pathsCache.removeListener("rebuild-cache",this._onRebuildCache),this._pathsCache.removeListener("rebuild-cache-done",this._onRebuildCacheDone),this._pathsCache.dispose(!0)}}x=Yd,S.default=x,Yd.prototype.selector="*",Yd.prototype.inclusionPriority=1,S=S.default;var Zd,Jd=(Zd=S)&&Zd.__esModule?Zd:{default:Zd};let tg,eg,ng,rg,ig,og,sg=new a.CompositeDisposable;function ag(){eg?rg||(ig=document.createElement("autocomplete-paths-status-bar"),ig.innerHTML="Rebuilding paths cache...",rg=eg.addRightTile({item:ig,priority:100}),(tg||(ug(),tg))&&(ng=setInterval((()=>{const t=tg.fileCount;t>0&&(ig.innerHTML=`Rebuilding paths cache... ${t} files`)}),500))):og=!0}function ug(){return tg||(tg=new Jd.default,tg.on("rebuild-cache",(()=>{ag()})),tg.on("rebuild-cache-done",(()=>{ng&&clearInterval(ng),rg&&rg.destroy(),rg=null,ig=null})),tg.rebuildCache()),tg} +var t=require("zadeh"),e=require("stream"),r=require("os"),n=require("fs"),i=require("buffer"),s=require("util"),o=require("child_process"),a=require("atom"),c=require("path"),u=require("events");function l(t,e,r){Object.defineProperty(t,e,{get:r,enumerable:!0})}function h(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};Object.defineProperty(exports,"__esModule",{value:!0});var p=function(){Xf.add(atom.commands.add("atom-workspace",{"autocomplete-paths:rebuild-cache":()=>{Zf.rebuildCache()}}));["core.ignoredNames","core.excludeVcsIgnoredPaths","autocomplete-paths.ignoreSubmodules","autocomplete-paths.ignoredNames","autocomplete-paths.ignoredPatterns","autocomplete-paths.maxFileCount"].forEach((t=>{Xf.add(atom.config.observe(t,(()=>{Zf&&(Zf._pathsCache.updateConfig(),Zf.rebuildCache())})))}));const t=["autocomplete-paths.scopes"];for(const e in v.OptionScopes)t.push(`autocomplete-paths.${e}`);t.forEach((t=>{Xf.add(atom.config.observe(t,(()=>{Zf&&Zf.reloadScopes()})))}))};exports.activate=p;var d=function(){tp&&clearInterval(tp);Xf.dispose(),Zf&&(Zf.dispose(!0),Zf=null);ep&&(ep.destroy(),ep=null)};exports.deactivate=d;var g=function(t){Jf=t,np&&ip()};exports.consumeStatusBar=g;var _=sp;exports.getProvider=_,Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return y.config}});var y={};Object.defineProperty(y,"__esModule",{value:!0});var m=void 0;y.config=m;var v={};Object.defineProperty(v,"__esModule",{value:!0});var b=void 0;v.OptionScopes=b;b={enableHtmlSupport:[{scopes:["text.html.basic"],prefixes:["src=['\"]","href=['\"]","name=['\"]"],extensions:["js","png","gif","jpeg","jpg","tiff","html","json","svg"],relative:!0}]},v.OptionScopes=b;const w={normalizeSlashes:{type:"boolean",description:"Replaces backward slashes with forward slashes on windows (if possible)",default:!0},maxFileCount:{type:"number",description:"The maximum amount of files to be handled",default:2e3},suggestionPriority:{type:"number",description:"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.",default:2},ignoredNames:{type:"boolean",default:!0,description:"Ignore items matched by the `Ignore Names` core option."},ignoreSubmodules:{type:"boolean",default:!1,description:"Ignore submodule directories."},ignoredPatterns:{type:"array",default:[],items:{type:"string"},description:"Ignore additional **glob** or file path patterns."},ignoreBuiltinScopes:{type:"boolean",default:!1,description:"Ignore built-in scopes and use only scopes from user configuration."},scopes:{type:"array",default:[],items:{type:"object",properties:{scopes:{type:["array"],items:{type:"string"}},prefixes:{type:["array"],items:{type:"string"}},extensions:{type:["array"],items:{type:"string"}},relative:{type:"boolean",default:!0},replaceOnInsert:{type:"array",items:{type:"array",items:{type:["string","string"]}}}}}}};m=w,y.config=m;const E=Object.keys(v.OptionScopes);for(let t=0,e=E.length;t=0&&r<=K}}function Rt(t){return function(e){return null==e?void 0:e[t]}}var Pt=Rt("byteLength"),xt=At(Pt),Ct=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Ot=H?function(t){return G?G(t)&&!_t(t):xt(t)&&Ct.test(L.call(t))}:St(!1),kt=Rt("length");function Dt(t,e){e=function(t){for(var e={},r=t.length,n=0;n":">",'"':""","'":"'","`":"`"},ke=Ce(Oe),De=Ce(te(Oe)),Te=Mt.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},je=/(.)^/,Fe={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Me=/\\|'|\r|\n|\u2028|\u2029/g;function Le(t){return"\\"+Fe[t]}var Ie=/^\s*(\w|\$)+\s*$/;function He(t,e,r){!e&&r&&(e=r),e=se({},e,Mt.templateSettings);var n=RegExp([(e.escape||je).source,(e.interpolate||je).source,(e.evaluate||je).source].join("|")+"|$","g"),i=0,s="__p+='";t.replace(n,(function(e,r,n,o,a){return s+=t.slice(i,a).replace(Me,Le),i=a+e.length,r?s+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":n?s+="'+\n((__t=("+n+"))==null?'':__t)+\n'":o&&(s+="';\n"+o+"\n__p+='"),e})),s+="';\n";var o,a=e.variable;if(a){if(!Ie.test(a))throw new Error("variable is not a bare identifier: "+a)}else s="with(obj||{}){\n"+s+"}\n",a="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{o=new Function(a,"_",s)}catch(t){throw t.source=s,t}var c=function(t){return o.call(this,t,Mt)};return c.source="function("+a+"){\n"+s+"}",c}function $e(t,e,r){var n=(e=he(e)).length;if(!n)return ht(r)?r.call(t):r;for(var i=0;i1)ze(a,e-1,r,n),i=n.length;else for(var c=0,u=a.length;ce?(n&&(clearTimeout(n),n=null),a=u,o=t.apply(i,s),n||(i=s=null)):n||!1===r.trailing||(n=setTimeout(c,l)),o};return u.cancel=function(){clearTimeout(n),a=0,n=i=s=null},u}function Je(t,e,r){var n,i,s,o,a,c=function(){var u=xe()-i;e>u?n=setTimeout(c,e-u):(n=null,r||(o=t.apply(a,s)),n||(s=a=null))},u=Q((function(u){return a=this,s=u,i=xe(),n||(n=setTimeout(c,e),r&&(o=t.apply(a,s))),o}));return u.cancel=function(){clearTimeout(n),n=s=a=null},u}function tr(t,e){return Ue(e,t)}function er(t){return function(){return!t.apply(this,arguments)}}function rr(){var t=arguments,e=t.length-1;return function(){for(var r=e,n=t[e].apply(this,arguments);r--;)n=t[r].call(this,n);return n}}function nr(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function ir(t,e){var r;return function(){return--t>0&&(r=e.apply(this,arguments)),t<=1&&(e=null),r}}var sr=Ue(ir,2);function or(t,e,r){e=we(e,r);for(var n,i=Tt(t),s=0,o=i.length;s0?0:i-1;s>=0&&s0?o=s>=0?s:Math.max(s+a,o):a=s>=0?Math.min(s+1,a):s+a+1;else if(r&&s&&a)return n[s=r(n,i)]===i?s:-1;if(i!=i)return(s=e(M.call(n,o,a),Et))>=0?s+o:-1;for(s=t>0?o:a-1;s>=0&&s0?0:o-1;for(i||(n=e[s?s[a]:a],a+=t);a>=0&&a=3;return e(t,me(r,i,4),n,s)}}var vr=mr(1),br=mr(-1);function wr(t,e,r){var n=[];return e=we(e,r),_r(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}function Er(t,e,r){return wr(t,er(we(e)),r)}function Sr(t,e,r){e=we(e,r);for(var n=!qe(t)&&Tt(t),i=(n||t).length,s=0;s=0}var Pr=Q((function(t,e,r){var n,i;return ht(e)?i=e:(e=he(e),n=e.slice(0,-1),e=e[e.length-1]),yr(t,(function(t){var s=i;if(!s){if(n&&n.length&&(t=fe(t,n)),null==t)return;s=t[e]}return null==s?s:s.apply(t,r)}))}));function xr(t,e){return yr(t,ye(e))}function Cr(t,e){return wr(t,_e(e))}function Or(t,e,r){var n,i,s=-1/0,o=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;as&&(s=n);else e=we(e,r),_r(t,(function(t,r,n){((i=e(t,r,n))>o||i===-1/0&&s===-1/0)&&(s=t,o=i)}));return s}function kr(t,e,r){var n,i,s=1/0,o=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=qe(t)?t:Zt(t)).length;an||void 0===r)return 1;if(r1&&(n=me(n,e[1])),e=Nt(t)):(n=Wr,e=ze(e,!1,!1),t=Object(t));for(var i=0,s=e.length;i1&&(r=e[1])):(e=yr(ze(e,!1,!1),String),n=function(t,r){return!Rr(e,r)}),Gr(t,n,r)}));function Vr(t,e,r){return M.call(t,0,Math.max(0,t.length-(null==e||r?1:e)))}function qr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[0]:Vr(t,t.length-e)}function zr(t,e,r){return M.call(t,null==e||r?1:e)}function Kr(t,e,r){return null==t||t.length<1?null==e||r?void 0:[]:null==e||r?t[t.length-1]:zr(t,Math.max(0,t.length-e))}function Qr(t){return wr(t,Boolean)}function Yr(t,e){return ze(t,e,!1)}var Xr=Q((function(t,e){return e=ze(e,!0,!0),wr(t,(function(t){return!Rr(e,t)}))})),Zr=Q((function(t,e){return Xr(t,e)}));function Jr(t,e,r,n){J(e)||(n=r,r=e,e=!1),null!=r&&(r=we(r,n));for(var i=[],s=[],o=0,a=kt(t);o{const e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")})),dn={};Object.defineProperty(dn,"__esModule",{value:!0});var gn=void 0;dn.default=gn;var _n,yn=u;_n=Un,Un.Minimatch=Vn;var mn={sep:"/"};try{mn=h("path")}catch(t){}var vn,bn=Un.GLOBSTAR=Vn.GLOBSTAR={},wn={};vn=function(t,e){for(var r=[],n=0;n=0&&u>0){if(t===e)return[c,u];for(n=[],s=r.length;l>=0&&!a;)l==c?(n.push(l),c=r.indexOf(t,l+1)):1==n.length?a=[n.pop(),u]:((i=n.pop())=0?c:u;n.length&&(a=[s,o])}return a}Sn=An,An.range=Pn,wn=function(t){if(!t)return[];"{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2));return $n(function(t){return t.split("\\\\").join(xn).split("\\{").join(Cn).split("\\}").join(On).split("\\,").join(kn).split("\\.").join(Dn)}(t),!0).map(jn)};var xn="\0SLASH"+Math.random()+"\0",Cn="\0OPEN"+Math.random()+"\0",On="\0CLOSE"+Math.random()+"\0",kn="\0COMMA"+Math.random()+"\0",Dn="\0PERIOD"+Math.random()+"\0";function Tn(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function jn(t){return t.split(xn).join("\\").split(Cn).join("{").split(On).join("}").split(kn).join(",").split(Dn).join(".")}function Fn(t){if(!t)return[""];var e=[],r=Sn("{","}",t);if(!r)return t.split(",");var n=r.pre,i=r.body,s=r.post,o=n.split(",");o[o.length-1]+="{"+i+"}";var a=Fn(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function Mn(t){return"{"+t+"}"}function Ln(t){return/^-?0\d/.test(t)}function In(t,e){return t<=e}function Hn(t,e){return t>=e}function $n(t,e){var r=[],n=Sn("{","}",t);if(!n||/\$$/.test(n.pre))return[t];var i,s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),a=s||o,c=n.body.indexOf(",")>=0;if(!a&&!c)return n.post.match(/,.*\}/)?$n(t=n.pre+"{"+n.body+On+n.post):[t];if(a)i=n.body.split(/\.\./);else if(1===(i=Fn(n.body)).length&&1===(i=$n(i[0],!1).map(Mn)).length)return(h=n.post.length?$n(n.post,!1):[""]).map((function(t){return n.pre+i[0]+t}));var u,l=n.pre,h=n.post.length?$n(n.post,!1):[""];if(a){var f=Tn(i[0]),p=Tn(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(Tn(i[2])):1,_=In;p0){var w=new Array(b+1).join("0");v=m<0?"-"+w+v.slice(1):w+v}}u.push(v)}}else u=vn(i,(function(t){return $n(t,!1)}));for(var E=0;E65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===t)return bn;if(""===t)return"";var n,i="",s=!!r.nocase,o=!1,a=[],c=[],u=!1,l=-1,h=-1,f="."===t.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function d(){if(n){switch(n){case"*":i+="[^/]*?",s=!0;break;case"?":i+="[^/]",s=!0;break;default:i+="\\"+n}p.debug("clearStateChar %j %j",n,i),n=!1}}for(var g,_=0,y=t.length;_-1;A--){var R=c[A],P=i.slice(0,R.reStart),x=i.slice(R.reStart,R.reEnd-8),C=i.slice(R.reEnd-8,R.reEnd),O=i.slice(R.reEnd);C+=O;var k=P.split("(").length-1,D=O;for(_=0;_=0&&!(n=t[i]);i--);for(i=0;i>> no match, partial?",t,h,e,f),h!==o))}if("string"==typeof u?(c=n.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===o&&s===a)return!0;if(i===o)return r;if(s===a)return i===o-1&&""===t[i];throw new Error("wtf?")};var Kn=Lf(_n),Qn=a,Yn={};Object.defineProperty(Yn,"__esModule",{value:!0});var Xn=ii;Yn.merge=Xn;var Zn=si;Yn.unique=Zn;var Jn=function(t,e){return ii(t,e),si(t)};Yn.union=Jn;var ti=(ni=void 0,Yn.exec=ni);Yn.MAX_STRING_LENGTH=ti;var ei=o,ri=i;var ni=(0,s.promisify)(ei.exec);Yn.exec=ni;function ii(t,e){e.length&&Array.prototype.push.apply(t,e)}function si(t){return[...new Set(t)]}ti=ri.constants.MAX_STRING_LENGTH,Yn.MAX_STRING_LENGTH=ti;var oi={};Object.defineProperty(oi,"__esModule",{value:!0});var ai=Si;oi.posixifyPath=ai;var ci=Ai;oi.posixifyPathNormalized=ci;var ui=function(t,e=process.cwd()){return Pi(Si(t),e)};oi.globifyPath=ui;var li=function(t){return`${Ai(t)}/**`};oi.globifyDirectory=li;var hi=async function(t){return Ri(await wi(_i.default.join(t,".gitignore"),"utf-8"),t)};oi.globifyGitIgnoreFile=hi;var fi=Ri;oi.globifyGitIgnore=fi;var pi,di,gi,_i=bi(c),yi=n; +/*! + * is-extglob + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +gi=function(t){return"string"==typeof t&&/[@?!+*]\(/.test(t)},di=function(t){return"string"==typeof t&&(/[*!?{}(|)[\]]/.test(t)||gi(t))};var mi=/[‘“!#$%&+^<=>`]/;pi=function(t){return"string"!=typeof t||di(t)||mi.test(t)};var vi=bi((function(t){return!1===pi(t)}));function bi(t){return t&&t.__esModule?t:{default:t}}const{readFile:wi,stat:Ei}=yi.promises;function Si(t){return _i.default.normalize(t).replace(/\\/g,"/")}function Ai(t){return Si(t).replace(/\/$/,"")}async function Ri(t,e){const r=t.split("\n").filter((t=>{return!(/^\s*$/.test(t)||(e=t,"#"===e[0]));var e})).map((t=>function(t){return t.replace(/^\s+/,"")}(function(t){return/\\\s+$/.test(t)?t.replace(/\\(\s+)$/,"$1"):t.replace(/\s+$/,"")}(t)))),n=r.length,i=new Array(n);for(let t=0;t[].concat(t,e)),[])};ji.flatten=Mi,Fi=function(t,e){const r=[[]];let n=0;for(const i of t)e(i)?(n++,r[n]=[]):r[n].push(i);return r},ji.splitWhen=Fi;var Li=ji;Di.array=ji;var Ii={};Object.defineProperty(Ii,"__esModule",{value:!0});var Hi=void 0;Ii.isEnoentCodeError=Hi,Hi=function(t){return"ENOENT"===t.code},Ii.isEnoentCodeError=Hi;var $i=Ii;Di.errno=Ii;var Ni={};Object.defineProperty(Ni,"__esModule",{value:!0});var Bi=void 0;Ni.createDirentFromStats=Bi;class Wi{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Bi=function(t,e){return new Wi(t,e)},Ni.createDirentFromStats=Bi;var Gi=Ni;Di.fs=Ni;var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0});var Vi=(Ki=void 0,Qi=Ui.unixify=Ki,Yi=Ui.makeAbsolute=Qi,Ui.escape=Yi);Ui.removeLeadingDotSegment=Vi;const qi=c,zi=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;var Ki=function(t){return t.replace(/\\/g,"/")};Ui.unixify=Ki;var Qi=function(t,e){return qi.resolve(t,e)};Ui.makeAbsolute=Qi;var Yi=function(t){return t.replace(zi,"\\$2")};Ui.escape=Yi,Vi=function(t){if("."===t.charAt(0)){const e=t.charAt(1);if("/"===e||"\\"===e)return t.slice(2)}return t},Ui.removeLeadingDotSegment=Vi;var Xi=Ui;Di.path=Ui;var Zi={};Object.defineProperty(Zi,"__esModule",{value:!0});var Ji=(ma=void 0,ba=Zi.isStaticPattern=ma,wa=Zi.isDynamicPattern=ba,Ea=Zi.convertToPositivePattern=wa,Aa=Zi.convertToNegativePattern=Ea,Pa=Zi.isNegativePattern=Aa,xa=Zi.isPositivePattern=Pa,Ca=Zi.getNegativePatterns=xa,Oa=Zi.getPositivePatterns=Ca,ka=Zi.getBaseDirectory=Oa,Ta=Zi.hasGlobStar=ka,ja=Zi.endsWithSlashGlobStar=Ta,Fa=Zi.isAffectDepthOfReadingPattern=ja,La=Zi.expandPatternsWithBraceExpansion=Fa,Ia=Zi.expandBraceExpansion=La,$a=Zi.getPatternParts=Ia,Na=Zi.makeRe=$a,Zi.convertPatternsToRe=Na);Zi.matchAny=Ji;const ts=c;var es,rs,ns; +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +ns=function(t){if("string"!=typeof t||""===t)return!1;for(var e;e=/(\\).|([@?!+*]\(.*\))/g.exec(t);){if(e[2])return!0;t=t.slice(e.index+e[0].length)}return!1};var is={"{":"}","(":")","[":"]"},ss=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,os=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;rs=function(t,e){if("string"!=typeof t||""===t)return!1;if(ns(t))return!0;var r,n=ss;for(e&&!1===e.strict&&(n=os);r=n.exec(t);){if(r[2])return!0;var i=r.index+r[0].length,s=r[1],o=s?is[s]:null;if(s&&o){var a=t.indexOf(o,i);-1!==a&&(i=a+1)}t=t.slice(i)}return!1};var as=c.posix.dirname,cs="win32"===r.platform(),us=/\\/g,ls=/[\{\[].*[\}\]]$/,hs=/(^|[^\\])([\{\[]|\([^\)]+$)/,fs=/\\([\!\*\?\|\[\]\(\)\{\}])/g;es=function(t,e){Object.assign({flipBackslashes:!0},e).flipBackslashes&&cs&&t.indexOf("/")<0&&(t=t.replace(us,"/")),ls.test(t)&&(t+="/"),t+="a";do{t=as(t)}while(rs(t)||hs.test(t));return t.replace(fs,"$1")};var ps={};const ds=s;var gs,_s={},ys=t=>"number"==typeof t?Number.isInteger(t):"string"==typeof t&&""!==t.trim()&&Number.isInteger(Number(t)),ms=t=>"brace"===t.type&&(!(!0!==t.invalid&&!t.dollar)||(t.commas>>0+t.ranges>>0==0||!0!==t.open||!0!==t.close)&&(t.invalid=!0,!0)),vs=t=>t.reduce(((t,e)=>("text"===e.type&&t.push(e.value),"range"===e.type&&(e.type="text"),t)),[]),bs=(...t)=>{const e=[],r=t=>{for(let n=0;n{let r=(t,n={})=>{let i=e.escapeInvalid&&ms(n),s=!0===t.invalid&&!0===e.escapeInvalid,o="";if(t.value)return(i||s)&&(t=>"open"===t.type||"close"===t.type||!0===t.open||!0===t.close)(t)?"\\"+t.value:t.value;if(t.value)return t.value;if(t.nodes)for(let e of t.nodes)o+=r(e);return o};return r(t)};var ws={},Es={};const Ss=s;var As,Rs={};As=function(t){return"number"==typeof t?t-t==0:"string"==typeof t&&""!==t.trim()&&(Number.isFinite?Number.isFinite(+t):isFinite(+t))};const Ps=(t,e,r)=>{if(!1===As(t))throw new TypeError("toRegexRange: expected the first argument to be a number");if(void 0===e||t===e)return String(t);if(!1===As(e))throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};"boolean"==typeof n.strictZeros&&(n.relaxZeros=!1===n.strictZeros);let i=t+":"+e+"="+String(n.relaxZeros)+String(n.shorthand)+String(n.capture)+String(n.wrap);if(Ps.cache.hasOwnProperty(i))return Ps.cache[i].result;let s=Math.min(t,e),o=Math.max(t,e);if(1===Math.abs(s-o)){let r=t+"|"+e;return n.capture?`(${r})`:!1===n.wrap?r:`(?:${r})`}let a=Ls(t)||Ls(e),c={min:t,max:e,a:s,b:o},u=[],l=[];if(a&&(c.isPadded=a,c.maxLen=String(c.max).length),s<0){l=Cs(o<0?Math.abs(o):1,Math.abs(s),c,n),s=c.a=0}return o>=0&&(u=Cs(s,o,c,n)),c.negatives=l,c.positives=u,c.result=function(t,e,r){let n=Os(t,e,"-",!1,r)||[],i=Os(e,t,"",!1,r)||[],s=Os(t,e,"-?",!0,r)||[];return n.concat(s).concat(i).join("|")}(l,u,n),!0===n.capture?c.result=`(${c.result})`:!1!==n.wrap&&u.length+l.length>1&&(c.result=`(?:${c.result})`),Ps.cache[i]=c,c.result};function xs(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=function(t,e){let r=[];for(let n=0;n1&&i.count.pop(),i.count.push(c.count[0]),i.string=i.pattern+Fs(i.count),a=e+1)}return o}function Os(t,e,r,n,i){let s=[];for(let i of t){let{string:t}=i;n||Ds(e,"string",t)||s.push(r+t),n&&Ds(e,"string",t)&&s.push(r+t)}return s}function ks(t,e){return t>e?1:e>t?-1:0}function Ds(t,e,r){return t.some((t=>t[e]===r))}function Ts(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function js(t,e){return t-t%Math.pow(10,e)}function Fs(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function Ms(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function Ls(t){return/^-?(0+)\d/.test(t)}function Is(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),i=!1!==r.relaxZeros;switch(n){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${n}}`:`0{${n}}`}}Ps.cache={},Ps.clearCache=()=>Ps.cache={},Rs=Ps;const Hs=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),$s=t=>"number"==typeof t||"string"==typeof t&&""!==t,Ns=t=>Number.isInteger(+t),Bs=t=>{let e=`${t}`,r=-1;if("-"===e[0]&&(e=e.slice(1)),"0"===e)return!1;for(;"0"===e[++r];);return r>0},Ws=(t,e,r)=>{if(e>0){let r="-"===t[0]?"-":"";r&&(t=t.slice(1)),t=r+t.padStart(r?e-1:e,"0")}return!1===r?String(t):t},Gs=(t,e)=>{let r="-"===t[0]?"-":"";for(r&&(t=t.slice(1),e--);t.length{if(r)return Rs(t,e,{wrap:!1,...n});let i=String.fromCharCode(t);return t===e?i:`[${i}-${String.fromCharCode(e)}]`},Vs=(t,e,r)=>{if(Array.isArray(t)){let e=!0===r.wrap,n=r.capture?"":"?:";return e?`(${n}${t.join("|")})`:t.join("|")}return Rs(t,e,r)},qs=(...t)=>new RangeError("Invalid range arguments: "+Ss.inspect(...t)),zs=(t,e,r)=>{if(!0===r.strictRanges)throw qs([t,e]);return[]},Ks=(t,e,r=1,n={})=>{let i=Number(t),s=Number(e);if(!Number.isInteger(i)||!Number.isInteger(s)){if(!0===n.strictRanges)throw qs([t,e]);return[]}0===i&&(i=0),0===s&&(s=0);let o=i>s,a=String(t),c=String(e),u=String(r);r=Math.max(Math.abs(r),1);let l=Bs(a)||Bs(c)||Bs(u),h=l?Math.max(a.length,c.length,u.length):0,f=!1===l&&!1===((t,e,r)=>"string"==typeof t||"string"==typeof e||!0===r.stringify)(t,e,n),p=n.transform||(t=>e=>!0===t?Number(e):String(e))(f);if(n.toRegex&&1===r)return Us(Gs(t,h),Gs(e,h),!0,n);let d={negatives:[],positives:[]},g=[],_=0;for(;o?i>=s:i<=s;)!0===n.toRegex&&r>1?d[(y=i)<0?"negatives":"positives"].push(Math.abs(y)):g.push(Ws(p(i,_),h,f)),i=o?i-r:i+r,_++;var y;return!0===n.toRegex?r>1?((t,e)=>{t.negatives.sort(((t,e)=>te?1:0)),t.positives.sort(((t,e)=>te?1:0));let r,n=e.capture?"":"?:",i="",s="";return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(s=`-(${n}${t.negatives.join("|")})`),r=i&&s?`${i}|${s}`:i||s,e.wrap?`(${n}${r})`:r})(d,n):Vs(g,null,{wrap:!1,...n}):g},Qs=(t,e,r,n={})=>{if(null==e&&$s(t))return[t];if(!$s(t)||!$s(e))return zs(t,e,n);if("function"==typeof r)return Qs(t,e,1,{transform:r});if(Hs(r))return Qs(t,e,0,r);let i={...n};return!0===i.capture&&(i.wrap=!0),r=r||i.step||1,Ns(r)?Ns(t)&&Ns(e)?Ks(t,e,r,i):((t,e,r=1,n={})=>{if(!Ns(t)&&t.length>1||!Ns(e)&&e.length>1)return zs(t,e,n);let i=n.transform||(t=>String.fromCharCode(t)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,c=Math.min(s,o),u=Math.max(s,o);if(n.toRegex&&1===r)return Us(c,u,!1,n);let l=[],h=0;for(;a?s>=o:s<=o;)l.push(i(s,h)),s=a?s-r:s+r,h++;return!0===n.toRegex?Vs(l,null,{wrap:!1,options:n}):l})(t,e,Math.max(Math.abs(r),1),i):null==r||Hs(r)?Qs(t,e,1,r):((t,e)=>{if(!0===e.strictRanges)throw new TypeError(`Expected step "${t}" to be a number`);return[]})(r,i)};Es=Qs;ws=(t,e={})=>{let r=(t,n={})=>{let i=ms(n),s=!0===t.invalid&&!0===e.escapeInvalid,o=!0===i||!0===s,a=!0===e.escapeInvalid?"\\":"",c="";if(!0===t.isOpen)return a+t.value;if(!0===t.isClose)return a+t.value;if("open"===t.type)return o?a+t.value:"(";if("close"===t.type)return o?a+t.value:")";if("comma"===t.type)return"comma"===t.prev.type?"":o?t.value:"|";if(t.value)return t.value;if(t.nodes&&t.ranges>0){let r=vs(t.nodes),n=Es(...r,{...e,wrap:!1,toRegex:!0});if(0!==n.length)return r.length>1&&n.length>1?`(${n})`:n}if(t.nodes)for(let e of t.nodes)c+=r(e,t);return c};return r(t)};var Ys={};const Xs=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),!(e=[].concat(e)).length)return t;if(!t.length)return r?bs(e).map((t=>`{${t}}`)):e;for(let i of t)if(Array.isArray(i))for(let t of i)n.push(Xs(t,e,r));else for(let t of e)!0===r&&"string"==typeof t&&(t=`{${t}}`),n.push(Array.isArray(t)?Xs(i,t,r):i+t);return bs(n)};Ys=(t,e={})=>{let r=void 0===e.rangeLimit?1e3:e.rangeLimit,n=(t,i={})=>{t.queue=[];let s=i,o=i.queue;for(;"brace"!==s.type&&"root"!==s.type&&s.parent;)s=s.parent,o=s.queue;if(t.invalid||t.dollar)return void o.push(Xs(o.pop(),gs(t,e)));if("brace"===t.type&&!0!==t.invalid&&2===t.nodes.length)return void o.push(Xs(o.pop(),["{}"]));if(t.nodes&&t.ranges>0){let n=vs(t.nodes);if(((t,e,r=1,n)=>!1!==n&&!(!ys(t)||!ys(e))&&(Number(e)-Number(t))/Number(r)>=n)(...n,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let i=Es(...n,e);return 0===i.length&&(i=gs(t,e)),o.push(Xs(o.pop(),i)),void(t.nodes=[])}let a=(t=>"brace"===t.type&&t.commas>>0+t.ranges>>0==0&&(t.invalid=!0,!0))(t),c=t.queue,u=t;for(;"brace"!==u.type&&"root"!==u.type&&u.parent;)u=u.parent,c=u.queue;for(let e=0;e",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\ufeff"};const{MAX_LENGTH:to,CHAR_BACKSLASH:eo,CHAR_BACKTICK:ro,CHAR_COMMA:no,CHAR_DOT:io,CHAR_LEFT_PARENTHESES:so,CHAR_RIGHT_PARENTHESES:oo,CHAR_LEFT_CURLY_BRACE:ao,CHAR_RIGHT_CURLY_BRACE:co,CHAR_LEFT_SQUARE_BRACKET:uo,CHAR_RIGHT_SQUARE_BRACKET:lo,CHAR_DOUBLE_QUOTE:ho,CHAR_SINGLE_QUOTE:fo,CHAR_NO_BREAK_SPACE:po,CHAR_ZERO_WIDTH_NOBREAK_SPACE:go}=Zs;Js=(t,e={})=>{if("string"!=typeof t)throw new TypeError("Expected a string");let r=e||{},n="number"==typeof r.maxLength?Math.min(to,r.maxLength):to;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let i,s={type:"root",input:t,nodes:[]},o=[s],a=s,c=s,u=0,l=t.length,h=0,f=0;const p=()=>t[h++],d=t=>{if("text"===t.type&&"dot"===c.type&&(c.type="text"),!c||"text"!==c.type||"text"!==t.type)return a.nodes.push(t),t.parent=a,t.prev=c,c=t,t;c.value+=t.value};for(d({type:"bos"});h0){if(a.ranges>0){a.ranges=0;let t=a.nodes.shift();a.nodes=[t,{type:"text",value:gs(a)}]}d({type:"comma",value:i}),a.commas++}else if(i===io&&f>0&&0===a.commas){let t=a.nodes;if(0===f||0===t.length){d({type:"text",value:i});continue}if("dot"===c.type){if(a.range=[],c.value+=i,c.type="range",3!==a.nodes.length&&5!==a.nodes.length){a.invalid=!0,a.ranges=0,c.type="text";continue}a.ranges++,a.args=[];continue}if("range"===c.type){t.pop();let e=t[t.length-1];e.value+=c.value+i,c=e,a.ranges--;continue}d({type:"dot",value:i})}else d({type:"text",value:i});else{if("brace"!==a.type){d({type:"text",value:i});continue}let t="close";a=o.pop(),a.close=!0,d({type:t,value:i}),f--,a=o[o.length-1]}else{f++;let t=c.value&&"$"===c.value.slice(-1)||!0===a.dollar;a=d({type:"brace",open:!0,close:!1,dollar:t,depth:f,commas:0,ranges:0,nodes:[]}),o.push(a),d({type:"open",value:i})}else{let t,r=i;for(!0!==e.keepQuotes&&(i="");h{t.nodes||("open"===t.type&&(t.isOpen=!0),"close"===t.type&&(t.isClose=!0),t.nodes||(t.type="text"),t.invalid=!0)}));let t=o[o.length-1],e=t.nodes.indexOf(a);t.nodes.splice(e,1,...a.nodes)}}while(o.length>0);return d({type:"eos"}),s};const _o=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let t=_o.create(n,e);Array.isArray(t)?r.push(...t):r.push(t)}else r=[].concat(_o.create(t,e));return e&&!0===e.expand&&!0===e.nodupes&&(r=[...new Set(r)]),r};_o.parse=(t,e={})=>Js(t,e),_o.stringify=(t,e={})=>gs("string"==typeof t?_o.parse(t,e):t,e),_o.compile=(t,e={})=>("string"==typeof t&&(t=_o.parse(t,e)),ws(t,e)),_o.expand=(t,e={})=>{"string"==typeof t&&(t=_o.parse(t,e));let r=Ys(t,e);return!0===e.noempty&&(r=r.filter(Boolean)),!0===e.nodupes&&(r=[...new Set(r)]),r},_o.create=(t,e={})=>""===t||t.length<3?[t]:!0!==e.expand?_o.compile(t,e):_o.expand(t,e),_s=_o;var yo={};const mo=c;var vo={};const bo=c,wo="win32"===process.platform;var Eo={};const So=c,Ao={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},Ro={...Ao,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};Eo={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:So.sep,extglobChars:t=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:t=>!0===t?Ro:Ao};const{REGEX_BACKSLASH:Po,REGEX_REMOVE_BACKSLASH:xo,REGEX_SPECIAL_CHARS:Co,REGEX_SPECIAL_CHARS_GLOBAL:Oo}=Eo;var ko=t=>t.replace(Oo,"\\$1"),Do=t=>t.replace(Po,"/"),To=t=>t.replace(xo,(t=>"\\"===t?"":t)),jo=()=>{const t=process.version.slice(1).split(".").map(Number);return 3===t.length&&t[0]>=9||8===t[0]&&t[1]>=10},Fo=t=>t&&"boolean"==typeof t.windows?t.windows:!0===wo||"\\"===bo.sep,Mo=(t,e,r)=>{const n=t.lastIndexOf(e,r);return-1===n?t:"\\"===t[n-1]?Mo(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`},Lo=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};const{CHAR_ASTERISK:Io,CHAR_AT:Ho,CHAR_BACKWARD_SLASH:$o,CHAR_COMMA:No,CHAR_DOT:Bo,CHAR_EXCLAMATION_MARK:Wo,CHAR_FORWARD_SLASH:Go,CHAR_LEFT_CURLY_BRACE:Uo,CHAR_LEFT_PARENTHESES:Vo,CHAR_LEFT_SQUARE_BRACKET:qo,CHAR_PLUS:zo,CHAR_QUESTION_MARK:Ko,CHAR_RIGHT_CURLY_BRACE:Qo,CHAR_RIGHT_PARENTHESES:Yo,CHAR_RIGHT_SQUARE_BRACKET:Xo}=Eo,Zo=t=>t===Go||t===$o,Jo=t=>{!0!==t.isPrefix&&(t.depth=t.isGlobstar?1/0:1)};vo=(t,e)=>{const r=e||{},n=t.length-1,i=!0===r.parts||!0===r.scanToEnd,s=[],o=[],a=[];let c,u,l=t,h=-1,f=0,p=0,d=!1,g=!1,_=!1,y=!1,m=!1,v=!1,b=!1,w=!1,E=!1,S=0,A={value:"",depth:0,isGlob:!1};const R=()=>h>=n,P=()=>(c=u,l.charCodeAt(++h));for(;h0&&(C=l.slice(0,f),l=l.slice(f),p-=f),x&&!0===_&&p>0?(x=l.slice(0,p),O=l.slice(p)):!0===_?(x="",O=l):x=l,x&&""!==x&&"/"!==x&&x!==l&&Zo(x.charCodeAt(x.length-1))&&(x=x.slice(0,-1)),!0===r.unescape&&(O&&(O=To(O)),x&&!0===b&&(x=To(x)));const k={prefix:C,input:t,start:f,base:x,glob:O,isBrace:d,isBracket:g,isGlob:_,isExtglob:y,isGlobstar:m,negated:w};if(!0===r.tokens&&(k.maxDepth=0,Zo(u)||o.push(A),k.tokens=o),!0===r.parts||!0===r.tokens){let e;for(let n=0;n{if("function"==typeof e.expandRange)return e.expandRange(...t,e);t.sort();const r=`[${t.join("-")}]`;try{new RegExp(r)}catch(e){return t.map((t=>ko(t))).join("..")}return r},aa=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,ca=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");t=sa[t]||t;const r={...e},n="number"==typeof r.maxLength?Math.min(ea,r.maxLength):ea;let i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);const s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",c=Fo(e),u=Eo.globChars(c),l=Eo.extglobChars(u),{DOT_LITERAL:h,PLUS_LITERAL:f,SLASH_LITERAL:p,ONE_CHAR:d,DOTS_SLASH:g,NO_DOT:_,NO_DOT_SLASH:y,NO_DOTS_SLASH:m,QMARK:v,QMARK_NO_DOT:b,STAR:w,START_ANCHOR:E}=u,S=t=>`(${a}(?:(?!${E}${t.dot?g:h}).)*?)`,A=r.dot?"":_,R=r.dot?v:b;let P=!0===r.bash?S(r):w;r.capture&&(P=`(${P})`),"boolean"==typeof r.noext&&(r.noextglob=r.noext);const x={input:t,index:-1,start:0,dot:!0===r.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Lo(t,x),i=t.length;const C=[],O=[],k=[];let D,T=s;const j=()=>x.index===i-1,F=x.peek=(e=1)=>t[x.index+e],M=x.advance=()=>t[++x.index],L=()=>t.slice(x.index+1),I=(t="",e=0)=>{x.consumed+=t,x.index+=e},H=t=>{x.output+=null!=t.output?t.output:t.value,I(t.value)},$=()=>{let t=1;for(;"!"===F()&&("("!==F(2)||"?"===F(3));)M(),x.start++,t++;return t%2!=0&&(x.negated=!0,x.start++,!0)},N=t=>{x[t]++,k.push(t)},B=t=>{x[t]--,k.pop()},W=t=>{if("globstar"===T.type){const e=x.braces>0&&("comma"===t.type||"brace"===t.type),r=!0===t.extglob||C.length&&("pipe"===t.type||"paren"===t.type);"slash"===t.type||"paren"===t.type||e||r||(x.output=x.output.slice(0,-T.output.length),T.type="star",T.value="*",T.output=P,x.output+=T.output)}if(C.length&&"paren"!==t.type&&!l[t.value]&&(C[C.length-1].inner+=t.value),(t.value||t.output)&&H(t),T&&"text"===T.type&&"text"===t.type)return T.value+=t.value,void(T.output=(T.output||"")+t.value);t.prev=T,o.push(t),T=t},G=(t,e)=>{const n={...l[e],conditions:1,inner:""};n.prev=T,n.parens=x.parens,n.output=x.output;const i=(r.capture?"(":"")+n.open;N("parens"),W({type:t,value:e,output:x.output?"":d}),W({type:"paren",extglob:!0,value:M(),output:i}),C.push(n)},U=t=>{let e=t.close+(r.capture?")":"");if("negate"===t.type){let n=P;t.inner&&t.inner.length>1&&t.inner.includes("/")&&(n=S(r)),(n!==P||j()||/^\)+$/.test(L()))&&(e=t.close=`)$))${n}`),"bos"===t.prev.type&&(x.negatedExtglob=!0)}W({type:"paren",extglob:!0,value:D,output:e}),B("parens")};if(!1!==r.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(t)){let n=!1,i=t.replace(ia,((t,e,r,i,s,o)=>"\\"===i?(n=!0,t):"?"===i?e?e+i+(s?v.repeat(s.length):""):0===o?R+(s?v.repeat(s.length):""):v.repeat(r.length):"."===i?h.repeat(r.length):"*"===i?e?e+i+(s?P:""):P:e?t:`\\${t}`));return!0===n&&(i=!0===r.unescape?i.replace(/\\/g,""):i.replace(/\\+/g,(t=>t.length%2==0?"\\\\":t?"\\":""))),i===t&&!0===r.contains?(x.output=t,x):(x.output=((t,e={},r={})=>{let n=`${r.contains?"":"^"}(?:${t})${r.contains?"":"$"}`;return!0===e.negated&&(n=`(?:^(?!${n}).*$)`),n})(i,x,e),x)}for(;!j();){if(D=M(),"\0"===D)continue;if("\\"===D){const t=F();if("/"===t&&!0!==r.bash)continue;if("."===t||";"===t)continue;if(!t){D+="\\",W({type:"text",value:D});continue}const e=/^\\+/.exec(L());let n=0;if(e&&e[0].length>2&&(n=e[0].length,x.index+=n,n%2!=0&&(D+="\\")),!0===r.unescape?D=M()||"":D+=M()||"",0===x.brackets){W({type:"text",value:D});continue}}if(x.brackets>0&&("]"!==D||"["===T.value||"[^"===T.value)){if(!1!==r.posix&&":"===D){const t=T.value.slice(1);if(t.includes("[")&&(T.posix=!0,t.includes(":"))){const t=T.value.lastIndexOf("["),e=T.value.slice(0,t),r=T.value.slice(t+2),n=ra[r];if(n){T.value=e+n,x.backtrack=!0,M(),s.output||1!==o.indexOf(T)||(s.output=d);continue}}}("["===D&&":"!==F()||"-"===D&&"]"===F())&&(D=`\\${D}`),"]"!==D||"["!==T.value&&"[^"!==T.value||(D=`\\${D}`),!0===r.posix&&"!"===D&&"["===T.value&&(D="^"),T.value+=D,H({value:D});continue}if(1===x.quotes&&'"'!==D){D=ko(D),T.value+=D,H({value:D});continue}if('"'===D){x.quotes=1===x.quotes?0:1,!0===r.keepQuotes&&W({type:"text",value:D});continue}if("("===D){N("parens"),W({type:"paren",value:D});continue}if(")"===D){if(0===x.parens&&!0===r.strictBrackets)throw new SyntaxError(aa("opening","("));const t=C[C.length-1];if(t&&x.parens===t.parens+1){U(C.pop());continue}W({type:"paren",value:D,output:x.parens?")":"\\)"}),B("parens");continue}if("["===D){if(!0!==r.nobracket&&L().includes("]"))N("brackets");else{if(!0!==r.nobracket&&!0===r.strictBrackets)throw new SyntaxError(aa("closing","]"));D=`\\${D}`}W({type:"bracket",value:D});continue}if("]"===D){if(!0===r.nobracket||T&&"bracket"===T.type&&1===T.value.length){W({type:"text",value:D,output:`\\${D}`});continue}if(0===x.brackets){if(!0===r.strictBrackets)throw new SyntaxError(aa("opening","["));W({type:"text",value:D,output:`\\${D}`});continue}B("brackets");const t=T.value.slice(1);if(!0===T.posix||"^"!==t[0]||t.includes("/")||(D=`/${D}`),T.value+=D,H({value:D}),!1===r.literalBrackets||(V=t,Co.test(V)))continue;const e=ko(T.value);if(x.output=x.output.slice(0,-T.value.length),!0===r.literalBrackets){x.output+=e,T.value=e;continue}T.value=`(${a}${e}|${T.value})`,x.output+=T.value;continue}if("{"===D&&!0!==r.nobrace){N("braces");const t={type:"brace",value:D,output:"(",outputIndex:x.output.length,tokensIndex:x.tokens.length};O.push(t),W(t);continue}if("}"===D){const t=O[O.length-1];if(!0===r.nobrace||!t){W({type:"text",value:D,output:D});continue}let e=")";if(!0===t.dots){const t=o.slice(),n=[];for(let e=t.length-1;e>=0&&(o.pop(),"brace"!==t[e].type);e--)"dots"!==t[e].type&&n.unshift(t[e].value);e=oa(n,r),x.backtrack=!0}if(!0!==t.comma&&!0!==t.dots){const r=x.output.slice(0,t.outputIndex),n=x.tokens.slice(t.tokensIndex);t.value=t.output="\\{",D=e="\\}",x.output=r;for(const t of n)x.output+=t.output||t.value}W({type:"brace",value:D,output:e}),B("braces"),O.pop();continue}if("|"===D){C.length>0&&C[C.length-1].conditions++,W({type:"text",value:D});continue}if(","===D){let t=D;const e=O[O.length-1];e&&"braces"===k[k.length-1]&&(e.comma=!0,t="|"),W({type:"comma",value:D,output:t});continue}if("/"===D){if("dot"===T.type&&x.index===x.start+1){x.start=x.index+1,x.consumed="",x.output="",o.pop(),T=s;continue}W({type:"slash",value:D,output:p});continue}if("."===D){if(x.braces>0&&"dot"===T.type){"."===T.value&&(T.output=h);const t=O[O.length-1];T.type="dots",T.output+=D,T.value+=D,t.dots=!0;continue}if(x.braces+x.parens===0&&"bos"!==T.type&&"slash"!==T.type){W({type:"text",value:D,output:h});continue}W({type:"dot",value:D,output:h});continue}if("?"===D){if(!(T&&"("===T.value)&&!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("qmark",D);continue}if(T&&"paren"===T.type){const t=F();let e=D;if("<"===t&&!jo())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===T.value&&!/[!=<:]/.test(t)||"<"===t&&!/<([!=]|\w+>)/.test(L()))&&(e=`\\${D}`),W({type:"text",value:D,output:e});continue}if(!0!==r.dot&&("slash"===T.type||"bos"===T.type)){W({type:"qmark",value:D,output:b});continue}W({type:"qmark",value:D,output:v});continue}if("!"===D){if(!0!==r.noextglob&&"("===F()&&("?"!==F(2)||!/[!=<:]/.test(F(3)))){G("negate",D);continue}if(!0!==r.nonegate&&0===x.index){$();continue}}if("+"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){G("plus",D);continue}if(T&&"("===T.value||!1===r.regex){W({type:"plus",value:D,output:f});continue}if(T&&("bracket"===T.type||"paren"===T.type||"brace"===T.type)||x.parens>0){W({type:"plus",value:D});continue}W({type:"plus",value:f});continue}if("@"===D){if(!0!==r.noextglob&&"("===F()&&"?"!==F(2)){W({type:"at",extglob:!0,value:D,output:""});continue}W({type:"text",value:D});continue}if("*"!==D){"$"!==D&&"^"!==D||(D=`\\${D}`);const t=na.exec(L());t&&(D+=t[0],x.index+=t[0].length),W({type:"text",value:D});continue}if(T&&("globstar"===T.type||!0===T.star)){T.type="star",T.star=!0,T.value+=D,T.output=P,x.backtrack=!0,x.globstar=!0,I(D);continue}let e=L();if(!0!==r.noextglob&&/^\([^?]/.test(e)){G("star",D);continue}if("star"===T.type){if(!0===r.noglobstar){I(D);continue}const n=T.prev,i=n.prev,s="slash"===n.type||"bos"===n.type,o=i&&("star"===i.type||"globstar"===i.type);if(!0===r.bash&&(!s||e[0]&&"/"!==e[0])){W({type:"star",value:D,output:""});continue}const a=x.braces>0&&("comma"===n.type||"brace"===n.type),c=C.length&&("pipe"===n.type||"paren"===n.type);if(!s&&"paren"!==n.type&&!a&&!c){W({type:"star",value:D,output:""});continue}for(;"/**"===e.slice(0,3);){const r=t[x.index+4];if(r&&"/"!==r)break;e=e.slice(3),I("/**",3)}if("bos"===n.type&&j()){T.type="globstar",T.value+=D,T.output=S(r),x.output=T.output,x.globstar=!0,I(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&!o&&j()){x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=S(r)+(r.strictSlashes?")":"|$)"),T.value+=D,x.globstar=!0,x.output+=n.output+T.output,I(D);continue}if("slash"===n.type&&"bos"!==n.prev.type&&"/"===e[0]){const t=void 0!==e[1]?"|$":"";x.output=x.output.slice(0,-(n.output+T.output).length),n.output=`(?:${n.output}`,T.type="globstar",T.output=`${S(r)}${p}|${p}${t})`,T.value+=D,x.output+=n.output+T.output,x.globstar=!0,I(D+M()),W({type:"slash",value:"/",output:""});continue}if("bos"===n.type&&"/"===e[0]){T.type="globstar",T.value+=D,T.output=`(?:^|${p}|${S(r)}${p})`,x.output=T.output,x.globstar=!0,I(D+M()),W({type:"slash",value:"/",output:""});continue}x.output=x.output.slice(0,-T.output.length),T.type="globstar",T.output=S(r),T.value+=D,x.output+=T.output,x.globstar=!0,I(D);continue}const n={type:"star",value:D,output:P};!0!==r.bash?!T||"bracket"!==T.type&&"paren"!==T.type||!0!==r.regex?(x.index!==x.start&&"slash"!==T.type&&"dot"!==T.type||("dot"===T.type?(x.output+=y,T.output+=y):!0===r.dot?(x.output+=m,T.output+=m):(x.output+=A,T.output+=A),"*"!==F()&&(x.output+=d,T.output+=d)),W(n)):(n.output=D,W(n)):(n.output=".*?","bos"!==T.type&&"slash"!==T.type||(n.output=A+n.output),W(n))}for(var V;x.brackets>0;){if(!0===r.strictBrackets)throw new SyntaxError(aa("closing","]"));x.output=Mo(x.output,"["),B("brackets")}for(;x.parens>0;){if(!0===r.strictBrackets)throw new SyntaxError(aa("closing",")"));x.output=Mo(x.output,"("),B("parens")}for(;x.braces>0;){if(!0===r.strictBrackets)throw new SyntaxError(aa("closing","}"));x.output=Mo(x.output,"{"),B("braces")}if(!0===r.strictSlashes||"star"!==T.type&&"bracket"!==T.type||W({type:"maybe_slash",value:"",output:`${p}?`}),!0===x.backtrack){x.output="";for(const t of x.tokens)x.output+=null!=t.output?t.output:t.value,t.suffix&&(x.output+=t.suffix)}return x};ca.fastpaths=(t,e)=>{const r={...e},n="number"==typeof r.maxLength?Math.min(ea,r.maxLength):ea,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=sa[t]||t;const s=Fo(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:c,DOTS_SLASH:u,NO_DOT:l,NO_DOTS:h,NO_DOTS_SLASH:f,STAR:p,START_ANCHOR:d}=Eo.globChars(s),g=r.dot?h:l,_=r.dot?f:l,y=r.capture?"":"?:";let m=!0===r.bash?".*?":p;r.capture&&(m=`(${m})`);const v=t=>!0===t.noglobstar?m:`(${y}(?:(?!${d}${t.dot?u:o}).)*?)`,b=t=>{switch(t){case"*":return`${g}${c}${m}`;case".*":return`${o}${c}${m}`;case"*.*":return`${g}${m}${o}${c}${m}`;case"*/*":return`${g}${m}${a}${c}${_}${m}`;case"**":return g+v(r);case"**/*":return`(?:${g}${v(r)}${a})?${_}${c}${m}`;case"**/*.*":return`(?:${g}${v(r)}${a})?${_}${m}${o}${c}${m}`;case"**/.*":return`(?:${g}${v(r)}${a})?${o}${c}${m}`;default:{const e=/^(.*?)\.(\w+)$/.exec(t);if(!e)return;const r=b(e[1]);if(!r)return;return r+o+e[2]}}},w=Lo(t,{negated:!1,prefix:""});let E=b(w);return E&&!0!==r.strictSlashes&&(E+=`${a}?`),E},ta=ca;const ua=(t,e,r=!1)=>{if(Array.isArray(t)){const n=t.map((t=>ua(t,e,r)));return t=>{for(const e of n){const r=e(t);if(r)return r}return!1}}const n=(i=t)&&"object"==typeof i&&!Array.isArray(i)&&t.tokens&&t.input;var i;if(""===t||"string"!=typeof t&&!n)throw new TypeError("Expected pattern to be a non-empty string");const s=e||{},o=Fo(e),a=n?ua.compileRe(t,e):ua.makeRe(t,e,!1,!0),c=a.state;delete a.state;let u=()=>!1;if(s.ignore){const t={...e,ignore:null,onMatch:null,onResult:null};u=ua(s.ignore,t,r)}const l=(r,n=!1)=>{const{isMatch:i,match:l,output:h}=ua.test(r,a,e,{glob:t,posix:o}),f={glob:t,state:c,regex:a,posix:o,input:r,output:h,match:l,isMatch:i};return"function"==typeof s.onResult&&s.onResult(f),!1===i?(f.isMatch=!1,!!n&&f):u(r)?("function"==typeof s.onIgnore&&s.onIgnore(f),f.isMatch=!1,!!n&&f):("function"==typeof s.onMatch&&s.onMatch(f),!n||f)};return r&&(l.state=c),l};ua.test=(t,e,r,{glob:n,posix:i}={})=>{if("string"!=typeof t)throw new TypeError("Expected input to be a string");if(""===t)return{isMatch:!1,output:""};const s=r||{},o=s.format||(i?Do:null);let a=t===n,c=a&&o?o(t):t;return!1===a&&(c=o?o(t):t,a=c===n),!1!==a&&!0!==s.capture||(a=!0===s.matchBase||!0===s.basename?ua.matchBase(t,e,r,i):e.exec(c)),{isMatch:Boolean(a),match:a,output:c}},ua.matchBase=(t,e,r,n=Fo(r))=>(e instanceof RegExp?e:ua.makeRe(e,r)).test(mo.basename(t)),ua.isMatch=(t,e,r)=>ua(e,r)(t),ua.parse=(t,e)=>Array.isArray(t)?t.map((t=>ua.parse(t,e))):ta(t,{...e,fastpaths:!1}),ua.scan=(t,e)=>vo(t,e),ua.compileRe=(t,e,r=!1,n=!1)=>{if(!0===r)return t.output;const i=e||{},s=i.contains?"":"^",o=i.contains?"":"$";let a=`${s}(?:${t.output})${o}`;t&&!0===t.negated&&(a=`^(?!${a}).*$`);const c=ua.toRegex(a,e);return!0===n&&(c.state=t),c},ua.makeRe=(t,e,r=!1,n=!1)=>{if(!t||"string"!=typeof t)throw new TypeError("Expected a non-empty string");const i=e||{};let s,o={negated:!1,fastpaths:!0},a="";return t.startsWith("./")&&(t=t.slice(2),a=o.prefix="./"),!1===i.fastpaths||"."!==t[0]&&"*"!==t[0]||(s=ta.fastpaths(t,e)),void 0===s?(o=ta(t,e),o.prefix=a+(o.prefix||"")):o.output=s,ua.compileRe(o,e,r,n)},ua.toRegex=(t,e)=>{try{const r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(t){if(e&&!0===e.debug)throw t;return/$^/}},ua.constants=Eo,yo=ua;const la=t=>""===t||"./"===t,ha=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,i=new Set,s=new Set,o=0,a=t=>{s.add(t.output),r&&r.onResult&&r.onResult(t)};for(let s=0;s!n.has(t)));if(r&&0===c.length){if(!0===r.failglob)throw new Error(`No matches found for "${e.join(", ")}"`);if(!0===r.nonull||!0===r.nullglob)return r.unescape?e.map((t=>t.replace(/\\/g,""))):e}return c};ha.match=ha,ha.matcher=(t,e)=>yo(t,e),ha.any=ha.isMatch=(t,e,r)=>yo(e,r)(t),ha.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,i=[],s=ha(t,e,{...r,onResult:t=>{r.onResult&&r.onResult(t),i.push(t.output)}});for(let t of i)s.includes(t)||n.add(t);return[...n]},ha.contains=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${ds.inspect(t)}"`);if(Array.isArray(e))return e.some((e=>ha.contains(t,e,r)));if("string"==typeof e){if(la(t)||la(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return ha.isMatch(t,e,{...r,contains:!0})},ha.matchKeys=(t,e,r)=>{if(null===(n=t)||"object"!=typeof n||Array.isArray(n))throw new TypeError("Expected the first argument to be an object");var n;let i=ha(Object.keys(t),e,r),s={};for(let e of i)s[e]=t[e];return s},ha.some=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=yo(String(t),r);if(n.some((t=>e(t))))return!0}return!1},ha.every=(t,e,r)=>{let n=[].concat(t);for(let t of[].concat(e)){let e=yo(String(t),r);if(!n.every((t=>e(t))))return!1}return!0},ha.all=(t,e,r)=>{if("string"!=typeof t)throw new TypeError(`Expected a string: "${ds.inspect(t)}"`);return[].concat(e).every((e=>yo(e,r)(t)))},ha.capture=(t,e,r)=>{let n=Fo(r),i=yo.makeRe(String(t),{...r,capture:!0}).exec(n?Do(e):e);if(i)return i.slice(1).map((t=>void 0===t?"":t))},ha.makeRe=(...t)=>yo.makeRe(...t),ha.scan=(...t)=>yo.scan(...t),ha.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let t of _s(String(n),e))r.push(yo.parse(t,e));return r},ha.braces=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return e&&!0===e.nobrace||!/\{.*\}/.test(t)?[t]:_s(t,e)},ha.braceExpand=(t,e)=>{if("string"!=typeof t)throw new TypeError("Expected a string");return ha.braces(t,{...e,expand:!0})},ps=ha;const fa=/[*?]|^!/,pa=/\[.*]/,da=/(?:^|[^!*+?@])\(.*\|.*\)/,ga=/[!*+?@]\(.*\)/,_a=/{.*(?:,|\.\.).*}/;function ya(t,e={}){return!va(t,e)}var ma=ya;function va(t,e={}){return""!==t&&(!(!1!==e.caseSensitiveMatch&&!t.includes("\\"))||(!!(fa.test(t)||pa.test(t)||da.test(t))||(!(!1===e.extglob||!ga.test(t))||!(!1===e.braceExpansion||!_a.test(t)))))}Zi.isStaticPattern=ma;var ba=va;Zi.isDynamicPattern=ba;var wa=function(t){return Sa(t)?t.slice(1):t};Zi.convertToPositivePattern=wa;var Ea=function(t){return"!"+t};function Sa(t){return t.startsWith("!")&&"("!==t[1]}Zi.convertToNegativePattern=Ea;var Aa=Sa;function Ra(t){return!Sa(t)}Zi.isNegativePattern=Aa;var Pa=Ra;Zi.isPositivePattern=Pa;var xa=function(t){return t.filter(Sa)};Zi.getNegativePatterns=xa;var Ca=function(t){return t.filter(Ra)};Zi.getPositivePatterns=Ca;var Oa=function(t){return es(t,{flipBackslashes:!1})};Zi.getBaseDirectory=Oa;var ka=function(t){return t.includes("**")};function Da(t){return t.endsWith("/**")}Zi.hasGlobStar=ka;var Ta=Da;Zi.endsWithSlashGlobStar=Ta;var ja=function(t){const e=ts.basename(t);return Da(t)||ya(e)};Zi.isAffectDepthOfReadingPattern=ja;var Fa=function(t){return t.reduce(((t,e)=>t.concat(Ma(e))),[])};function Ma(t){return ps.braces(t,{expand:!0,nodupes:!0})}Zi.expandPatternsWithBraceExpansion=Fa;var La=Ma;Zi.expandBraceExpansion=La;var Ia=function(t,e){let{parts:r}=yo.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return 0===r.length&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r};function Ha(t,e){return ps.makeRe(t,e)}Zi.getPatternParts=Ia;var $a=Ha;Zi.makeRe=$a;var Na=function(t,e){return t.map((t=>Ha(t,e)))};Zi.convertPatternsToRe=Na,Ji=function(t,e){return e.some((e=>e.test(t)))},Zi.matchAny=Ji;var Ba=Zi;Di.pattern=Zi;var Wa={};Object.defineProperty(Wa,"__esModule",{value:!0});var Ga=void 0;Wa.merge=Ga;var Ua={};const Va=e.PassThrough,qa=Array.prototype.slice;function za(t,e){if(Array.isArray(t))for(let r=0,n=t.length;rt.emit("close")))}Ua=function(){const t=[],e=qa.call(arguments);let r=!1,n=e[e.length-1];n&&!Array.isArray(n)&&null==n.pipe?e.pop():n={};const i=!1!==n.end,s=!0===n.pipeError;null==n.objectMode&&(n.objectMode=!0);null==n.highWaterMark&&(n.highWaterMark=65536);const o=Va(n);function a(){for(let e=0,r=arguments.length;e0||(r=!1,c())}function a(t){function e(){t.removeListener("merge2UnpipeEnd",e),t.removeListener("end",e),s&&t.removeListener("error",r),i()}function r(t){o.emit("error",t)}if(t._readableState.endEmitted)return i();t.on("merge2UnpipeEnd",e),t.on("end",e),s&&t.on("error",r),t.pipe(o,{end:!1}),t.resume()}for(let t=0;t{t.once("error",(t=>e.emit("error",t)))})),e.once("close",(()=>Ka(t))),e.once("end",(()=>Ka(t))),e},Wa.merge=Ga;var Qa=Wa;Di.stream=Wa;var Ya={};Object.defineProperty(Ya,"__esModule",{value:!0});var Xa=(Za=void 0,Ya.isString=Za);Ya.isEmpty=Xa;var Za=function(t){return"string"==typeof t};Ya.isString=Za,Xa=function(t){return""===t},Ya.isEmpty=Xa,Ti=Ya,Di.string=Ti;var Ja=function(t,e){const r=rc(t),n=ic(t,e.ignore),i=r.filter((t=>Di.pattern.isStaticPattern(t,e))),s=r.filter((t=>Di.pattern.isDynamicPattern(t,e))),o=tc(i,n,!1),a=tc(s,n,!0);return o.concat(a)};function tc(t,e,r){const n=oc(t);if("."in n){return[lc(".",t,e,r)]}return cc(n,e,r)}Oi.generate=Ja;var ec=tc;function rc(t){return Di.pattern.getPositivePatterns(t)}Oi.convertPatternsToTasks=ec;var nc=rc;function ic(t,e){return Di.pattern.getNegativePatterns(t).concat(e).map(Di.pattern.convertToPositivePattern)}Oi.getPositivePatterns=nc;var sc=ic;function oc(t){return t.reduce(((t,e)=>{const r=Di.pattern.getBaseDirectory(e);return r in t?t[r].push(e):t[r]=[e],t}),{})}Oi.getNegativePatternsAsPositive=sc;var ac=oc;function cc(t,e,r){return Object.keys(t).map((n=>lc(n,t[n],e,r)))}Oi.groupPatternsByBaseDirectory=ac;var uc=cc;function lc(t,e,r,n){return{dynamic:n,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Di.pattern.convertToNegativePattern))}}Oi.convertPatternGroupsToTasks=uc,ki=lc,Oi.convertPatternGroupToTask=ki;var hc={};Object.defineProperty(hc,"__esModule",{value:!0});var fc={};Object.defineProperty(fc,"__esModule",{value:!0});const pc=e;var dc={};Object.defineProperty(dc,"__esModule",{value:!0});var gc=(Cc=void 0,Oc=dc.Settings=Cc,dc.stat=Oc);dc.statSync=gc;var _c={};Object.defineProperty(_c,"__esModule",{value:!0});var yc=void 0;function mc(t,e){t(e)}function vc(t,e){t(null,e)}_c.read=yc,yc=function(t,e,r){e.fs.lstat(t,((n,i)=>null!==n?mc(r,n):i.isSymbolicLink()&&e.followSymbolicLink?void e.fs.stat(t,((t,n)=>{if(null!==t)return e.throwErrorOnBrokenSymbolicLink?mc(r,t):vc(r,i);e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),vc(r,n)})):vc(r,i)))},_c.read=yc;var bc={};Object.defineProperty(bc,"__esModule",{value:!0});var wc=void 0;bc.read=wc,wc=function(t,e){const r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{const r=e.fs.statSync(t);return e.markSymbolicLink&&(r.isSymbolicLink=()=>!0),r}catch(t){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw t}},bc.read=wc;var Ec={};Object.defineProperty(Ec,"__esModule",{value:!0});var Sc={};Object.defineProperty(Sc,"__esModule",{value:!0});var Ac=(Pc=void 0,Sc.FILE_SYSTEM_ADAPTER=Pc);Sc.createFileSystemAdapter=Ac;const Rc=n;var Pc={lstat:Rc.lstat,stat:Rc.stat,lstatSync:Rc.lstatSync,statSync:Rc.statSync};Sc.FILE_SYSTEM_ADAPTER=Pc,Ac=function(t){return void 0===t?Sc.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Sc.FILE_SYSTEM_ADAPTER),t)},Sc.createFileSystemAdapter=Ac;var xc=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Sc.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,e){return null!=t?t:e}};Ec.default=xc;var Cc=Ec.default;dc.Settings=Cc;var Oc=function(t,e,r){if("function"==typeof e)return _c.read(t,kc(),e);_c.read(t,kc(e),r)};function kc(t={}){return t instanceof Ec.default?t:new Ec.default(t)}dc.stat=Oc,gc=function(t,e){const r=kc(e);return bc.read(t,r)},dc.statSync=gc;var Dc={};Object.defineProperty(Dc,"__esModule",{value:!0});var Tc=(Yu=void 0,Xu=Dc.walk=Yu,Zu=Dc.walkSync=Xu,Dc.walkStream=Zu);Dc.Settings=Tc;var jc={};Object.defineProperty(jc,"__esModule",{value:!0});var Fc={};Object.defineProperty(Fc,"__esModule",{value:!0});const Mc=u;var Lc={};Object.defineProperty(Lc,"__esModule",{value:!0});var Ic=(bu=void 0,wu=Lc.scandir=bu,Lc.scandirSync=wu);Lc.Settings=Ic;var Hc={};Object.defineProperty(Hc,"__esModule",{value:!0});var $c=(eu=void 0,nu=Hc.read=eu,Hc.readdirWithFileTypes=nu);Hc.readdir=$c;var Nc={};/*! run-parallel. MIT License. Feross Aboukhadijeh */Nc=function(t,e){let r,n,i,s=!0;Array.isArray(t)?(r=[],n=t.length):(i=Object.keys(t),r={},n=i.length);function o(t){function n(){e&&e(t,r),e=null}s?Bc(n):n()}function a(t,e,i){r[t]=i,(0==--n||e)&&o(e)}n?i?i.forEach((function(e){t[e]((function(t,r){a(e,t,r)}))})):t.forEach((function(t,e){t((function(t,r){a(e,t,r)}))})):o(null);s=!1};var Bc={};/*! queue-microtask. MIT License. Feross Aboukhadijeh */let Wc;Bc="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:f):t=>(Wc||(Wc=Promise.resolve())).then(t).catch((t=>setTimeout((()=>{throw t}),0)));var Gc={};Object.defineProperty(Gc,"__esModule",{value:!0});var Uc=void 0;Gc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Uc;const Vc=process.versions.node.split("."),qc=parseInt(Vc[0],10),zc=parseInt(Vc[1],10);Uc=qc>10||10===qc&&zc>=10,Gc.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Uc;var Kc={};Object.defineProperty(Kc,"__esModule",{value:!0});var Qc=void 0;Kc.fs=Qc;var Yc={};Object.defineProperty(Yc,"__esModule",{value:!0});var Xc=void 0;Yc.createDirentFromStats=Xc;class Zc{constructor(t,e){this.name=t,this.isBlockDevice=e.isBlockDevice.bind(e),this.isCharacterDevice=e.isCharacterDevice.bind(e),this.isDirectory=e.isDirectory.bind(e),this.isFIFO=e.isFIFO.bind(e),this.isFile=e.isFile.bind(e),this.isSocket=e.isSocket.bind(e),this.isSymbolicLink=e.isSymbolicLink.bind(e)}}Xc=function(t,e){return new Zc(t,e)},Yc.createDirentFromStats=Xc,Qc=Yc,Kc.fs=Qc;var Jc={};Object.defineProperty(Jc,"__esModule",{value:!0});var tu=void 0;Jc.joinPathSegments=tu,tu=function(t,e,r){return t.endsWith(r)?t+e:t+r+e},Jc.joinPathSegments=tu;var eu=function(t,e,r){return!e.stats&&Gc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?ru(t,e,r):iu(t,e,r)};function ru(t,e,r){e.fs.readdir(t,{withFileTypes:!0},((n,i)=>{if(null!==n)return su(r,n);const s=i.map((r=>({dirent:r,name:r.name,path:Jc.joinPathSegments(t,r.name,e.pathSegmentSeparator)})));if(!e.followSymbolicLinks)return ou(r,s);const o=s.map((t=>function(t,e){return r=>{if(!t.dirent.isSymbolicLink())return r(null,t);e.fs.stat(t.path,((n,i)=>null!==n?e.throwErrorOnBrokenSymbolicLink?r(n):r(null,t):(t.dirent=Kc.fs.createDirentFromStats(t.name,i),r(null,t))))}}(t,e)));Nc(o,((t,e)=>{if(null!==t)return su(r,t);ou(r,e)}))}))}Hc.read=eu;var nu=ru;function iu(t,e,r){e.fs.readdir(t,((n,i)=>{if(null!==n)return su(r,n);const s=i.map((r=>Jc.joinPathSegments(t,r,e.pathSegmentSeparator))),o=s.map((t=>r=>dc.stat(t,e.fsStatSettings,r)));Nc(o,((t,n)=>{if(null!==t)return su(r,t);const o=[];i.forEach(((t,r)=>{const i=n[r],a={name:t,path:s[r],dirent:Kc.fs.createDirentFromStats(t,i)};e.stats&&(a.stats=i),o.push(a)})),ou(r,o)}))}))}function su(t,e){t(e)}function ou(t,e){t(null,e)}Hc.readdirWithFileTypes=nu,$c=iu,Hc.readdir=$c;var au={};Object.defineProperty(au,"__esModule",{value:!0});var cu=(uu=void 0,hu=au.read=uu,au.readdirWithFileTypes=hu);au.readdir=cu;var uu=function(t,e){return!e.stats&&Gc.IS_SUPPORT_READDIR_WITH_FILE_TYPES?lu(t,e):fu(t,e)};function lu(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map((r=>{const n={dirent:r,name:r.name,path:Jc.joinPathSegments(t,r.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{const t=e.fs.statSync(n.path);n.dirent=Kc.fs.createDirentFromStats(n.name,t)}catch(t){if(e.throwErrorOnBrokenSymbolicLink)throw t}return n}))}au.read=uu;var hu=lu;function fu(t,e){return e.fs.readdirSync(t).map((r=>{const n=Jc.joinPathSegments(t,r,e.pathSegmentSeparator),i=dc.statSync(n,e.fsStatSettings),s={name:r,path:n,dirent:Kc.fs.createDirentFromStats(r,i)};return e.stats&&(s.stats=i),s}))}au.readdirWithFileTypes=hu,cu=fu,au.readdir=cu;var pu={};Object.defineProperty(pu,"__esModule",{value:!0});const du=c;var gu={};Object.defineProperty(gu,"__esModule",{value:!0});var _u=(mu=void 0,gu.FILE_SYSTEM_ADAPTER=mu);gu.createFileSystemAdapter=_u;const yu=n;var mu={lstat:yu.lstat,stat:yu.stat,lstatSync:yu.lstatSync,statSync:yu.statSync,readdir:yu.readdir,readdirSync:yu.readdirSync};gu.FILE_SYSTEM_ADAPTER=mu,_u=function(t){return void 0===t?gu.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gu.FILE_SYSTEM_ADAPTER),t)},gu.createFileSystemAdapter=_u;var vu=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=gu.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,du.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new dc.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};pu.default=vu,Ic=pu.default,Lc.Settings=Ic;var bu=function(t,e,r){if("function"==typeof e)return Hc.read(t,Eu(),e);Hc.read(t,Eu(e),r)};Lc.scandir=bu;var wu=function(t,e){const r=Eu(e);return au.read(t,r)};function Eu(t={}){return t instanceof pu.default?t:new pu.default(t)}Lc.scandirSync=wu;var Su={},Au={};function Ru(t,e,r){if("function"==typeof t&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var n=Au(xu),i=null,s=null,o=0,a=null,c={push:function(r,l){var h=n.get();h.context=t,h.release=u,h.value=r,h.callback=l||Pu,h.errorHandler=a,o===c.concurrency||c.paused?s?(s.next=h,s=h):(i=h,s=h,c.saturated()):(o++,e.call(t,h.value,h.worked))},drain:Pu,saturated:Pu,pause:function(){c.paused=!0},paused:!1,concurrency:r,running:function(){return o},resume:function(){if(!c.paused)return;c.paused=!1;for(var t=0;t{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate((()=>{this._pushToQueue(this._root,this._settings.basePath)})),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on("entry",t)}onError(t){this._emitter.once("error",t)}onEnd(t){this._emitter.once("end",t)}_pushToQueue(t,e){const r={directory:t,base:e};this._queue.push(r,(t=>{null!==t&&this._handleError(t)}))}_worker(t,e){this._scandir(t.directory,this._settings.fsScandirSettings,((r,n)=>{if(null!==r)return e(r,void 0);for(const e of n)this._handleEntry(e,t.base);e(null,void 0)}))}_handleError(t){!this._isDestroyed&&Ou.isFatalError(this._settings,t)&&(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",t))}_handleEntry(t,e){if(this._isDestroyed||this._isFatalError)return;const r=t.path;void 0!==e&&(t.path=Ou.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Ou.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&Ou.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_emitEntry(t){this._emitter.emit("entry",t)}}var Iu=Lu;Fc.default=Iu;var Hu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Fc.default(this._root,this._settings),this._storage=new Set}read(t){this._reader.onError((e=>{!function(t,e){t(e)}(t,e)})),this._reader.onEntry((t=>{this._storage.add(t)})),this._reader.onEnd((()=>{!function(t,e){t(null,e)}(t,[...this._storage])})),this._reader.read()}};jc.default=Hu;var $u={};Object.defineProperty($u,"__esModule",{value:!0});const Nu=e;var Bu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Fc.default(this._root,this._settings),this._stream=new Nu.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError((t=>{this._stream.emit("error",t)})),this._reader.onEntry((t=>{this._stream.push(t)})),this._reader.onEnd((()=>{this._stream.push(null)})),this._reader.read(),this._stream}};$u.default=Bu;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0});var Gu={};Object.defineProperty(Gu,"__esModule",{value:!0});class Uu extends Fu.default{constructor(){super(...arguments),this._scandir=Lc.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(t,e){this._queue.add({directory:t,base:e})}_handleQueue(){for(const t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,e){try{const r=this._scandir(t,this._settings.fsScandirSettings);for(const t of r)this._handleEntry(t,e)}catch(t){this._handleError(t)}}_handleError(t){if(Ou.isFatalError(this._settings,t))throw t}_handleEntry(t,e){const r=t.path;void 0!==e&&(t.path=Ou.joinPathSegments(e,t.name,this._settings.pathSegmentSeparator)),Ou.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&Ou.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(r,t.path)}_pushToStorage(t){this._storage.add(t)}}var Vu=Uu;Gu.default=Vu;var qu=class{constructor(t,e){this._root=t,this._settings=e,this._reader=new Gu.default(this._root,this._settings)}read(){return this._reader.read()}};Wu.default=qu;var zu={};Object.defineProperty(zu,"__esModule",{value:!0});const Ku=c;var Qu=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,1/0),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Ku.sep),this.fsScandirSettings=new Lc.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,e){return null!=t?t:e}};zu.default=Qu,Tc=zu.default,Dc.Settings=Tc;var Yu=function(t,e,r){if("function"==typeof e)return new jc.default(t,Ju()).read(e);new jc.default(t,Ju(e)).read(r)};Dc.walk=Yu;var Xu=function(t,e){const r=Ju(e);return new Wu.default(t,r).read()};Dc.walkSync=Xu;var Zu=function(t,e){const r=Ju(e);return new $u.default(t,r).read()};function Ju(t={}){return t instanceof zu.default?t:new zu.default(t)}Dc.walkStream=Zu;var tl={};Object.defineProperty(tl,"__esModule",{value:!0});const el=c;var rl=class{constructor(t){this._settings=t,this._fsStatSettings=new dc.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return el.resolve(this._settings.cwd,t)}_makeEntry(t,e){const r={name:e,path:e,dirent:Di.fs.createDirentFromStats(e,t)};return this._settings.stats&&(r.stats=t),r}_isFatalError(t){return!Di.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};tl.default=rl;class nl extends tl.default{constructor(){super(...arguments),this._walkStream=Dc.walkStream,this._stat=dc.stat}dynamic(t,e){return this._walkStream(t,e)}static(t,e){const r=t.map(this._getFullEntryPath,this),n=new pc.PassThrough({objectMode:!0});n._write=(i,s,o)=>this._getEntry(r[i],t[i],e).then((t=>{null!==t&&e.entryFilter(t)&&n.push(t),i===r.length-1&&n.end(),o()})).catch(o);for(let t=0;tthis._makeEntry(t,e))).catch((t=>{if(r.errorFilter(t))return null;throw t}))}_getStat(t){return new Promise(((e,r)=>{this._stat(t,this._fsStatSettings,((t,n)=>null===t?e(n):r(t)))}))}}var il=nl;fc.default=il;var sl={};Object.defineProperty(sl,"__esModule",{value:!0});const ol=c;var al={};Object.defineProperty(al,"__esModule",{value:!0});var cl={};Object.defineProperty(cl,"__esModule",{value:!0});var ul={};Object.defineProperty(ul,"__esModule",{value:!0});var ll=class{constructor(t,e,r){this._patterns=t,this._settings=e,this._micromatchOptions=r,this._storage=[],this._fillStorage()}_fillStorage(){const t=Di.pattern.expandPatternsWithBraceExpansion(this._patterns);for(const e of t){const t=this._getPatternSegments(e),r=this._splitSegmentsIntoSections(t);this._storage.push({complete:r.length<=1,pattern:e,segments:t,sections:r})}}_getPatternSegments(t){return Di.pattern.getPatternParts(t,this._micromatchOptions).map((t=>Di.pattern.isDynamicPattern(t,this._settings)?{dynamic:!0,pattern:t,patternRe:Di.pattern.makeRe(t,this._micromatchOptions)}:{dynamic:!1,pattern:t}))}_splitSegmentsIntoSections(t){return Di.array.splitWhen(t,(t=>t.dynamic&&Di.pattern.hasGlobStar(t.pattern)))}};ul.default=ll;class hl extends ul.default{match(t){const e=t.split("/"),r=e.length,n=this._storage.filter((t=>!t.complete||t.segments.length>r));for(const t of n){const n=t.sections[0];if(!t.complete&&r>n.length)return!0;if(e.every(((e,r)=>{const n=t.segments[r];return!(!n.dynamic||!n.patternRe.test(e))||!n.dynamic&&n.pattern===e})))return!0}return!1}}var fl=hl;cl.default=fl;var pl=class{constructor(t,e){this._settings=t,this._micromatchOptions=e}getFilter(t,e,r){const n=this._getMatcher(e),i=this._getNegativePatternsRe(r);return e=>this._filter(t,e,n,i)}_getMatcher(t){return new cl.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){const e=t.filter(Di.pattern.isAffectDepthOfReadingPattern);return Di.pattern.convertPatternsToRe(e,this._micromatchOptions)}_filter(t,e,r,n){if(this._isSkippedByDeep(t,e.path))return!1;if(this._isSkippedSymbolicLink(e))return!1;const i=Di.path.removeLeadingDotSegment(e.path);return!this._isSkippedByPositivePatterns(i,r)&&this._isSkippedByNegativePatterns(i,n)}_isSkippedByDeep(t,e){return this._settings.deep!==1/0&&this._getEntryLevel(t,e)>=this._settings.deep}_getEntryLevel(t,e){const r=e.split("/").length;if(""===t)return r;return r-t.split("/").length}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,e){return!this._settings.baseNameMatch&&!e.match(t)}_isSkippedByNegativePatterns(t,e){return!Di.pattern.matchAny(t,e)}};al.default=pl;var dl={};Object.defineProperty(dl,"__esModule",{value:!0});var gl=class{constructor(t,e){this._settings=t,this._micromatchOptions=e,this.index=new Map}getFilter(t,e){const r=Di.pattern.convertPatternsToRe(t,this._micromatchOptions),n=Di.pattern.convertPatternsToRe(e,this._micromatchOptions);return t=>this._filter(t,r,n)}_filter(t,e,r){if(this._settings.unique&&this._isDuplicateEntry(t))return!1;if(this._onlyFileFilter(t)||this._onlyDirectoryFilter(t))return!1;if(this._isSkippedByAbsoluteNegativePatterns(t.path,r))return!1;const n=this._settings.baseNameMatch?t.name:t.path,i=this._isMatchToPatterns(n,e)&&!this._isMatchToPatterns(t.path,r);return this._settings.unique&&i&&this._createIndexRecord(t),i}_isDuplicateEntry(t){return this.index.has(t.path)}_createIndexRecord(t){this.index.set(t.path,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,e){if(!this._settings.absolute)return!1;const r=Di.path.makeAbsolute(this._settings.cwd,t);return Di.pattern.matchAny(r,e)}_isMatchToPatterns(t,e){const r=Di.path.removeLeadingDotSegment(t);return Di.pattern.matchAny(r,e)}};dl.default=gl;var _l={};Object.defineProperty(_l,"__esModule",{value:!0});var yl=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return Di.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};_l.default=yl;var ml={};Object.defineProperty(ml,"__esModule",{value:!0});var vl=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let e=t.path;return this._settings.absolute&&(e=Di.path.makeAbsolute(this._settings.cwd,e),e=Di.path.unixify(e)),this._settings.markDirectories&&t.dirent.isDirectory()&&(e+="/"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:e}):e}};ml.default=vl;var bl=class{constructor(t){this._settings=t,this.errorFilter=new _l.default(this._settings),this.entryFilter=new dl.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new al.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new ml.default(this._settings)}_getRootDirectory(t){return ol.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){const e="."===t.base?"":t.base;return{basePath:e,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(e,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};sl.default=bl;class wl extends sl.default{constructor(){super(...arguments),this._reader=new fc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=[];return new Promise(((i,s)=>{const o=this.api(e,t,r);o.once("error",s),o.on("data",(t=>n.push(r.transform(t)))),o.once("end",(()=>i(n)))}))}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var El=wl;hc.default=El;var Sl={};Object.defineProperty(Sl,"__esModule",{value:!0});const Al=e;class Rl extends sl.default{constructor(){super(...arguments),this._reader=new fc.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t),n=this.api(e,t,r),i=new Al.Readable({objectMode:!0,read:()=>{}});return n.once("error",(t=>i.emit("error",t))).on("data",(t=>i.emit("data",r.transform(t)))).once("end",(()=>i.emit("end"))),i.once("close",(()=>n.destroy())),i}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Pl=Rl;Sl.default=Pl;var xl={};Object.defineProperty(xl,"__esModule",{value:!0});var Cl={};Object.defineProperty(Cl,"__esModule",{value:!0});class Ol extends tl.default{constructor(){super(...arguments),this._walkSync=Dc.walkSync,this._statSync=dc.statSync}dynamic(t,e){return this._walkSync(t,e)}static(t,e){const r=[];for(const n of t){const t=this._getFullEntryPath(n),i=this._getEntry(t,n,e);null!==i&&e.entryFilter(i)&&r.push(i)}return r}_getEntry(t,e,r){try{const r=this._getStat(t);return this._makeEntry(r,e)}catch(t){if(r.errorFilter(t))return null;throw t}}_getStat(t){return this._statSync(t,this._fsStatSettings)}}var kl=Ol;Cl.default=kl;class Dl extends sl.default{constructor(){super(...arguments),this._reader=new Cl.default(this._settings)}read(t){const e=this._getRootDirectory(t),r=this._getReaderOptions(t);return this.api(e,t,r).map(r.transform)}api(t,e,r){return e.dynamic?this._reader.dynamic(t,r):this._reader.static(e.patterns,r)}}var Tl=Dl;xl.default=Tl;var jl={};Object.defineProperty(jl,"__esModule",{value:!0});var Fl=void 0;jl.DEFAULT_FILE_SYSTEM_ADAPTER=Fl;const Ml=n,Ll=r,Il=Math.max(Ll.cpus().length,1);Fl={lstat:Ml.lstat,lstatSync:Ml.lstatSync,stat:Ml.stat,statSync:Ml.statSync,readdir:Ml.readdir,readdirSync:Ml.readdirSync},jl.DEFAULT_FILE_SYSTEM_ADAPTER=Fl;var Hl,$l=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Il),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(t,e){return void 0===t?e:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},jl.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};async function Nl(t,e){Wl(t);const r=Bl(t,hc.default,e),n=await Promise.all(r);return Di.array.flatten(n)}function Bl(t,e,r){const n=[].concat(t),i=new jl.default(r),s=Oi.generate(n,i),o=new e(i);return s.map(o.read,o)}function Wl(t){if(![].concat(t).every((t=>Di.string.isString(t)&&!Di.string.isEmpty(t))))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}jl.default=$l,(Hl=Nl||(Nl={})).sync=function(t,e){Wl(t);const r=Bl(t,xl.default,e);return Di.array.flatten(r)},Hl.stream=function(t,e){Wl(t);const r=Bl(t,Sl.default,e);return Di.stream.merge(r)},Hl.generateTasks=function(t,e){Wl(t);const r=[].concat(t),n=new jl.default(e);return Oi.generate(r,n)},Hl.isDynamicPattern=function(t,e){Wl(t);const r=new jl.default(e);return Di.pattern.isDynamicPattern(t,r)},Hl.escapePath=function(t){return Wl(t),Di.path.escape(t)};var Gl=Lf(Nl),Ul={};const{EventEmitter:Vl}=u,ql=n,zl=c,{promisify:Kl}=s;var Ql={};const Yl=n,{Readable:Xl}=e,Zl=c,{promisify:Jl}=s,th=Jl(Yl.readdir),eh=Jl(Yl.stat),rh=Jl(Yl.lstat),nh=Jl(Yl.realpath),ih=new Set(["ENOENT","EPERM","EACCES","ELOOP"]),sh="files",oh="directories",ah="files_directories",ch="all",uh=[sh,oh,ah,ch],lh=t=>{if(void 0!==t){if("function"==typeof t)return t;if("string"==typeof t){const e=yo(t.trim());return t=>e(t.basename)}if(Array.isArray(t)){const e=[],r=[];for(const n of t){const t=n.trim();"!"===t.charAt(0)?r.push(yo(t.slice(1))):e.push(yo(t))}return r.length>0?e.length>0?t=>e.some((e=>e(t.basename)))&&!r.some((e=>e(t.basename))):t=>!r.some((e=>e(t.basename))):t=>e.some((e=>e(t.basename)))}}};class hh extends Xl{static get defaultOptions(){return{root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:sh,lstat:!1,depth:2147483648,alwaysStat:!1}}constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark||4096});const e={...hh.defaultOptions,...t},{root:r,type:n}=e;this._fileFilter=lh(e.fileFilter),this._directoryFilter=lh(e.directoryFilter);const i=e.lstat?rh:eh;"win32"===process.platform&&3===eh.length?this._stat=t=>i(t,{bigint:!0}):this._stat=i,this._maxDepth=e.depth,this._wantsDir=[oh,ah,ch].includes(n),this._wantsFile=[sh,ah,ch].includes(n),this._wantsEverything=n===ch,this._root=Zl.resolve(r),this._isDirent="Dirent"in Yl&&!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){const{path:e,depth:r,files:n=[]}=this.parent||{};if(n.length>0){const i=n.splice(0,t).map((t=>this._formatEntry(t,e)));for(const e of await Promise.all(i)){if(this.destroyed)return;const n=await this._getEntryType(e);"directory"===n&&this._directoryFilter(e)?(r<=this._maxDepth&&this.parents.push(this._exploreDir(e.fullPath,r+1)),this._wantsDir&&(this.push(e),t--)):("file"===n||this._includeAsFile(e))&&this._fileFilter(e)&&this._wantsFile&&(this.push(e),t--)}}else{const t=this.parents.pop();if(!t){this.push(null);break}if(this.parent=await t,this.destroyed)return}}}catch(t){this.destroy(t)}finally{this.reading=!1}}}async _exploreDir(t,e){let r;try{r=await th(t,this._rdOptions)}catch(t){this._onError(t)}return{files:r,depth:e,path:t}}async _formatEntry(t,e){let r;try{const n=this._isDirent?t.name:t,i=Zl.resolve(Zl.join(e,n));r={path:Zl.relative(this._root,i),fullPath:i,basename:n},r[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(t){this._onError(t)}return r}_onError(t){var e;e=t,ih.has(e.code)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){const e=t&&t[this._statsProp];if(e){if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){const e=t.fullPath;try{const t=await nh(e),r=await rh(t);if(r.isFile())return"file";if(r.isDirectory()){const r=t.length;return e.startsWith(t)&&e.substr(r,1)===Zl.sep?this._onError(new Error(`Circular symlink detected: "${e}" points to "${t}"`)):"directory"}}catch(t){this._onError(t)}}}}_includeAsFile(t){const e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}const fh=(t,e={})=>{let r=e.entryType||e.type;if("both"===r&&(r=ah),r&&(e.type=r),!t)throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");if("string"!=typeof t)throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(r&&!uh.includes(r))throw new Error(`readdirp: Invalid type passed. Use one of ${uh.join(", ")}`);return e.root=t,new hh(e)};fh.promise=(t,e={})=>new Promise(((r,n)=>{const i=[];fh(t,e).on("data",(t=>i.push(t))).on("end",(()=>r(i))).on("error",(t=>n(t)))})),fh.ReaddirpStream=hh,fh.default=fh,Ql=fh;var ph={};Object.defineProperty(ph,"__esModule",{value:!0});var dh; +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */dh=function(t,e){if("string"!=typeof t)throw new TypeError("expected path to be a string");if("\\"===t||"/"===t)return"/";var r=t.length;if(r<=1)return t;var n="";if(r>4&&"\\"===t[3]){var i=t[2];"?"!==i&&"."!==i||"\\\\"!==t.slice(0,2)||(t=t.slice(2),n="//")}var s=t.split(/[/\\]+/);return!1!==e&&""===s[s.length-1]&&s.pop(),n+s.join("/")};const gh={returnIndex:!1},_h=(t,e,r,n)=>{const i=Array.isArray(r),s=i?r[0]:r;if(!i&&"string"!=typeof s)throw new TypeError("anymatch: second argument must be a string: got "+Object.prototype.toString.call(s));const o=dh(s);for(let t=0;t{if(null==t)throw new TypeError("anymatch: specify first argument");const n="boolean"==typeof r?{returnIndex:r}:r,i=n.returnIndex||!1,s=(o=t,Array.isArray(o)?o:[o]);var o;const a=s.filter((t=>"string"==typeof t&&"!"===t.charAt(0))).map((t=>t.slice(1))).map((t=>yo(t,n))),c=s.filter((t=>"string"!=typeof t||"string"==typeof t&&"!"!==t.charAt(0))).map((t=>((t,e)=>{if("function"==typeof t)return t;if("string"==typeof t){const r=yo(t,e);return e=>t===e||r(e)}return t instanceof RegExp?e=>t.test(e):t=>!1})(t,n)));return null==e?(t,e=!1)=>_h(c,a,t,"boolean"==typeof e&&e):_h(c,a,e,i)};yh.default=yh;const mh=(ph=yh).default;var vh={};const bh=n,wh=c,{promisify:Eh}=s;var Sh;const Ah=c;var Rh;Rh=JSON.parse('["3dm","3ds","3g2","3gp","7z","a","aac","adp","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]');const Ph=new Set(Rh);Sh=t=>Ph.has(Ah.extname(t).slice(1).toLowerCase());const{sep:xh}=c,{platform:Ch}=process;var Oh=["listeners","errHandlers","rawEmitters"],kh=`.${xh}`,Dh=/\\/g,Th=/\/\//,jh=/[/\\]/,Fh=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Mh=/^\.[/\\]/,Lh={dot:!0},Ih=()=>{},Hh=t=>t,$h="win32"===Ch,Nh="darwin"===Ch,Bh="linux"===Ch;const Wh=Eh(bh.open),Gh=Eh(bh.stat),Uh=Eh(bh.lstat),Vh=Eh(bh.close),qh=Eh(bh.realpath),zh={lstat:Uh,stat:Gh},Kh=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},Qh=(t,e,r)=>{let n=t[e];n instanceof Set||(t[e]=n=new Set([n])),n.add(r)},Yh=(t,e,r)=>{const n=t[e];n instanceof Set?n.delete(r):n===r&&delete t[e]},Xh=t=>t instanceof Set?0===t.size:!t,Zh=new Map;function Jh(t,e,r,n,i){const s=(e,n)=>{r(t),i(e,n,{watchedPath:t}),n&&t!==n&&tf(wh.resolve(t,n),"listeners",wh.join(t,n))};try{return bh.watch(t,e,s)}catch(t){n(t)}}const tf=(t,e,r,n,i)=>{const s=Zh.get(t);s&&Kh(s[e],(t=>{t(r,n,i)}))},ef=(t,e,r,n)=>{const{listener:i,errHandler:s,rawEmitter:o}=n;let a,c=Zh.get(e);if(!r.persistent)return a=Jh(t,r,i,s,o),a.close.bind(a);if(c)Qh(c,"listeners",i),Qh(c,"errHandlers",s),Qh(c,"rawEmitters",o);else{if(a=Jh(t,r,tf.bind(null,e,"listeners"),s,tf.bind(null,e,"rawEmitters")),!a)return;a.on("error",(async r=>{const n=tf.bind(null,e,"errHandlers");if(c.watcherUnusable=!0,$h&&"EPERM"===r.code)try{const e=await Wh(t,"r");await Vh(e),n(r)}catch(t){}else n(r)})),c={listeners:i,errHandlers:s,rawEmitters:o,watcher:a},Zh.set(e,c)}return()=>{Yh(c,"listeners",i),Yh(c,"errHandlers",s),Yh(c,"rawEmitters",o),Xh(c.listeners)&&(c.watcher.close(),Zh.delete(e),Oh.forEach((t=>e=>{const r=t[e];r instanceof Set?r.clear():delete t[e]})(c)),c.watcher=void 0,Object.freeze(c))}},rf=new Map;vh=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){const r=this.fsw.options,n=wh.dirname(t),i=wh.basename(t);this.fsw._getWatchedDir(n).add(i);const s=wh.resolve(t),o={persistent:r.persistent};let a;return e||(e=Ih),r.usePolling?(o.interval=r.enableBinaryInterval&&Sh(i)?r.binaryInterval:r.interval,a=((t,e,r,n)=>{const{listener:i,rawEmitter:s}=n;let o=rf.get(e),a=new Set,c=new Set;const u=o&&o.options;return u&&(u.persistentr.interval)&&(a=o.listeners,c=o.rawEmitters,bh.unwatchFile(e),o=void 0),o?(Qh(o,"listeners",i),Qh(o,"rawEmitters",s)):(o={listeners:i,rawEmitters:s,options:r,watcher:bh.watchFile(e,r,((r,n)=>{Kh(o.rawEmitters,(t=>{t("change",e,{curr:r,prev:n})}));const i=r.mtimeMs;(r.size!==n.size||i>n.mtimeMs||0===i)&&Kh(o.listeners,(e=>e(t,r)))}))},rf.set(e,o)),()=>{Yh(o,"listeners",i),Yh(o,"rawEmitters",s),Xh(o.listeners)&&(rf.delete(e),bh.unwatchFile(e),o.options=o.watcher=void 0,Object.freeze(o))}})(t,s,o,{listener:e,rawEmitter:this.fsw._emitRaw})):a=ef(t,s,o,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),a}_handleFile(t,e,r){if(this.fsw.closed)return;const n=wh.dirname(t),i=wh.basename(t),s=this.fsw._getWatchedDir(n);let o=e;if(s.has(i))return;const a=async(e,r)=>{if(this.fsw._throttle("watch",t,5))if(r&&0!==r.mtimeMs){if(s.has(i)){const e=r.atimeMs,n=r.mtimeMs;(!e||e<=n||n!==o.mtimeMs)&&this.fsw._emit("change",t,r),o=r}}else try{const r=await Gh(t);if(this.fsw.closed)return;const n=r.atimeMs,i=r.mtimeMs;(!n||n<=i||i!==o.mtimeMs)&&this.fsw._emit("change",t,r),Bh&&o.ino!==r.ino?(this.fsw._closeFile(e),o=r,this.fsw._addPathCloser(e,this._watchWithNodeFs(t,a))):o=r}catch(t){this.fsw._remove(n,i)}},c=this._watchWithNodeFs(t,a);if((!r||!this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle("add",t,0))return;this.fsw._emit("add",t,e)}return c}async _handleSymlink(t,e,r,n){if(this.fsw.closed)return;const i=t.fullPath,s=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();const e=await qh(r);if(this.fsw.closed)return;return s.has(n)?this.fsw._symlinkPaths.get(i)!==e&&(this.fsw._symlinkPaths.set(i,e),this.fsw._emit("change",r,t.stats)):(s.add(n),this.fsw._symlinkPaths.set(i,e),this.fsw._emit("add",r,t.stats)),this.fsw._emitReady(),!0}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,r,n,i,s,o){if(t=wh.join(t,""),!r.hasGlob&&!(o=this.fsw._throttle("readdir",t,1e3)))return;const a=this.fsw._getWatchedDir(r.path),c=new Set;let u=this.fsw._readdirp(t,{fileFilter:t=>r.filterPath(t),directoryFilter:t=>r.filterDir(t),depth:0}).on("data",(async o=>{if(this.fsw.closed)return void(u=void 0);const l=o.path;let h=wh.join(t,l);c.add(l),o.stats.isSymbolicLink()&&await this._handleSymlink(o,t,h,l)||(this.fsw.closed?u=void 0:l!==n&&(n||a.has(l))||(this.fsw._incrReadyCount(),h=wh.join(i,wh.relative(i,h)),this._addToNodeFs(h,e,r,s+1)))})).on("error",this._boundHandleError);return new Promise((e=>u.once("end",(()=>{if(this.fsw.closed)return void(u=void 0);const l=!!o&&o.clear();e(),a.getChildren().filter((e=>e!==t&&!c.has(e)&&(!r.hasGlob||r.filterPath({fullPath:wh.resolve(t,e)})))).forEach((e=>{this.fsw._remove(t,e)})),u=void 0,l&&this._handleRead(t,!1,r,n,i,s,o)}))))}async _handleDir(t,e,r,n,i,s,o){const a=this.fsw._getWatchedDir(wh.dirname(t)),c=a.has(wh.basename(t));let u,l;r&&this.fsw.options.ignoreInitial||i||c||s.hasGlob&&!s.globFilter(t)||this.fsw._emit("addDir",t,e),a.add(wh.basename(t)),this.fsw._getWatchedDir(t);const h=this.fsw.options.depth;if((null==h||n<=h)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,r,s,i,t,n,u),this.fsw.closed))return;l=this._watchWithNodeFs(t,((e,r)=>{r&&0===r.mtimeMs||this._handleRead(e,!1,s,i,t,n,u)}))}return l}async _addToNodeFs(t,e,r,n,i){const s=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return s(),!1;const o=this.fsw._getWatchHelpers(t,n);!o.hasGlob&&r&&(o.hasGlob=r.hasGlob,o.globFilter=r.globFilter,o.filterPath=t=>r.filterPath(t),o.filterDir=t=>r.filterDir(t));try{const r=await zh[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,r))return s(),!1;const a=this.fsw.options.followSymlinks&&!t.includes("*")&&!t.includes("{");let c;if(r.isDirectory()){const s=wh.resolve(t),u=a?await qh(t):t;if(this.fsw.closed)return;if(c=await this._handleDir(o.watchPath,r,e,n,i,o,u),this.fsw.closed)return;s!==u&&void 0!==u&&this.fsw._symlinkPaths.set(s,u)}else if(r.isSymbolicLink()){const i=a?await qh(t):t;if(this.fsw.closed)return;const s=wh.dirname(o.watchPath);if(this.fsw._getWatchedDir(s).add(o.watchPath),this.fsw._emit("add",o.watchPath,r),c=await this._handleDir(s,r,e,n,t,o,i),this.fsw.closed)return;void 0!==i&&this.fsw._symlinkPaths.set(wh.resolve(t),i)}else c=this._handleFile(o.watchPath,r,e);return s(),this.fsw._addPathCloser(t,c),!1}catch(e){if(this.fsw._handleError(e))return s(),t}}};var nf={};const sf=n,of=c,{promisify:af}=s;let cf;try{cf=h("fsevents")}catch(t){process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR&&console.error(t)}if(cf){const t=process.version.match(/v(\d+)\.(\d+)/);if(t&&t[1]&&t[2]){const e=Number.parseInt(t[1],10),r=Number.parseInt(t[2],10);8===e&&r<16&&(cf=void 0)}}const uf=af(sf.stat),lf=af(sf.lstat),hf=af(sf.realpath),ff={stat:uf,lstat:lf},pf=new Map,df=new Set([69888,70400,71424,72704,73472,131328,131840,262912]),gf=(t,e)=>({stop:cf.watch(t,e)});const _f=t=>{let e=0;for(const r of pf.keys())if(0===r.indexOf(t)&&(e++,e>=10))return!0;return!1},yf=(t,e)=>{let r=0;for(;!t.indexOf(e)&&(t=of.dirname(t))!==e;)r++;return r},mf=(t,e)=>"directory"===t.type&&e.isDirectory()||"symlink"===t.type&&e.isSymbolicLink()||"file"===t.type&&e.isFile();var vf=()=>cf&&pf.size<128;(nf=class{constructor(t){this.fsw=t}checkIgnored(t,e){const r=this.fsw._ignoredPaths;if(this.fsw._isIgnored(t,e))return r.add(t),e&&e.isDirectory()&&r.add(t+"/**/*"),!0;r.delete(t),r.delete(t+"/**/*")}addOrChange(t,e,r,n,i,s,o,a){const c=i.has(s)?"change":"add";this.handleEvent(c,t,e,r,n,i,s,o,a)}async checkExists(t,e,r,n,i,s,o,a){try{const c=await uf(t);if(this.fsw.closed)return;mf(o,c)?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}catch(c){"EACCES"===c.code?this.addOrChange(t,e,r,n,i,s,o,a):this.handleEvent("unlink",t,e,r,n,i,s,o,a)}}handleEvent(t,e,r,n,i,s,o,a,c){if(!this.fsw.closed&&!this.checkIgnored(e))if("unlink"===t){const t="directory"===a.type;(t||s.has(o))&&this.fsw._remove(i,o,t)}else{if("add"===t){if("directory"===a.type&&this.fsw._getWatchedDir(e),"symlink"===a.type&&c.followSymlinks){const t=void 0===c.depth?void 0:yf(r,n)+1;return this._addToFsEvents(e,!1,!0,t)}this.fsw._getWatchedDir(i).add(o)}const s="directory"===a.type?t+"Dir":t;this.fsw._emit(s,e),"addDir"===s&&this._addToFsEvents(e,!1,!0)}}_watchWithFsEvents(t,e,r,n){if(this.fsw.closed||this.fsw._isIgnored(t))return;const i=this.fsw.options,s=function(t,e,r,n){let i=of.extname(t)?of.dirname(t):t;const s=of.dirname(i);let o=pf.get(i);_f(s)&&(i=s);const a=of.resolve(t),c=a!==e,u=(t,n,i)=>{c&&(t=t.replace(e,a)),t!==a&&t.indexOf(a+of.sep)||r(t,n,i)};let l=!1;for(const t of pf.keys())if(0===e.indexOf(of.resolve(t)+of.sep)){i=t,o=pf.get(i),l=!0;break}return o||l?o.listeners.add(u):(o={listeners:new Set([u]),rawEmitter:n,watcher:gf(i,((t,e)=>{if(!o.listeners.size)return;const r=cf.getInfo(t,e);o.listeners.forEach((n=>{n(t,e,r)})),o.rawEmitter(r.event,t,r)}))},pf.set(i,o)),()=>{const t=o.listeners;if(t.delete(u),!t.size&&(pf.delete(i),o.watcher))return o.watcher.stop().then((()=>{o.rawEmitter=o.watcher=void 0,Object.freeze(o)}))}}(t,e,(async(s,o,a)=>{if(this.fsw.closed)return;if(void 0!==i.depth&&yf(s,e)>i.depth)return;const c=r(of.join(t,of.relative(t,s)));if(n&&!n(c))return;const u=of.dirname(c),l=of.basename(c),h=this.fsw._getWatchedDir("directory"===a.type?c:u);if(df.has(o)||"unknown"===a.event)if("function"==typeof i.ignored){let t;try{t=await uf(c)}catch(t){}if(this.fsw.closed)return;if(this.checkIgnored(c,t))return;mf(a,t)?this.addOrChange(c,s,e,u,h,l,a,i):this.handleEvent("unlink",c,s,e,u,h,l,a,i)}else this.checkExists(c,s,e,u,h,l,a,i);else switch(a.event){case"created":case"modified":return this.addOrChange(c,s,e,u,h,l,a,i);case"deleted":case"moved":return this.checkExists(c,s,e,u,h,l,a,i)}}),this.fsw._emitRaw);return this.fsw._emitReady(),s}async _handleFsEventsSymlink(t,e,r,n){if(!this.fsw.closed&&!this.fsw._symlinkPaths.has(e)){this.fsw._symlinkPaths.set(e,!0),this.fsw._incrReadyCount();try{const e=await hf(t);if(this.fsw.closed)return;if(this.fsw._isIgnored(e))return this.fsw._emitReady();this.fsw._incrReadyCount(),this._addToFsEvents(e||t,(n=>{let i=t;return e&&e!==kh?i=n.replace(e,t):n!==kh&&(i=of.join(t,n)),r(i)}),!1,n)}catch(t){if(this.fsw._handleError(t))return this.fsw._emitReady()}}}emitAdd(t,e,r,n,i){const s=r(t),o=e.isDirectory(),a=this.fsw._getWatchedDir(of.dirname(s)),c=of.basename(s);o&&this.fsw._getWatchedDir(s),a.has(c)||(a.add(c),n.ignoreInitial&&!0!==i||this.fsw._emit(o?"addDir":"add",s,e))}initWatch(t,e,r,n){if(this.fsw.closed)return;const i=this._watchWithFsEvents(r.watchPath,of.resolve(t||r.watchPath),n,r.globFilter);this.fsw._addPathCloser(e,i)}async _addToFsEvents(t,e,r,n){if(this.fsw.closed)return;const i=this.fsw.options,s="function"==typeof e?e:Hh,o=this.fsw._getWatchHelpers(t);try{const e=await ff[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,e))throw null;if(e.isDirectory()){if(o.globFilter||this.emitAdd(s(t),e,s,i,r),n&&n>i.depth)return;this.fsw._readdirp(o.watchPath,{fileFilter:t=>o.filterPath(t),directoryFilter:t=>o.filterDir(t),...(a=i.depth-(n||0),isNaN(a)?{}:{depth:a})}).on("data",(t=>{if(this.fsw.closed)return;if(t.stats.isDirectory()&&!o.filterPath(t))return;const e=of.join(o.watchPath,t.path),{fullPath:n}=t;if(o.followSymlinks&&t.stats.isSymbolicLink()){const t=void 0===i.depth?void 0:yf(e,of.resolve(o.watchPath))+1;this._handleFsEventsSymlink(e,n,s,t)}else this.emitAdd(e,t.stats,s,i,r)})).on("error",Ih).on("end",(()=>{this.fsw._emitReady()}))}else this.emitAdd(o.watchPath,e,s,i,r),this.fsw._emitReady()}catch(t){t&&!this.fsw._handleError(t)||(this.fsw._emitReady(),this.fsw._emitReady())}var a;if(i.persistent&&!0!==r)if("function"==typeof e)this.initWatch(void 0,t,o,s);else{let e;try{e=await hf(o.watchPath)}catch(t){}this.initWatch(e,t,o,s)}}}).canUse=vf;const bf=Kl(ql.stat),wf=Kl(ql.readdir),Ef=(t=[])=>Array.isArray(t)?t:[t],Sf=(t,e=[])=>(t.forEach((t=>{Array.isArray(t)?Sf(t,e):e.push(t)})),e),Af=t=>{const e=Sf(Ef(t));if(!e.every((t=>"string"==typeof t)))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(Pf)},Rf=t=>{let e=t.replace(Dh,"/"),r=!1;for(e.startsWith("//")&&(r=!0);e.match(Th);)e=e.replace(Th,"/");return r&&(e="/"+e),e},Pf=t=>Rf(zl.normalize(Rf(t))),xf=(t="")=>e=>"string"!=typeof e?e:Pf(zl.isAbsolute(e)?e:zl.join(t,e)),Cf=(t,e)=>void 0===t[e];class Of{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){const{items:e}=this;e&&"."!==t&&".."!==t&&e.add(t)}async remove(t){const{items:e}=this;if(!e)return;if(e.delete(t),e.size>0)return;const r=this.path;try{await wf(r)}catch(t){this._removeWatcher&&this._removeWatcher(zl.dirname(r),zl.basename(r))}}has(t){const{items:e}=this;if(e)return e.has(t)}getChildren(){const{items:t}=this;if(t)return[...t.values()]}dispose(){this.items.clear(),delete this.path,delete this._removeWatcher,delete this.items,Object.freeze(this)}}class kf{constructor(t,e,r,n){this.fsw=n,this.path=t=t.replace(Mh,""),this.watchPath=e,this.fullWatchPath=zl.resolve(e),this.hasGlob=e!==t,""===t&&(this.hasGlob=!1),this.globSymlink=!(!this.hasGlob||!r)&&void 0,this.globFilter=!!this.hasGlob&&mh(t,void 0,Lh),this.dirParts=this.getDirParts(t),this.dirParts.forEach((t=>{t.length>1&&t.pop()})),this.followSymlinks=r,this.statMethod=r?"stat":"lstat"}checkGlobSymlink(t){return void 0===this.globSymlink&&(this.globSymlink=t.fullParentDir!==this.fullWatchPath&&{realPath:t.fullParentDir,linkPath:this.fullWatchPath}),this.globSymlink?t.fullPath.replace(this.globSymlink.realPath,this.globSymlink.linkPath):t.fullPath}entryPath(t){return zl.join(this.watchPath,zl.relative(this.watchPath,this.checkGlobSymlink(t)))}filterPath(t){const{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);const r=this.entryPath(t);return(!this.hasGlob||"function"!=typeof this.globFilter||this.globFilter(r))&&this.fsw._isntIgnored(r,e)&&this.fsw._hasReadPermissions(e)}getDirParts(t){if(!this.hasGlob)return[];const e=[];return(t.includes("{")?_s.expand(t):[t]).forEach((t=>{e.push(zl.relative(this.watchPath,t).split(jh))})),e}filterDir(t){if(this.hasGlob){const e=this.getDirParts(this.checkGlobSymlink(t));let r=!1;this.unmatchedGlob=!this.dirParts.some((t=>t.every(((t,n)=>("**"===t&&(r=!0),r||!e[0][n]||mh(t,e[0][n],Lh))))))}return!this.unmatchedGlob&&this.fsw._isntIgnored(this.entryPath(t),t.stats)}}class Df extends Vl{constructor(t){super();const e={};t&&Object.assign(e,t),this._watched=new Map,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._symlinkPaths=new Map,this._streams=new Set,this.closed=!1,Cf(e,"persistent")&&(e.persistent=!0),Cf(e,"ignoreInitial")&&(e.ignoreInitial=!1),Cf(e,"ignorePermissionErrors")&&(e.ignorePermissionErrors=!1),Cf(e,"interval")&&(e.interval=100),Cf(e,"binaryInterval")&&(e.binaryInterval=300),Cf(e,"disableGlobbing")&&(e.disableGlobbing=!1),e.enableBinaryInterval=e.binaryInterval!==e.interval,Cf(e,"useFsEvents")&&(e.useFsEvents=!e.usePolling);vf()||(e.useFsEvents=!1),Cf(e,"usePolling")&&!e.useFsEvents&&(e.usePolling=Nh);const r=process.env.CHOKIDAR_USEPOLLING;if(void 0!==r){const t=r.toLowerCase();e.usePolling="false"!==t&&"0"!==t&&("true"===t||"1"===t||!!t)}const n=process.env.CHOKIDAR_INTERVAL;n&&(e.interval=Number.parseInt(n,10)),Cf(e,"atomic")&&(e.atomic=!e.usePolling&&!e.useFsEvents),e.atomic&&(this._pendingUnlinks=new Map),Cf(e,"followSymlinks")&&(e.followSymlinks=!0),Cf(e,"awaitWriteFinish")&&(e.awaitWriteFinish=!1),!0===e.awaitWriteFinish&&(e.awaitWriteFinish={});const i=e.awaitWriteFinish;i&&(i.stabilityThreshold||(i.stabilityThreshold=2e3),i.pollInterval||(i.pollInterval=100),this._pendingWrites=new Map),e.ignored&&(e.ignored=Ef(e.ignored));let s=0;this._emitReady=()=>{s++,s>=this._readyCount&&(this._emitReady=Ih,this._readyEmitted=!0,process.nextTick((()=>this.emit("ready"))))},this._emitRaw=(...t)=>this.emit("raw",...t),this._readyEmitted=!1,this.options=e,e.useFsEvents?this._fsEventsHandler=new nf(this):this._nodeFsHandler=new vh(this),Object.freeze(e)}add(t,e,r){const{cwd:n,disableGlobbing:i}=this.options;this.closed=!1;let s=Af(t);return n&&(s=s.map((t=>{const e=((t,e)=>zl.isAbsolute(t)?t:t.startsWith("!")?"!"+zl.join(e,t.slice(1)):zl.join(e,t))(t,n);return i||!rs(t)?e:dh(e)}))),s=s.filter((t=>t.startsWith("!")?(this._ignoredPaths.add(t.slice(1)),!1):(this._ignoredPaths.delete(t),this._ignoredPaths.delete(t+"/**"),this._userIgnored=void 0,!0))),this.options.useFsEvents&&this._fsEventsHandler?(this._readyCount||(this._readyCount=s.length),this.options.persistent&&(this._readyCount*=2),s.forEach((t=>this._fsEventsHandler._addToFsEvents(t)))):(this._readyCount||(this._readyCount=0),this._readyCount+=s.length,Promise.all(s.map((async t=>{const n=await this._nodeFsHandler._addToNodeFs(t,!r,0,0,e);return n&&this._emitReady(),n}))).then((t=>{this.closed||t.filter((t=>t)).forEach((t=>{this.add(zl.dirname(t),zl.basename(e||t))}))}))),this}unwatch(t){if(this.closed)return this;const e=Af(t),{cwd:r}=this.options;return e.forEach((t=>{zl.isAbsolute(t)||this._closers.has(t)||(r&&(t=zl.join(r,t)),t=zl.resolve(t)),this._closePath(t),this._ignoredPaths.add(t),this._watched.has(t)&&this._ignoredPaths.add(t+"/**"),this._userIgnored=void 0})),this}close(){if(this.closed)return this._closePromise;this.closed=!0,this.removeAllListeners();const t=[];return this._closers.forEach((e=>e.forEach((e=>{const r=e();r instanceof Promise&&t.push(r)})))),this._streams.forEach((t=>t.destroy())),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach((t=>t.dispose())),["closers","watched","streams","symlinkPaths","throttled"].forEach((t=>{this[`_${t}`].clear()})),this._closePromise=t.length?Promise.all(t).then((()=>{})):Promise.resolve(),this._closePromise}getWatched(){const t={};return this._watched.forEach(((e,r)=>{const n=this.options.cwd?zl.relative(this.options.cwd,r):r;t[n||"."]=e.getChildren().sort()})),t}emitWithAll(t,e){this.emit(...e),"error"!==t&&this.emit("all",...e)}async _emit(t,e,r,n,i){if(this.closed)return;const s=this.options;$h&&(e=zl.normalize(e)),s.cwd&&(e=zl.relative(s.cwd,e));const o=[t,e];void 0!==i?o.push(r,n,i):void 0!==n?o.push(r,n):void 0!==r&&o.push(r);const a=s.awaitWriteFinish;let c;if(a&&(c=this._pendingWrites.get(e)))return c.lastChange=new Date,this;if(s.atomic){if("unlink"===t)return this._pendingUnlinks.set(e,o),setTimeout((()=>{this._pendingUnlinks.forEach(((t,e)=>{this.emit(...t),this.emit("all",...t),this._pendingUnlinks.delete(e)}))}),"number"==typeof s.atomic?s.atomic:100),this;"add"===t&&this._pendingUnlinks.has(e)&&(t=o[0]="change",this._pendingUnlinks.delete(e))}if(a&&("add"===t||"change"===t)&&this._readyEmitted){const r=(e,r)=>{e?(t=o[0]="error",o[1]=e,this.emitWithAll(t,o)):r&&(o.length>2?o[2]=r:o.push(r),this.emitWithAll(t,o))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,r),this}if("change"===t){if(!this._throttle("change",e,50))return this}if(s.alwaysStat&&void 0===r&&("add"===t||"addDir"===t||"change"===t)){const t=s.cwd?zl.join(s.cwd,e):e;let r;try{r=await bf(t)}catch(t){}if(!r||this.closed)return;o.push(r)}return this.emitWithAll(t,o),this}_handleError(t){const e=t&&t.code;return t&&"ENOENT"!==e&&"ENOTDIR"!==e&&(!this.options.ignorePermissionErrors||"EPERM"!==e&&"EACCES"!==e)&&this.emit("error",t),t||this.closed}_throttle(t,e,r){this._throttled.has(t)||this._throttled.set(t,new Map);const n=this._throttled.get(t),i=n.get(e);if(i)return i.count++,!1;let s;const o=()=>{const t=n.get(e),r=t?t.count:0;return n.delete(e),clearTimeout(s),t&&clearTimeout(t.timeoutObject),r};s=setTimeout(o,r);const a={timeoutObject:s,clear:o,count:0};return n.set(e,a),a}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,r,n){let i,s=t;this.options.cwd&&!zl.isAbsolute(t)&&(s=zl.join(this.options.cwd,t));const o=new Date,a=r=>{ql.stat(s,((s,o)=>{if(s||!this._pendingWrites.has(t))return void(s&&"ENOENT"!==s.code&&n(s));const c=Number(new Date);r&&o.size!==r.size&&(this._pendingWrites.get(t).lastChange=c);c-this._pendingWrites.get(t).lastChange>=e?(this._pendingWrites.delete(t),n(void 0,o)):i=setTimeout(a,this.options.awaitWriteFinish.pollInterval,o)}))};this._pendingWrites.has(t)||(this._pendingWrites.set(t,{lastChange:o,cancelWait:()=>(this._pendingWrites.delete(t),clearTimeout(i),r)}),i=setTimeout(a,this.options.awaitWriteFinish.pollInterval))}_getGlobIgnored(){return[...this._ignoredPaths.values()]}_isIgnored(t,e){if(this.options.atomic&&Fh.test(t))return!0;if(!this._userIgnored){const{cwd:t}=this.options,e=this.options.ignored,r=e&&e.map(xf(t)),n=Ef(r).filter((t=>"string"==typeof t&&!rs(t))).map((t=>t+"/**")),i=this._getGlobIgnored().map(xf(t)).concat(r,n);this._userIgnored=mh(i,void 0,Lh)}return this._userIgnored([t,e])}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t,e){const r=e||this.options.disableGlobbing||!rs(t)?t:es(t),n=this.options.followSymlinks;return new kf(t,r,n,this)}_getWatchedDir(t){this._boundRemove||(this._boundRemove=this._remove.bind(this));const e=zl.resolve(t);return this._watched.has(e)||this._watched.set(e,new Of(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){if(this.options.ignorePermissionErrors)return!0;const e=511&(t&&Number.parseInt(t.mode,10)),r=Number.parseInt(e.toString(8)[0],10);return Boolean(4&r)}_remove(t,e,r){const n=zl.join(t,e),i=zl.resolve(n);if(r=null!=r?r:this._watched.has(n)||this._watched.has(i),!this._throttle("remove",n,100))return;r||this.options.useFsEvents||1!==this._watched.size||this.add(t,e,!0);this._getWatchedDir(n).getChildren().forEach((t=>this._remove(n,t)));const s=this._getWatchedDir(t),o=s.has(e);s.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let a=n;if(this.options.cwd&&(a=zl.relative(this.options.cwd,n)),this.options.awaitWriteFinish&&this._pendingWrites.has(a)){if("add"===this._pendingWrites.get(a).cancelWait())return}this._watched.delete(n),this._watched.delete(i);const c=r?"unlinkDir":"unlink";o&&!this._isIgnored(n)&&this._emit(c,n),this.options.useFsEvents||this._closePath(n)}_closePath(t){this._closeFile(t);const e=zl.dirname(t);this._getWatchedDir(e).remove(zl.basename(t))}_closeFile(t){const e=this._closers.get(t);e&&(e.forEach((t=>t())),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(e)}_readdirp(t,e){if(this.closed)return;const r={type:"all",alwaysStat:!0,lstat:!0,...e};let n=Ql(t,r);return this._streams.add(n),n.once("close",(()=>{n=void 0})),n.once("end",(()=>{n&&(this._streams.delete(n),n=void 0)})),n}}var Tf=Df;Ul.FSWatcher=Tf;var jf=(t,e)=>{const r=new Df(e);return r.add(t),r};Ul.watch=jf;var Ff=function(t){if(t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var e=Mf();if(e&&e.has(t))return e.get(t);var r={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}r.default=t,e&&e.set(t,r);return r}(Ul);function Mf(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return Mf=function(){return t},t}function Lf(t){return t&&t.__esModule?t:{default:t}}class If extends yn.EventEmitter{constructor(){super();const t=this.rebuildCache.bind(this);this._projectChangeWatcher=atom.project.onDidChangePaths(t);const e=this._onDidChangeFiles.bind(this);this._projectWatcher=atom.project.onDidChangeFiles(e),this._repositories=[],this._filePathsByProjectDirectory=new Map,this._filePathsByDirectory=new Map,this._fileWatchersByDirectory=new Map,this.updateConfig()}updateConfig(){this.config={excludeVcsIgnoredPaths:atom.config.get("core.excludeVcsIgnoredPaths"),ignoreSubmodules:atom.config.get("autocomplete-paths.ignoreSubmodules"),shouldIgnoredNames:atom.config.get("autocomplete-paths.ignoredNames"),ignoredNames:atom.config.get("core.ignoredNames"),ignoredPatterns:atom.config.get("autocomplete-paths.ignoredPatterns"),maxFileCount:atom.config.get("autocomplete-paths.maxFileCount")}}async rebuildCache(){this.dispose(),this._cancelled=!1,this.emit("rebuild-cache"),await this._cacheProjectPathsAndRepositories();const t=await this._cachePaths();return await this._addWatchers(),this.emit("rebuild-cache-done"),t}getFilePathsForProjectDirectory(t,e=null){const r=this._filePathsByProjectDirectory.get(t.path)||[];return e?r.filter((t=>0===t.indexOf(e))):r}dispose(t){this._fileWatchersByDirectory.forEach((async t=>{await t.close()})),this._fileWatchersByDirectory.clear(),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),this._repositories=[],this._projectWatcher&&(this._projectWatcher.dispose(),this._projectWatcher=null),t&&this._projectChangeWatcher&&(this._projectChangeWatcher.dispose(),this._projectChangeWatcher=null)}_isPathIgnored(t){let e=!1;return this.config.excludeVcsIgnoredPaths&&this._repositories.forEach((r=>{if(e)return;const n=this.config.ignoreSubmodules&&r.isSubmodule(t);(r.isPathIgnored(t)||n)&&(e=!0)})),this.config.shouldIgnoredNames&&this.config.ignoredNames.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{matchBase:!0,dot:!0}))})),this.config.ignoredPatterns&&this.config.ignoredPatterns.forEach((r=>{e||(e=e||(0,Kn.default)(t,r,{dot:!0}))})),e}async _cacheProjectPathsAndRepositories(){this._projectDirectories=atom.project.getDirectories();const t=this._projectDirectories.length,e=new Array(t);for(let r=0;rnull!==t))}async _addWatchers(){await Promise.all(this._projectDirectories.map((t=>this._addWatcherForDirectory(t))))}async _addWatcherForDirectory(t){let e=this._fileWatchersByDirectory.get(t);void 0!==e&&"function"==typeof e.close&&await e.close();const r=t.getPath(),n=await this._getAllIgnoredGlob(r);e=Ff.watch([r,...n],{persistent:!0}).on("add",(e=>{this.onAddFile(t,e)})).on("unlink",(e=>{this.onRemoveFile(t,e)})).on("addDir",(e=>{this.onAddDir(t,e)})).on("unlinkDir",(e=>{this.onRemoveDir(t,e)})),this._fileWatchersByDirectory.set(t,e)}onAddFile(t,e){this.emit("rebuild-cache");const r=this._filePathsByProjectDirectory.get(t.path);r.push(e),this._filePathsByProjectDirectory.set(t.path,r),this.emit("rebuild-cache-done")}onRemoveFile(t,e){this.emit("rebuild-cache");const r=this._filePathsByProjectDirectory.get(t.path);for(let t=0;t{t.contains(r.path)&&(await await e.close(),this._fileWatchersByDirectory.delete(r))}))}_removeFilePathsForDirectory(t,e){let r=this._filePathsByProjectDirectory.get(t.path);r&&(r=r.filter((t=>!e.contains(t))),this._filePathsByProjectDirectory.set(t.path,r),this._filePathsByDirectory.delete(e.path))}_onDidChangeFiles(t){t.filter((t=>"modified"!==t.action)).forEach((t=>{if(!this._projectDirectories)return;const{action:e,path:r,oldPath:n}=t,i=this._projectDirectories.find((t=>0===r.indexOf(t.path)));if(!i)return;const s=i.path;if(this._isPathIgnored(r))return;const o=this._filePathsByProjectDirectory.get(s)||[];switch(e){case"created":o.push(r);break;case"deleted":{const t=o.indexOf(r);t>-1&&o.splice(t,1);break}case"renamed":{const t=o.indexOf(n);t>-1&&(o[t]=r);break}default:console.error(`unkown _onDidChangeFiles action: ${e}`)}this._filePathsByProjectDirectory.has(s)||this._filePathsByProjectDirectory.set(s,o)}))}_cachePaths(){try{return this._cachePathsWithGlob()}catch(t){return console.error(t),this._cachePathsWithAtom()}}_cachePathsForDirectory(t,e){try{return this._cachePathsForDirectoryWithGlob(e.path)}catch(r){return console.error(r),this._cachePathsForDirectoryWithAtom(t,e)}}async _cachePathsWithGlob(){return await Promise.all(this._projectDirectories.map((t=>this._cachePathsForDirectoryWithGlob(t.path))))}async _getIgnoredPatternsGlob(t){const e=[];this.config.shouldIgnoredNames&&e.push(...this.config.ignoredNames),this.config.ignoredPatterns&&e.push(...this.config.ignoredPatterns);const r=e.length,n=new Array(r);for(let i=0;ithis._cachePathsForDirectoryWithAtom(t,t))))}async _cachePathsForDirectoryWithAtom(t,e){if(this._cancelled)return[];const r=await this._getDirectoryEntries(e);if(this._cancelled)return[];const n=[],i=[];for(let t=0,e=r.length;tthis.config.maxFileCount&&!this._cancelled?(atom.notifications.addError("autocomplete-paths",{description:`Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,dismissable:!0}),this._filePathsByProjectDirectory.clear(),this._filePathsByDirectory.clear(),void(this._cancelled=!0)):(this._filePathsByProjectDirectory.set(t.path,(0,Yn.union)(s,n)),s=this._filePathsByDirectory.get(e.path)||[],this._filePathsByDirectory.set(e.path,(0,Yn.union)(s,n)),Promise.all(i.map((e=>this._cachePathsForDirectoryWithAtom(t,e)))))}}gn=If,dn.default=gn;var Hf=Vf(dn=dn.default),$f=t,Nf={};Object.defineProperty(Nf,"__esModule",{value:!0});var Bf=void 0;Nf.DefaultScopes=Bf;const Wf=["import\\s+.*?from\\s+['\"]","import\\s+['\"]","require\\(['\"]","define\\(\\[?['\"]"],Gf=["js","jsx","ts","tsx","coffee","json"],Uf=[["\\.jsx?$",""],["\\.ts$",""],["\\.coffee$",""]];function Vf(t){return t&&t.__esModule?t:{default:t}}Bf=[{scopes:["source.js","source.js.jsx","source.coffee","source.coffee.jsx","source.ts","source.tsx","javascript","source.flow"],prefixes:Wf,extensions:Gf,relative:!0,replaceOnInsert:[["([\\/]?index)?\\.jsx?$",""],["([\\/]?index)?\\.ts$",""],["([\\/]?index)?\\.coffee$",""]]},{scopes:["text.html.vue"],prefixes:Wf,extensions:Gf.concat("vue"),relative:!0,replaceOnInsert:Uf},{scopes:["text.html.vue"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["css","sass","scss","less","styl"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.coffee","source.coffee.jsx"],prefixes:["require\\s+['\"]","define\\s+\\[?['\"]"],extensions:Gf,relative:!0,replaceOnInsert:Uf},{scopes:["source.php"],prefixes:["require_once\\(['\"]","include\\(['\"]"],extensions:["php"],relative:!0},{scopes:["source.sass","source.css.scss","source.css.less","source.stylus"],prefixes:["@import[\\(|\\s+]?['\"]"],extensions:["sass","scss","css"],relative:!0,replaceOnInsert:[["(/)?_([^/]*?)$","$1$2"]]},{scopes:["source.css"],prefixes:["@import\\s+['\"]?","@import\\s+url\\(['\"]?"],extensions:["css"],relative:!0},{scopes:["source.css","source.sass","source.css.less","source.css.scss","source.stylus"],prefixes:["url\\(['\"]?"],extensions:["png","gif","jpeg","jpg","woff","woff2","ttf","svg","otf"],relative:!0},{scopes:["source.c","source.cpp"],prefixes:["^\\s*#include\\s+['\"]"],extensions:["h","hpp"],relative:!0,includeCurrentDirectory:!1},{scopes:["source.lua"],prefixes:["require[\\s+|\\(]['\"]"],extensions:["lua"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.lua$",""]]},{scopes:["source.ruby"],prefixes:["^\\s*require[\\s+|\\(]['\"]"],extensions:["rb"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\.rb$",""]]},{scopes:["source.python"],prefixes:["^\\s*from\\s+","^\\s*import\\s+"],extensions:["py"],relative:!0,includeCurrentDirectory:!1,replaceOnInsert:[["\\/","."],["\\\\","."],["\\.py$",""]]}],Nf.DefaultScopes=Bf;class qf extends P.EventEmitter{constructor(){super(),this.reloadScopes(),this._pathsCache=new Hf.default,this._isReady=!1,this._onRebuildCache=this._onRebuildCache.bind(this),this._onRebuildCacheDone=this._onRebuildCacheDone.bind(this),this._pathsCache.on("rebuild-cache",this._onRebuildCache),this._pathsCache.on("rebuild-cache-done",this._onRebuildCacheDone)}reloadScopes(){this._scopes=atom.config.get("autocomplete-paths.scopes").slice(0)||[],atom.config.get("autocomplete-paths.ignoreBuiltinScopes")||(this._scopes=this._scopes.concat(Nf.DefaultScopes));for(const t in v.OptionScopes)atom.config.get(`autocomplete-paths.${t}`)&&(this._scopes=this._scopes.slice(0).concat(v.OptionScopes[t]))}_onRebuildCache(){this.emit("rebuild-cache")}_onRebuildCacheDone(){this.emit("rebuild-cache-done")}_getSuggestionsForScope(t,e,r){const n=Kf(e).substr(r.index+r[0].length),i=n.match(/[/\\|]$/),s=0===n.indexOf("./")||0===n.indexOf("../"),o=x.default.parse(n);i&&(o.dir=x.default.join(o.dir,o.base),o.base="",o.name="");const a=function(t){const e=t.getBuffer().getPath();let r=null;return atom.project.getDirectories().forEach((t=>{t.contains(e)&&(r=t)})),r}(e.editor);if(!a)return Promise.resolve([]);const c=x.default.dirname(e.editor.getPath()),u=x.default.resolve(c,o.dir);let l=s?this._pathsCache.getFilePathsForProjectDirectory(a,u):this._pathsCache.getFilePathsForProjectDirectory(a);const h=s?o.base:n,{extensions:f}=t;if(f){const t=new RegExp(`.(${f.join("|")})$`);l=l.filter((e=>t.test(e)))}h&&(l=(0,$f.filter)(l,h,{maxResults:10}));const p=l.map((r=>{const i=atom.config.get("autocomplete-paths.normalizeSlashes"),o=atom.project.relativizePath(r)[1];let a=o;s&&(a=x.default.relative(u,r)),i&&(a=(0,pn.default)(a));let c=x.default.relative(x.default.dirname(e.editor.getPath()),r);i&&(c=(0,pn.default)(c)),!1!==t.relative&&(r=c,!1!==t.includeCurrentDirectory&&"."!==r[0]&&(r=`./${r}`)),t.projectRelativePath&&(r=(0,pn.default)(o)),t.replaceOnInsert&&t.replaceOnInsert.forEach((([t,e])=>{const n=new RegExp(t);n.test(r)&&(r=r.replace(n,e))}));const l=c.split(x.default.sep).length;return{text:r,replacementPrefix:n,displayText:a,type:"import",iconHTML:'',score:(0,$f.score)(a,e.prefix),distanceToFile:l}})),d=p.length;if(p.length){const t=Or(p,(t=>t.distanceToFile)).distanceToFile;p.forEach(((e,r)=>{e.score=d-r+(t-e.distanceToFile)})),p.sort(((t,e)=>e.score-t.score))}return Promise.resolve(p)}async getSuggestions(t){const e=this._scopes.map((e=>[e,zf(e,t)])).filter((t=>t[1])).map((([e,r])=>this._getSuggestionsForScope(e,t,r))),r=Yr(await Promise.all(e));return!!r.length&&r}async rebuildCache(){const t=await this._pathsCache.rebuildCache();return this._isReady=!0,t}isReady(){return this._isReady}get suggestionPriority(){return atom.config.get("autocomplete-paths.suggestionPriority")}get fileCount(){return atom.project.getDirectories().reduce(((t,e)=>t+this._pathsCache.getFilePathsForProjectDirectory(e).length),0)}dispose(){this._pathsCache.removeListener("rebuild-cache",this._onRebuildCache),this._pathsCache.removeListener("rebuild-cache-done",this._onRebuildCacheDone),this._pathsCache.dispose(!0)}}function zf(t,e){const r=Array.isArray(t.scopes)?t.scopes:[t.scopes];if(!(en(e.scopeDescriptor.getScopesArray(),r).length>0))return!1;const n=Kf(e);let i=null;return(Array.isArray(t.prefixes)?t.prefixes:[t.prefixes]).forEach((t=>{const e=new RegExp(t,"i");i=i||n.match(e)})),i}function Kf(t){const{editor:e,bufferPosition:r}=t;return e.getTextInRange([[r.row,0],r])}A=qf,S.default=A,qf.prototype.selector="*",qf.prototype.inclusionPriority=1,S=S.default;var Qf,Yf=(Qf=S)&&Qf.__esModule?Qf:{default:Qf};const Xf=new a.CompositeDisposable;let Zf,Jf,tp,ep,rp,np;function ip(){Jf?ep||(rp=document.createElement("autocomplete-paths-status-bar"),rp.innerHTML="Rebuilding paths cache...",ep=Jf.addRightTile({item:rp,priority:100}),(Zf||(sp(),Zf))&&(tp=setInterval((()=>{const t=Zf.fileCount;t>0&&(rp.innerHTML=`Rebuilding paths cache... ${t} files`)}),500))):np=!0}function sp(){return Zf||(Zf=new Yf.default,Zf.on("rebuild-cache",(()=>{ip()})),Zf.on("rebuild-cache-done",(()=>{tp&&clearInterval(tp),ep&&ep.destroy(),ep=null,rp=null})),Zf.rebuildCache()),Zf} //# sourceMappingURL=autocomplete-paths.js.map diff --git a/dist/autocomplete-paths.js.map b/dist/autocomplete-paths.js.map index 5183f4d..dbbb5f4 100644 --- a/dist/autocomplete-paths.js.map +++ b/dist/autocomplete-paths.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["./node_modules/.pnpm/@parcel/scope-hoisting@2.0.0-nightly.478/node_modules/@parcel/scope-hoisting/lib/helpers.js","./lib/autocomplete-paths.js","./lib/config/option-scopes.js","./lib/config/index.js","./lib/paths-provider.js","./node_modules/underscore/modules/_setup.js","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index-default.js","./node_modules/slash/index.js","./lib/paths-cache.js","./node_modules/minimatch/minimatch.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./lib/utils.js","./lib/path-utils.js","./node_modules/is-extglob/index.js","./node_modules/is-glob/index.js","./node_modules/is-invalid-path/index.js","./node_modules/is-valid-path/index.js","./node_modules/fast-glob/out/managers/tasks.js","./node_modules/fast-glob/out/utils/index.js","./node_modules/fast-glob/out/utils/array.js","./node_modules/fast-glob/out/utils/errno.js","./node_modules/fast-glob/out/utils/fs.js","./node_modules/fast-glob/out/utils/path.js","./node_modules/fast-glob/out/utils/pattern.js","./node_modules/glob-parent/index.js","./node_modules/micromatch/index.js","./node_modules/ret/lib/sets.js","./node_modules/ret/lib/util.js","./node_modules/ret/lib/index.js","./node_modules/ret/lib/positions.js","./node_modules/ret/lib/types.js","./node_modules/safe-regex/index.js","./node_modules/isobject/index.js","./node_modules/kind-of/index.js","./node_modules/is-accessor-descriptor/index.js","./node_modules/is-data-descriptor/index.js","./node_modules/is-descriptor/index.js","./node_modules/define-property/index.js","./node_modules/to-regex/index.js","./node_modules/extend-shallow/index.js","./node_modules/is-extendable/index.js","./node_modules/regex-not/index.js","./node_modules/array-unique/index.js","./node_modules/split-string/index.js","./node_modules/braces/lib/utils.js","./node_modules/arr-flatten/index.js","./node_modules/fill-range/index.js","./node_modules/is-number/index.js","./node_modules/repeat-string/index.js","./node_modules/to-regex-range/index.js","./node_modules/braces/lib/compilers.js","./node_modules/repeat-element/index.js","./node_modules/snapdragon-node/index.js","./node_modules/snapdragon-util/index.js","./node_modules/braces/lib/parsers.js","./node_modules/base/index.js","./node_modules/component-emitter/index.js","./node_modules/object-visit/index.js","./node_modules/map-visit/index.js","./node_modules/collection-visit/index.js","./node_modules/to-object-path/index.js","./node_modules/arr-union/index.js","./node_modules/get-value/index.js","./node_modules/is-plain-object/index.js","./node_modules/set-value/index.js","./node_modules/union-value/index.js","./node_modules/cache-base/index.js","./node_modules/has-values/index.js","./node_modules/has-value/index.js","./node_modules/unset-value/index.js","./node_modules/mixin-deep/index.js","./node_modules/for-in/index.js","./node_modules/pascalcase/index.js","./node_modules/class-utils/index.js","./node_modules/copy-descriptor/index.js","./node_modules/object-copy/index.js","./node_modules/static-extend/index.js","./node_modules/snapdragon/index.js","./node_modules/use/index.js","./node_modules/snapdragon/lib/compiler.js","./node_modules/debug/src/browser.js","./node_modules/ms/index.js","./node_modules/debug/src/common.js","./node_modules/source-map/lib/base64.js","./node_modules/source-map/lib/base64-vlq.js","./node_modules/source-map/lib/util.js","./node_modules/source-map/lib/array-set.js","./node_modules/source-map/lib/source-map-generator.js","./node_modules/source-map/lib/mapping-list.js","./node_modules/source-map/source-map.js","./node_modules/source-map/lib/binary-search.js","./node_modules/source-map/lib/source-map-consumer.js","./node_modules/source-map/lib/quick-sort.js","./node_modules/source-map/lib/source-node.js","./node_modules/source-map-url/source-map-url.js","./node_modules/resolve-url/resolve-url.js","./node_modules/source-map-resolve/source-map-resolve.js","./node_modules/snapdragon/lib/utils.js","./node_modules/snapdragon/lib/source-maps.js","./node_modules/snapdragon/lib/parser.js","./node_modules/map-cache/index.js","./node_modules/snapdragon/lib/position.js","./node_modules/braces/lib/braces.js","./node_modules/braces/index.js","./node_modules/picomatch/lib/picomatch.js","./node_modules/picomatch/lib/utils.js","./node_modules/picomatch/lib/constants.js","./node_modules/picomatch/lib/scan.js","./node_modules/picomatch/lib/parse.js","./node_modules/picomatch/index.js","./node_modules/fast-glob/out/utils/stream.js","./node_modules/merge2/index.js","./node_modules/fast-glob/out/utils/string.js","./node_modules/fast-glob/out/providers/async.js","./node_modules/fast-glob/out/readers/stream.js","./node_modules/@nodelib/fs.stat/out/index.js","./node_modules/@nodelib/fs.stat/out/providers/async.js","./node_modules/@nodelib/fs.stat/out/providers/sync.js","./node_modules/@nodelib/fs.stat/out/settings.js","./node_modules/@nodelib/fs.stat/out/adapters/fs.js","./node_modules/@nodelib/fs.walk/out/index.js","./node_modules/@nodelib/fs.walk/out/providers/async.js","./node_modules/@nodelib/fs.walk/out/readers/async.js","./node_modules/@nodelib/fs.scandir/out/index.js","./node_modules/@nodelib/fs.scandir/out/providers/async.js","./node_modules/run-parallel/index.js","./node_modules/queue-microtask/index.js","./node_modules/@nodelib/fs.scandir/out/constants.js","./node_modules/@nodelib/fs.scandir/out/utils/index.js","./node_modules/@nodelib/fs.scandir/out/utils/fs.js","./node_modules/@nodelib/fs.scandir/out/providers/common.js","./node_modules/@nodelib/fs.scandir/out/providers/sync.js","./node_modules/@nodelib/fs.scandir/out/settings.js","./node_modules/@nodelib/fs.scandir/out/adapters/fs.js","./node_modules/fastq/queue.js","./node_modules/reusify/reusify.js","./node_modules/@nodelib/fs.walk/out/readers/common.js","./node_modules/@nodelib/fs.walk/out/readers/reader.js","./node_modules/@nodelib/fs.walk/out/providers/stream.js","./node_modules/@nodelib/fs.walk/out/providers/sync.js","./node_modules/@nodelib/fs.walk/out/readers/sync.js","./node_modules/@nodelib/fs.walk/out/settings.js","./node_modules/fast-glob/out/readers/reader.js","./node_modules/fast-glob/out/providers/provider.js","./node_modules/fast-glob/out/providers/filters/deep.js","./node_modules/fast-glob/out/providers/matchers/partial.js","./node_modules/fast-glob/out/providers/matchers/matcher.js","./node_modules/fast-glob/out/providers/filters/entry.js","./node_modules/fast-glob/out/providers/filters/error.js","./node_modules/fast-glob/out/providers/transformers/entry.js","./node_modules/fast-glob/out/providers/stream.js","./node_modules/fast-glob/out/providers/sync.js","./node_modules/fast-glob/out/readers/sync.js","./node_modules/fast-glob/out/settings.js","./node_modules/fast-glob/out/index.js","./lib/config/default-scopes.js"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use babel\"\nexport { config } from \"./config\"\nimport PathsProvider from \"./paths-provider\"\nimport { CompositeDisposable } from \"atom\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nlet subscriptions = new CompositeDisposable()\nlet _provider\nlet _statusBar\nlet _statusBarInterval\nlet _statusBarTile\nlet _statusBarElement\nlet _displayStatusBarItemOnConsumption\n\nexport function activate() {\n subscriptions.add(\n atom.commands.add(\"atom-workspace\", {\n \"autocomplete-paths:rebuild-cache\": () => {\n _provider.rebuildCache()\n },\n })\n )\n\n const cacheOptions = [\n \"core.ignoredNames\",\n \"core.excludeVcsIgnoredPaths\",\n \"autocomplete-paths.ignoreSubmodules\",\n \"autocomplete-paths.ignoredNames\",\n \"autocomplete-paths.ignoredPatterns\",\n \"autocomplete-paths.maxFileCount\",\n ]\n cacheOptions.forEach((cacheOption) => {\n subscriptions.add(\n atom.config.observe(cacheOption, () => {\n if (!_provider) return\n _provider._pathsCache.updateConfig()\n _provider.rebuildCache()\n })\n )\n })\n\n const scopeOptions = [\"autocomplete-paths.scopes\"]\n for (let key in OptionScopes) {\n scopeOptions.push(`autocomplete-paths.${key}`)\n }\n scopeOptions.forEach((scopeOption) => {\n subscriptions.add(\n atom.config.observe(scopeOption, () => {\n if (!_provider) return\n _provider.reloadScopes()\n })\n )\n })\n}\n\nexport function deactivate() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n subscriptions.dispose()\n if (_provider) {\n _provider.dispose(true)\n _provider = null\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n _statusBarTile = null\n }\n}\n\n/**\n * Invoked when the status bar becomes available\n * @param {StatusBar} statusBar\n */\nexport function consumeStatusBar(statusBar) {\n _statusBar = statusBar\n if (_displayStatusBarItemOnConsumption) {\n _displayStatusBarTile()\n }\n}\n\n/**\n * Displays the status bar tile\n */\nfunction _displayStatusBarTile() {\n if (!_statusBar) {\n _displayStatusBarItemOnConsumption = true\n return\n }\n if (_statusBarTile) return\n\n _statusBarElement = document.createElement(\"autocomplete-paths-status-bar\")\n _statusBarElement.innerHTML = \"Rebuilding paths cache...\"\n _statusBarTile = _statusBar.addRightTile({\n item: _statusBarElement,\n priority: 100,\n })\n if (!_provider) {\n // TODO check why we need this check\n getProvider()\n if (!_provider) {\n return\n }\n }\n _statusBarInterval = setInterval(() => {\n const fileCount = _provider.fileCount\n if (fileCount > 0) {\n _statusBarElement.innerHTML = `Rebuilding paths cache... ${fileCount} files`\n }\n }, 500)\n}\n\n/**\n * Hides the status bar tile\n */\nfunction _hideStatusBarTile() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n _statusBarTile && _statusBarTile.destroy()\n _statusBarTile = null\n _statusBarElement = null\n}\n\nexport function getProvider() {\n if (!_provider) {\n _provider = new PathsProvider()\n _provider.on(\"rebuild-cache\", () => {\n _displayStatusBarTile()\n })\n _provider.on(\"rebuild-cache-done\", () => {\n _hideStatusBarTile()\n })\n _provider.rebuildCache()\n }\n return _provider\n}\n","\"use babel\"\n\nexport const OptionScopes = {\n enableHtmlSupport: [\n {\n scopes: [\"text.html.basic\"],\n prefixes: [\"src=['\\\"]\", \"href=['\\\"]\", \"name=['\\\"]\"],\n extensions: [\"js\", \"png\", \"gif\", \"jpeg\", \"jpg\", \"tiff\", \"html\", \"json\", \"svg\"],\n relative: true,\n },\n ],\n}\n","\"use babel\"\n\nimport { OptionScopes } from \"./option-scopes\"\n\nexport const config = {\n normalizeSlashes: {\n type: \"boolean\",\n description: \"Replaces backward slashes with forward slashes on windows (if possible)\",\n default: true,\n },\n maxFileCount: {\n type: \"number\",\n description: \"The maximum amount of files to be handled\",\n default: 2000,\n },\n suggestionPriority: {\n type: \"number\",\n description:\n \"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.\",\n default: 2,\n },\n ignoredNames: {\n type: \"boolean\",\n default: true,\n description: \"Ignore items matched by the `Ignore Names` core option.\",\n },\n ignoreSubmodules: {\n type: \"boolean\",\n default: false,\n description: \"Ignore submodule directories.\",\n },\n ignoredPatterns: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"Ignore additional **glob** or file path patterns.\",\n },\n ignoreBuiltinScopes: {\n type: \"boolean\",\n default: false,\n description: \"Ignore built-in scopes and use only scopes from user configuration.\",\n },\n scopes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n scopes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n prefixes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n extensions: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n relative: {\n type: \"boolean\",\n default: true,\n },\n replaceOnInsert: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: [\"string\", \"string\"],\n },\n },\n },\n },\n },\n },\n}\n\nconst keys = Object.keys(OptionScopes)\nfor (let i = 0, len = keys.length; i < len; i++) {\n config[keys[i]] = {\n type: \"boolean\",\n default: false,\n }\n}\n","\"use babel\"\n\nimport { EventEmitter } from \"events\"\nimport path from \"path\"\nimport { intersection, flatten, max } from \"underscore\"\nimport slash from \"slash\"\nimport PathsCache from \"./paths-cache\"\nimport { score, filter } from \"zadeh\"\nimport { DefaultScopes } from \"./config/default-scopes\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nexport default class PathsProvider extends EventEmitter {\n constructor() {\n super()\n this.reloadScopes()\n\n this._pathsCache = new PathsCache()\n this._isReady = false\n\n this._onRebuildCache = this._onRebuildCache.bind(this)\n this._onRebuildCacheDone = this._onRebuildCacheDone.bind(this)\n\n this._pathsCache.on(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.on(\"rebuild-cache-done\", this._onRebuildCacheDone)\n }\n\n /**\n * Reloads the scopes\n */\n reloadScopes() {\n this._scopes = atom.config.get(\"autocomplete-paths.scopes\").slice(0) || []\n\n if (!atom.config.get(\"autocomplete-paths.ignoreBuiltinScopes\")) {\n this._scopes = this._scopes.concat(DefaultScopes)\n }\n\n for (var key in OptionScopes) {\n if (atom.config.get(`autocomplete-paths.${key}`)) {\n this._scopes = this._scopes.slice(0).concat(OptionScopes[key])\n }\n }\n }\n\n /**\n * Gets called when the PathsCache is starting to rebuild the cache\n * @private\n */\n _onRebuildCache() {\n this.emit(\"rebuild-cache\")\n }\n\n /**\n * Gets called when the PathsCache is done rebuilding the cache\n * @private\n */\n _onRebuildCacheDone() {\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Checks if the given scope config matches the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Array} The match object\n * @private\n */\n _scopeMatchesRequest(scope, request) {\n const sourceScopes = Array.isArray(scope.scopes) ? scope.scopes : [scope.scopes]\n\n // Check if the scope descriptors match\n const scopeMatches = intersection(request.scopeDescriptor.getScopesArray(), sourceScopes).length > 0\n if (!scopeMatches) return false\n\n // Check if the line matches the prefixes\n const line = this._getLineTextForRequest(request)\n\n let lineMatch = null\n const scopePrefixes = Array.isArray(scope.prefixes) ? scope.prefixes : [scope.prefixes]\n scopePrefixes.forEach((prefix) => {\n const regex = new RegExp(prefix, \"i\")\n lineMatch = lineMatch || line.match(regex)\n })\n\n return lineMatch\n }\n\n /**\n * Returns the whole line text for the given request\n * @param {Object} request\n * @return {String}\n * @private\n */\n _getLineTextForRequest(request) {\n const { editor, bufferPosition } = request\n return editor.getTextInRange([[bufferPosition.row, 0], bufferPosition])\n }\n\n /**\n * Returns the suggestions for the given scope and the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Promise}\n * @private\n */\n _getSuggestionsForScope(scope, request, match) {\n const line = this._getLineTextForRequest(request)\n const pathPrefix = line.substr(match.index + match[0].length)\n const trailingSlashPresent = pathPrefix.match(/[/\\\\|]$/)\n const directoryGiven = pathPrefix.indexOf(\"./\") === 0 || pathPrefix.indexOf(\"../\") === 0\n const parsedPathPrefix = path.parse(pathPrefix)\n\n // path.parse ignores trailing slashes, so we handle this manually\n if (trailingSlashPresent) {\n parsedPathPrefix.dir = path.join(parsedPathPrefix.dir, parsedPathPrefix.base)\n parsedPathPrefix.base = \"\"\n parsedPathPrefix.name = \"\"\n }\n\n const projectDirectory = this._getProjectDirectory(request.editor)\n if (!projectDirectory) return Promise.resolve([])\n const currentDirectory = path.dirname(request.editor.getPath())\n\n const requestedDirectoryPath = path.resolve(currentDirectory, parsedPathPrefix.dir)\n\n let files = directoryGiven\n ? this._pathsCache.getFilePathsForProjectDirectory(projectDirectory, requestedDirectoryPath)\n : this._pathsCache.getFilePathsForProjectDirectory(projectDirectory)\n\n const fuzzyMatcher = directoryGiven ? parsedPathPrefix.base : pathPrefix\n\n const { extensions } = scope\n if (extensions) {\n const regex = new RegExp(`.(${extensions.join(\"|\")})$`)\n files = files.filter((path) => regex.test(path))\n }\n\n if (fuzzyMatcher) {\n files = filter(files, fuzzyMatcher, {\n maxResults: 10,\n })\n }\n\n let suggestions = files.map((pathName) => {\n const normalizeSlashes = atom.config.get(\"autocomplete-paths.normalizeSlashes\")\n\n const projectRelativePath = atom.project.relativizePath(pathName)[1]\n let displayText = projectRelativePath\n if (directoryGiven) {\n displayText = path.relative(requestedDirectoryPath, pathName)\n }\n if (normalizeSlashes) {\n displayText = slash(displayText)\n }\n\n // Relativize path to current file if necessary\n let relativePath = path.relative(path.dirname(request.editor.getPath()), pathName)\n if (normalizeSlashes) relativePath = slash(relativePath)\n if (scope.relative !== false) {\n pathName = relativePath\n if (scope.includeCurrentDirectory !== false) {\n if (pathName[0] !== \".\") {\n pathName = `./${pathName}`\n }\n }\n }\n\n if (scope.projectRelativePath) {\n pathName = slash(projectRelativePath)\n }\n\n // Replace stuff if necessary\n if (scope.replaceOnInsert) {\n // let originalPathName = pathName\n scope.replaceOnInsert.forEach(([from, to]) => {\n const regex = new RegExp(from)\n if (regex.test(pathName)) {\n pathName = pathName.replace(regex, to)\n }\n })\n }\n\n // Calculate distance to file\n const distanceToFile = relativePath.split(path.sep).length\n return {\n text: pathName,\n replacementPrefix: pathPrefix,\n displayText,\n type: \"import\",\n iconHTML: '',\n score: score(displayText, request.prefix),\n distanceToFile,\n }\n })\n\n // Modify score to incorporate distance\n const suggestionsCount = suggestions.length\n if (suggestions.length) {\n const maxDistance = max(suggestions, (s) => s.distanceToFile).distanceToFile\n suggestions.forEach((s, i) => {\n s.score = suggestionsCount - i + (maxDistance - s.distanceToFile)\n })\n\n // Sort again\n suggestions.sort((a, b) => b.score - a.score)\n }\n\n return Promise.resolve(suggestions)\n }\n\n /**\n * Returns the suggestions for the given request\n * @param {Object} request\n * @return {Promise}\n */\n async getSuggestions(request) {\n const matches = this._scopes\n .map((scope) => [scope, this._scopeMatchesRequest(scope, request)])\n .filter((result) => result[1]) // Filter scopes that match\n const promises = matches.map(([scope, match]) => this._getSuggestionsForScope(scope, request, match))\n\n const suggestions = flatten(await Promise.all(promises))\n if (!suggestions.length) return false\n return suggestions\n }\n\n /**\n * Rebuilds the cache\n * @return {Promise}\n */\n async rebuildCache() {\n const result = await this._pathsCache.rebuildCache()\n this._isReady = true\n return result\n }\n\n /**\n * Returns the project directory that contains the file opened in the given editor\n * @param {TextEditor} editor\n * @return {Directory}\n * @private\n */\n _getProjectDirectory(editor) {\n const filePath = editor.getBuffer().getPath()\n let projectDirectory = null\n atom.project.getDirectories().forEach((directory) => {\n if (directory.contains(filePath)) {\n projectDirectory = directory\n }\n })\n return projectDirectory\n }\n\n isReady() {\n return this._isReady\n }\n\n get suggestionPriority() {\n return atom.config.get(\"autocomplete-paths.suggestionPriority\")\n }\n\n get fileCount() {\n return atom.project.getDirectories().reduce((accumulated, directory) => {\n const filePaths = this._pathsCache.getFilePathsForProjectDirectory(directory)\n return accumulated + filePaths.length\n }, 0)\n }\n\n /**\n * Disposes this provider\n */\n dispose() {\n this._pathsCache.removeListener(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.removeListener(\"rebuild-cache-done\", this._onRebuildCacheDone)\n this._pathsCache.dispose(true)\n }\n}\n\nPathsProvider.prototype.selector = \"*\"\nPathsProvider.prototype.inclusionPriority = 1\n","// Current version.\nexport var VERSION = '1.12.0';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport delay from './delay.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","\"use babel\"\nimport { EventEmitter } from \"events\"\nimport minimatch from \"minimatch\"\nimport { Directory, File } from \"atom\"\nimport { union } from \"./utils\"\nimport { globifyPath, globifyDirectory, globifyGitIgnoreFile } from \"./path-utils\"\nimport glob from \"fast-glob\"\n\nexport default class PathsCache extends EventEmitter {\n constructor() {\n super()\n\n const rebuildCacheBound = this.rebuildCache.bind(this)\n this._projectChangeWatcher = atom.project.onDidChangePaths(rebuildCacheBound)\n\n const _onDidChangeFilesBound = this._onDidChangeFiles.bind(this)\n this._projectWatcher = atom.project.onDidChangeFiles(_onDidChangeFilesBound)\n\n this._repositories = []\n this._filePathsByProjectDirectory = new Map()\n this._filePathsByDirectory = new Map()\n this._fileWatchersByDirectory = new Map()\n\n this.updateConfig()\n }\n\n updateConfig() {\n this.config = {\n excludeVcsIgnoredPaths: atom.config.get(\"core.excludeVcsIgnoredPaths\"),\n ignoreSubmodules: atom.config.get(\"autocomplete-paths.ignoreSubmodules\"),\n shouldIgnoredNames: atom.config.get(\"autocomplete-paths.ignoredNames\"),\n ignoredNames: atom.config.get(\"core.ignoredNames\"),\n ignoredPatterns: atom.config.get(\"autocomplete-paths.ignoredPatterns\"),\n maxFileCount: atom.config.get(\"autocomplete-paths.maxFileCount\"),\n }\n }\n\n /**\n * Rebuilds the paths cache\n */\n async rebuildCache() {\n this.dispose()\n\n this._cancelled = false\n this.emit(\"rebuild-cache\")\n\n try {\n return await this._buildInitialCacheWithGlob()\n } catch (e) {\n console.error(e)\n return await this._buildInitialCacheWithAtom()\n }\n }\n\n /**\n * Returns the file paths for the given project directory with the given (optional) relative path\n * @param {Directory} projectDirectory\n * @param {String} [relativeToPath=null]\n * @return {String[]}\n */\n getFilePathsForProjectDirectory(projectDirectory, relativeToPath = null) {\n let filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n if (relativeToPath) {\n return filePaths.filter((filePath) => filePath.indexOf(relativeToPath) === 0)\n }\n return filePaths\n }\n\n /**\n * Disposes this PathsCache\n */\n dispose(isPackageDispose) {\n this._fileWatchersByDirectory.forEach((watcher) => {\n watcher.dispose()\n })\n this._fileWatchersByDirectory = new Map()\n this._filePathsByProjectDirectory = new Map()\n this._filePathsByDirectory = new Map()\n this._repositories = []\n if (this._projectWatcher) {\n this._projectWatcher.dispose()\n this._projectWatcher = null\n }\n if (isPackageDispose && this._projectChangeWatcher) {\n this._projectChangeWatcher.dispose()\n this._projectChangeWatcher = null\n }\n }\n\n /**\n * Checks if the given path is ignored\n * @param {String} path\n * @return {Boolean}\n * @private\n */\n _isPathIgnored(path) {\n let ignored = false\n if (this.config.excludeVcsIgnoredPaths) {\n this._repositories.forEach((repository) => {\n if (ignored) return\n const isIgnoredSubmodule = this.config.ignoreSubmodules && repository.isSubmodule(path)\n if (repository.isPathIgnored(path) || isIgnoredSubmodule) {\n ignored = true\n }\n })\n }\n\n if (this.config.shouldIgnoredNames) {\n this.config.ignoredNames.forEach((ignoredName) => {\n if (ignored) return\n ignored = ignored || minimatch(path, ignoredName, { matchBase: true, dot: true })\n })\n }\n\n if (this.config.ignoredPatterns) {\n this.config.ignoredPatterns.forEach((ignoredPattern) => {\n if (ignored) return\n ignored = ignored || minimatch(path, ignoredPattern, { dot: true })\n })\n }\n\n return ignored\n }\n\n /**\n * Caches the project paths and repositories\n * @return {Promise}\n * @private\n */\n async _cacheProjectPathsAndRepositories() {\n this._projectDirectories = atom.project.getDirectories()\n\n // get the repositories asynchronously\n const projectNum = this._projectDirectories.length\n let repositoriesP = new Array(projectNum)\n for (let i = 0; i < projectNum; i++) {\n repositoriesP[i] = atom.project.repositoryForDirectory(this._projectDirectories[i])\n }\n const repositories = await Promise.all(repositoriesP)\n this._repositories = repositories.filter((r) => r !== null) // filter out non-repository directories\n }\n\n /**\n * Invoked when the content of the given `directory` has changed\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @private\n */\n _onDirectoryChanged(projectDirectory, directory) {\n this._removeFilePathsForDirectory(projectDirectory, directory)\n this._cleanWatchersForDirectory(directory)\n this._populateCacheWithGlob(directory.path).catch((e) => {\n // fallback to Atom\n console.error(e)\n this._populateCacheWithAtom(projectDirectory, directory)\n })\n }\n\n /**\n * Removes all watchers inside the given directory\n * @param {Directory} directory\n * @private\n */\n _cleanWatchersForDirectory(directory) {\n this._fileWatchersByDirectory.forEach((watcher, otherDirectory) => {\n if (directory.contains(otherDirectory.path)) {\n watcher.dispose()\n this._fileWatchersByDirectory.delete(otherDirectory)\n }\n })\n }\n\n /**\n * Removes all cached file paths in the given directory\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @private\n */\n _removeFilePathsForDirectory(projectDirectory, directory) {\n let filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n if (!filePaths) return\n\n filePaths = filePaths.filter((path) => !directory.contains(path))\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n\n this._filePathsByDirectory.delete(directory.path)\n }\n\n /**\n * Promisified version of Directory#getEntries\n * @param {Directory} directory\n * @return {Promise}\n * @private\n */\n _getDirectoryEntries(directory) {\n return new Promise((resolve, reject) => {\n directory.getEntries((err, entries) => {\n if (err) return reject(err)\n resolve(entries)\n })\n })\n }\n\n _onDidChangeFiles(events) {\n events\n .filter((event) => event.action !== \"modified\")\n .forEach((event) => {\n if (!this._projectDirectories) {\n return\n }\n\n const { action, path, oldPath } = event\n\n const projectDirectory = this._projectDirectories.find(\n (projectDirectory) => path.indexOf(projectDirectory.path) === 0\n )\n\n if (!projectDirectory) {\n return\n }\n const directoryPath = projectDirectory.path\n const ignored = this._isPathIgnored(path)\n\n if (ignored) {\n return\n }\n\n const files = this._filePathsByProjectDirectory.get(directoryPath) || []\n\n switch (action) {\n case \"created\":\n files.push(path)\n break\n\n case \"deleted\": {\n const i = files.indexOf(path)\n if (i > -1) {\n files.splice(i, 1)\n }\n break\n }\n case \"renamed\": {\n const j = files.indexOf(oldPath)\n if (j > -1) {\n files[j] = path\n }\n break\n }\n }\n\n if (!this._filePathsByProjectDirectory.has(directoryPath)) {\n this._filePathsByProjectDirectory.set(directoryPath, files)\n }\n })\n }\n\n /*\n ██████ ██ ██████ ██████\n ██ ██ ██ ██ ██ ██\n ██ ███ ██ ██ ██ ██████\n ██ ██ ██ ██ ██ ██ ██\n ██████ ███████ ██████ ██████\n */\n\n /**\n * Builds the initial file cache with `glob`\n * @return {Promise}\n * @private\n */\n async _buildInitialCacheWithGlob() {\n await this._cacheProjectPathsAndRepositories()\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._populateCacheWithGlob(projectDirectory.path))\n )\n\n this.emit(\"rebuild-cache-done\")\n return result\n }\n\n /**\n * Returns a list of ignore patterns for a directory\n * @param {String} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getIgnoredPatternsGlob(directoryPath) {\n const patterns = []\n\n if (this.config.shouldIgnoredNames) {\n patterns.push(...this.config.ignoredNames)\n }\n\n if (this.config.ignoredPatterns) {\n patterns.push(...this.config.ignoredPatterns)\n }\n\n const patternsNum = patterns.length\n\n let globEntries = new Array(patternsNum)\n\n for (let iEntry = 0; iEntry < patternsNum; iEntry++) {\n const globifyOutput = await globifyPath(patterns[iEntry], directoryPath)\n\n // Check if `globifyPath` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n return globEntries\n }\n\n /**\n * Returns the glob pattern of a gitignore of a directory\n * @param {String} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getGitIgnoreGlob(directoryPath) {\n if (this.config.excludeVcsIgnoredPaths) {\n try {\n return await globifyGitIgnoreFile(directoryPath)\n } catch (err) {\n // .gitignore does not exist for this directory, ignoring\n }\n }\n return []\n }\n\n /**\n * Populates cache for the given directory\n * @param {string} directoryPath the given directory path\n * @return {Promise>}\n * @private\n */\n async _populateCacheWithGlob(directoryPath) {\n const directoryGlob = globifyDirectory(directoryPath)\n const gitignoreGlob = await this._getGitIgnoreGlob(directoryPath)\n const ignoredPatternsGlob = await this._getIgnoredPatternsGlob(directoryPath)\n\n const files = await glob(\n [directoryGlob, ...gitignoreGlob, ...ignoredPatternsGlob],\n // glob options\n {\n dot: true,\n cwd: directoryPath,\n onlyFiles: true,\n }\n )\n this._filePathsByProjectDirectory.set(directoryPath, files)\n return files\n }\n\n /*\n ███████ █████ ██ ██ ██████ █████ ██████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n █████ ███████ ██ ██ ██████ ███████ ██ █████\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ███████ ███████ ██████ ██ ██ ██████ ██ ██\n */\n\n /**\n * Builds the initial file cache using Atom\n * @return {Promise}\n * @private\n */\n async _buildInitialCacheWithAtom() {\n await this._cacheProjectPathsAndRepositories()\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => {\n return this._populateCacheWithAtom(projectDirectory, projectDirectory)\n })\n )\n this.emit(\"rebuild-cache-done\")\n return result\n }\n\n /**\n * Caches file paths for the given directory with Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise}\n * @private\n */\n async _populateCacheWithAtom(projectDirectory, directory) {\n if (this._cancelled) return []\n\n if (process.platform !== \"win32\") {\n let watcher = this._fileWatchersByDirectory.get(directory)\n if (!watcher) {\n watcher = directory.onDidChange(() => this._onDirectoryChanged(projectDirectory, directory))\n this._fileWatchersByDirectory.set(directory, watcher)\n }\n }\n const entries = await this._getDirectoryEntries(directory)\n if (this._cancelled) return []\n\n // Filter: Files and Directories that are not ignored\n let filePaths = []\n let directories = []\n for (let i = 0, len = entries.length; i < len; i++) {\n const entry = entries[i]\n if (entry instanceof File && !this._isPathIgnored(entry.path)) {\n filePaths.push(entry.path)\n } else if (entry instanceof Directory && !this._isPathIgnored(entry.path)) {\n directories.push(entry)\n }\n }\n\n // Merge file paths into existing array (which contains *all* file paths)\n let filePathsArray = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n const newPathsCount = filePathsArray.length + filePaths.length\n\n if (newPathsCount > this.config.maxFileCount && !this._cancelled) {\n atom.notifications.addError(\"autocomplete-paths\", {\n description: `Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,\n dismissable: true,\n })\n\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._cancelled = true\n this.emit(\"rebuild-cache-done\")\n return\n }\n\n this._filePathsByProjectDirectory.set(projectDirectory.path, union(filePathsArray, filePaths))\n\n // Merge file paths into existing array (which contains file paths for a specific directory)\n filePathsArray = this._filePathsByDirectory.get(directory.path) || []\n this._filePathsByDirectory.set(directory.path, union(filePathsArray, filePaths))\n\n return Promise.all(directories.map((directory) => this._populateCacheWithAtom(projectDirectory, directory)))\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","\"use babel\"\n\n// exec\nimport { exec as execRaw } from \"child_process\"\nimport { promisify } from \"util\"\nexport const exec = promisify(execRaw)\nimport { constants } from \"buffer\"\nexport const MAX_STRING_LENGTH = constants.MAX_STRING_LENGTH\n\n// fast merge function\n// https://uilicious.com/blog/javascript-array-push-is-945x-faster-than-array-concat/\nexport function merge(arr1: Array, arr2: Array) {\n if (!arr2.length) return\n Array.prototype.push.apply(arr1, arr2)\n}\n\n// get unique entries of an array\nexport function unique(arr: Array) {\n return [...new Set(arr)]\n}\n\n// fast union function (replacement for _.union)\nexport function union(arr1: Array, arr2: Array) {\n merge(arr1, arr2)\n return unique(arr1)\n}\n","import path from \"path\"\nimport { promises } from \"fs\"\nconst { readFile, stat } = promises\n\nimport isPath from \"is-valid-path\"\n\nimport { unique } from \"./utils\"\n\n/** Converts given path to Posix (replacing \\\\ with /)\n * @param {string} givenPath Path to convert\n * @returns {string} Converted filepath\n */\nexport function posixifyPath(givenPath) {\n return path.normalize(givenPath).replace(/\\\\/g, \"/\")\n}\n\n/** Converts given path to Posix (replacing \\\\ with /) and removing ending slashes\n * @param {string} givenPath Path to convert\n * @returns {string} Converted filepath\n */\nexport function posixifyPathNormalized(givenPath) {\n return posixifyPath(givenPath).replace(/\\/$/, \"\")\n}\n\n/**\n * @param {string} givenPath The given path to be globified\n * @param {string} givenDirectory [process.cwd()] The cwd to use to resolve relative pathnames\n * @returns {Promise} The glob path or the file path itself\n */\nexport async function globifyPath(givenPath, givenDirectory = process.cwd()) {\n return await globifyGitIgnoreEntry(posixifyPath(givenPath), givenDirectory)\n}\n\n/**\n * Globifies a directory\n * @param {string} givenDirectory The given directory to be globified\n */\nexport function globifyDirectory(givenDirectory) {\n return `${posixifyPathNormalized(givenDirectory)}/**`\n}\n\n/**\n * Parse and globy the `.gitingore` file that exists in a directry\n * @param {string} gitIgnoreDirectory The given directory that has the `.gitignore` file\n * @returns {Promise>} an array of glob patterns\n */\nexport async function globifyGitIgnoreFile(gitIgnoreDirectory) {\n return await globifyGitIgnore(\n await readFile(path.join(gitIgnoreDirectory, \".gitignore\"), \"utf-8\"),\n gitIgnoreDirectory\n )\n}\n\n/**\n * Read `.gitingore` file from a directry\n * @param {string} gitIgnoreContent the content of the gitignore file\n * @param {string | undefined} gitIgnoreDirectory the directory of gitignore\n * @returns {Promise>} an array of glob patterns\n */\nexport async function globifyGitIgnore(gitIgnoreContent, gitIgnoreDirectory = undefined) {\n const gitIgnoreEntries = gitIgnoreContent\n .split(\"\\n\")\n // Remove empty lines and comments.\n .filter((entry) => !(isWhitespace(entry) || isGitIgnoreComment(entry, \"#\")))\n // Remove surrounding whitespace\n .map((entry) => trimWhiteSpace(entry))\n\n const gitIgnoreEntriesNum = gitIgnoreEntries.length\n\n let globEntries = new Array(gitIgnoreEntriesNum)\n\n for (let iEntry = 0; iEntry < gitIgnoreEntriesNum; iEntry++) {\n const globifyOutput = await globifyGitIgnoreEntry(gitIgnoreEntries[iEntry], gitIgnoreDirectory)\n\n // Check if `globifyGitIgnoreEntry` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n\n // unique in the end\n return unique(globEntries)\n}\n\n/**\n * @param {string} gitIgnoreEntry one git ignore entry (it expects a valid non-comment gitignore entry with no surrounding whitespace)\n * @param {string | undefined} gitIgnoreDirectory the directory of gitignore\n * @returns {Promise} the equivilant glob\n */\nasync function globifyGitIgnoreEntry(gitIgnoreEntry, gitIgnoreDirectory) {\n // output glob entry\n let entry = gitIgnoreEntry\n\n // Process the entry beginning\n\n // '!' in .gitignore means to force include the pattern\n // remove \"!\" to allow the processing of the pattern and swap ! in the end of the loop\n let forceInclude = false\n if (entry[0] === \"!\") {\n entry = entry.substring(1)\n forceInclude = true\n }\n\n // If there is a separator at the beginning or middle (or both) of the pattern,\n // then the pattern is relative to the directory level of the particular .gitignore file itself\n\n // Process slash\n\n /** @type {PATH_TYPE.OTHER | PATH_TYPE.DIRECTORY | PATH_TYPE.FILE} */\n let pathType = PATH_TYPE.OTHER\n\n if (entry[0] === \"/\") {\n // Patterns starting with '/' in gitignore are considred relative to the project directory while glob\n // treats them as relative to the OS root directory.\n // So we trim the slash to make it relative to project folder from glob perspective.\n entry = entry.substring(1)\n // Check if it is a directory or file\n if (await isPath(entry)) {\n pathType = await getPathType(gitIgnoreDirectory ? path.join(gitIgnoreDirectory, entry) : entry)\n }\n } else {\n const slashPlacement = entry.indexOf(\"/\")\n if (slashPlacement === -1) {\n // Patterns that don't have `/` are '**/' from glob perspective (can match at any level)\n if (!entry.startsWith(\"**/\")) {\n entry = `**/${entry}`\n }\n } else if (slashPlacement === entry.length - 1) {\n // If there is a separator at the end of the pattern then it only matches directories\n // slash is in the end\n pathType = PATH_TYPE.DIRECTORY\n } else {\n // has `/` in the middle so it is a relative path\n // Check if it is a directory or file\n if (await isPath(entry)) {\n pathType = await getPathType(gitIgnoreDirectory ? path.join(gitIgnoreDirectory, entry) : entry)\n }\n }\n }\n\n // prepend the absolute root directory\n if (gitIgnoreDirectory) {\n entry = `${posixifyPath(gitIgnoreDirectory)}/${entry}`\n }\n\n // swap !\n entry = forceInclude ? entry : `!${entry}`\n\n // Process the entry ending\n if (pathType === PATH_TYPE.DIRECTORY) {\n // in glob this is equal to `directry/**`\n if (entry.endsWith(\"/\")) {\n return `${entry}**`\n } else {\n return `${entry}/**`\n }\n } else if (pathType === PATH_TYPE.FILE) {\n // return as is for file\n return entry\n } else if (!entry.endsWith(\"/**\")) {\n // the pattern can match both files and directories\n // so we should include both `entry` and `entry/**`\n return [entry, `${entry}/**`]\n } else {\n return entry\n }\n}\n\nfunction isWhitespace(str) {\n return /^\\s*$/.test(str)\n}\n\n/**\n * A line starting with # serves as a comment.\n * Put a backslash (\"\\\") in front of the first hash for patterns that begin with a hash.\n */\nfunction isGitIgnoreComment(pattern) {\n return pattern[0] === \"#\"\n}\n\n/**\n * Trailing spaces should be removed unless they are quoted with backslash (\"\\ \").\n */\nfunction trimTrailingWhitespace(str) {\n if (!/\\\\\\s+$/.test(str)) {\n // No escaped trailing whitespace, remove\n return str.replace(/\\s+$/, \"\")\n } else {\n // Trailing whitespace detected, remove only the backslash\n return str.replace(/\\\\(\\s+)$/, \"$1\")\n }\n}\n\n/** Remove leading whitespace */\nfunction trimLeadingWhiteSpace(str) {\n return str.replace(/^\\s+/, \"\")\n}\n\n/** Remove whitespace from a gitignore entry */\nfunction trimWhiteSpace(str) {\n return trimLeadingWhiteSpace(trimTrailingWhitespace(str))\n}\n\n/** Enum that specifies the path type. 1 for directory, 2 for file, 0 for others */\nconst PATH_TYPE = {\n OTHER: 0,\n DIRECTORY: 1,\n FILE: 2,\n}\n\n/** Get the type of the given path\n * @param {string} givenPath absolute path\n * @returns {Promise}\n */\nasync function getPathType(filepath) {\n let pathStat\n try {\n pathStat = await stat(filepath)\n } catch (error) {\n return PATH_TYPE.OTHER\n }\n if (pathStat.isDirectory()) {\n return PATH_TYPE.DIRECTORY\n } else if (pathStat.isFile()) {\n return PATH_TYPE.FILE\n }\n return PATH_TYPE.OTHER\n}\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictRegex = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/;\nvar relaxedRegex = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var regex = strictRegex;\n var match;\n\n // optionally relax regex\n if (options && options.strict === false) {\n regex = relaxedRegex;\n }\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n var idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n var open = match[1];\n var close = open ? chars[open] : null;\n if (open && close) {\n var n = str.indexOf(close, idx);\n if (n !== -1) {\n idx = n + 1;\n }\n }\n\n str = str.slice(idx);\n }\n return false;\n};\n","/*!\n * is-invalid-path \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isGlob = require('is-glob');\nvar re = /[‘“!#$%&+^<=>`]/;\n\nmodule.exports = function (str) {\n return (typeof str !== 'string') || isGlob(str) || re.test(str);\n};\n","/*!\n * is-valid-path \n *\n * Copyright (c) 2015 Jon Schlinkert, contributors.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nvar isInvalidPath = require('is-invalid-path');\n\nmodule.exports = function (str) {\n return isInvalidPath(str) === false;\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\r\nconst utils = require(\"../utils\");\r\nfunction generate(patterns, settings) {\r\n const positivePatterns = getPositivePatterns(patterns);\r\n const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);\r\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\r\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\r\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\r\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\r\n return staticTasks.concat(dynamicTasks);\r\n}\r\nexports.generate = generate;\r\nfunction convertPatternsToTasks(positive, negative, dynamic) {\r\n const positivePatternsGroup = groupPatternsByBaseDirectory(positive);\r\n // When we have a global group – there is no reason to divide the patterns into independent tasks.\r\n // In this case, the global task covers the rest.\r\n if ('.' in positivePatternsGroup) {\r\n const task = convertPatternGroupToTask('.', positive, negative, dynamic);\r\n return [task];\r\n }\r\n return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic);\r\n}\r\nexports.convertPatternsToTasks = convertPatternsToTasks;\r\nfunction getPositivePatterns(patterns) {\r\n return utils.pattern.getPositivePatterns(patterns);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getNegativePatternsAsPositive(patterns, ignore) {\r\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\r\n const positive = negative.map(utils.pattern.convertToPositivePattern);\r\n return positive;\r\n}\r\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\r\nfunction groupPatternsByBaseDirectory(patterns) {\r\n const group = {};\r\n return patterns.reduce((collection, pattern) => {\r\n const base = utils.pattern.getBaseDirectory(pattern);\r\n if (base in collection) {\r\n collection[base].push(pattern);\r\n }\r\n else {\r\n collection[base] = [pattern];\r\n }\r\n return collection;\r\n }, group);\r\n}\r\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\r\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\r\n return Object.keys(positive).map((base) => {\r\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\r\n });\r\n}\r\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\r\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\r\n return {\r\n dynamic,\r\n positive,\r\n negative,\r\n base,\r\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\r\n };\r\n}\r\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\r\nconst array = require(\"./array\");\r\nexports.array = array;\r\nconst errno = require(\"./errno\");\r\nexports.errno = errno;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\nconst path = require(\"./path\");\r\nexports.path = path;\r\nconst pattern = require(\"./pattern\");\r\nexports.pattern = pattern;\r\nconst stream = require(\"./stream\");\r\nexports.stream = stream;\r\nconst string = require(\"./string\");\r\nexports.string = string;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.splitWhen = exports.flatten = void 0;\r\nfunction flatten(items) {\r\n return items.reduce((collection, item) => [].concat(collection, item), []);\r\n}\r\nexports.flatten = flatten;\r\nfunction splitWhen(items, predicate) {\r\n const result = [[]];\r\n let groupIndex = 0;\r\n for (const item of items) {\r\n if (predicate(item)) {\r\n groupIndex++;\r\n result[groupIndex] = [];\r\n }\r\n else {\r\n result[groupIndex].push(item);\r\n }\r\n }\r\n return result;\r\n}\r\nexports.splitWhen = splitWhen;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEnoentCodeError = void 0;\r\nfunction isEnoentCodeError(error) {\r\n return error.code === 'ENOENT';\r\n}\r\nexports.isEnoentCodeError = isEnoentCodeError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\r\nconst path = require(\"path\");\r\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\r\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\r\n/**\r\n * Designed to work only with simple paths: `dir\\\\file`.\r\n */\r\nfunction unixify(filepath) {\r\n return filepath.replace(/\\\\/g, '/');\r\n}\r\nexports.unixify = unixify;\r\nfunction makeAbsolute(cwd, filepath) {\r\n return path.resolve(cwd, filepath);\r\n}\r\nexports.makeAbsolute = makeAbsolute;\r\nfunction escape(pattern) {\r\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\r\n}\r\nexports.escape = escape;\r\nfunction removeLeadingDotSegment(entry) {\r\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\r\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\r\n if (entry.charAt(0) === '.') {\r\n const secondCharactery = entry.charAt(1);\r\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\r\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\r\n }\r\n }\r\n return entry;\r\n}\r\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\r\nconst path = require(\"path\");\r\nconst globParent = require(\"glob-parent\");\r\nconst micromatch = require(\"micromatch\");\r\nconst picomatch = require(\"picomatch\");\r\nconst GLOBSTAR = '**';\r\nconst ESCAPE_SYMBOL = '\\\\';\r\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\r\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[.*]/;\r\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\(.*\\|.*\\)/;\r\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\(.*\\)/;\r\nconst BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\\.\\.).*}/;\r\nfunction isStaticPattern(pattern, options = {}) {\r\n return !isDynamicPattern(pattern, options);\r\n}\r\nexports.isStaticPattern = isStaticPattern;\r\nfunction isDynamicPattern(pattern, options = {}) {\r\n /**\r\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\r\n * An empty string cannot be a dynamic pattern.\r\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\r\n */\r\n if (pattern === '') {\r\n return false;\r\n }\r\n /**\r\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\r\n * filepath directly (without read directory).\r\n */\r\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\r\n return true;\r\n }\r\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isDynamicPattern = isDynamicPattern;\r\nfunction convertToPositivePattern(pattern) {\r\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\r\n}\r\nexports.convertToPositivePattern = convertToPositivePattern;\r\nfunction convertToNegativePattern(pattern) {\r\n return '!' + pattern;\r\n}\r\nexports.convertToNegativePattern = convertToNegativePattern;\r\nfunction isNegativePattern(pattern) {\r\n return pattern.startsWith('!') && pattern[1] !== '(';\r\n}\r\nexports.isNegativePattern = isNegativePattern;\r\nfunction isPositivePattern(pattern) {\r\n return !isNegativePattern(pattern);\r\n}\r\nexports.isPositivePattern = isPositivePattern;\r\nfunction getNegativePatterns(patterns) {\r\n return patterns.filter(isNegativePattern);\r\n}\r\nexports.getNegativePatterns = getNegativePatterns;\r\nfunction getPositivePatterns(patterns) {\r\n return patterns.filter(isPositivePattern);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getBaseDirectory(pattern) {\r\n return globParent(pattern, { flipBackslashes: false });\r\n}\r\nexports.getBaseDirectory = getBaseDirectory;\r\nfunction hasGlobStar(pattern) {\r\n return pattern.includes(GLOBSTAR);\r\n}\r\nexports.hasGlobStar = hasGlobStar;\r\nfunction endsWithSlashGlobStar(pattern) {\r\n return pattern.endsWith('/' + GLOBSTAR);\r\n}\r\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\r\nfunction isAffectDepthOfReadingPattern(pattern) {\r\n const basename = path.basename(pattern);\r\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\r\n}\r\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\r\nfunction expandPatternsWithBraceExpansion(patterns) {\r\n return patterns.reduce((collection, pattern) => {\r\n return collection.concat(expandBraceExpansion(pattern));\r\n }, []);\r\n}\r\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\r\nfunction expandBraceExpansion(pattern) {\r\n return micromatch.braces(pattern, {\r\n expand: true,\r\n nodupes: true\r\n });\r\n}\r\nexports.expandBraceExpansion = expandBraceExpansion;\r\nfunction getPatternParts(pattern, options) {\r\n let { parts } = picomatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\r\n /**\r\n * The scan method returns an empty array in some cases.\r\n * See micromatch/picomatch#58 for more details.\r\n */\r\n if (parts.length === 0) {\r\n parts = [pattern];\r\n }\r\n /**\r\n * The scan method does not return an empty part for the pattern with a forward slash.\r\n * This is another part of micromatch/picomatch#58.\r\n */\r\n if (parts[0].startsWith('/')) {\r\n parts[0] = parts[0].slice(1);\r\n parts.unshift('');\r\n }\r\n return parts;\r\n}\r\nexports.getPatternParts = getPatternParts;\r\nfunction makeRe(pattern, options) {\r\n return micromatch.makeRe(pattern, options);\r\n}\r\nexports.makeRe = makeRe;\r\nfunction convertPatternsToRe(patterns, options) {\r\n return patterns.map((pattern) => makeRe(pattern, options));\r\n}\r\nexports.convertPatternsToRe = convertPatternsToRe;\r\nfunction matchAny(entry, patternsRe) {\r\n return patternsRe.some((patternRe) => patternRe.test(entry));\r\n}\r\nexports.matchAny = matchAny;\r\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\/]*.*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => typeof val === 'string' && (val === '' || val === './');\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} list List of strings to match.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} options See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if the patter matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","var types = require('./types');\n\nvar INTS = function() {\n return [{ type: types.RANGE , from: 48, to: 57 }];\n};\n\nvar WORDS = function() {\n return [\n { type: types.CHAR, value: 95 },\n { type: types.RANGE, from: 97, to: 122 },\n { type: types.RANGE, from: 65, to: 90 }\n ].concat(INTS());\n};\n\nvar WHITESPACE = function() {\n return [\n { type: types.CHAR, value: 9 },\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 11 },\n { type: types.CHAR, value: 12 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 32 },\n { type: types.CHAR, value: 160 },\n { type: types.CHAR, value: 5760 },\n { type: types.CHAR, value: 6158 },\n { type: types.CHAR, value: 8192 },\n { type: types.CHAR, value: 8193 },\n { type: types.CHAR, value: 8194 },\n { type: types.CHAR, value: 8195 },\n { type: types.CHAR, value: 8196 },\n { type: types.CHAR, value: 8197 },\n { type: types.CHAR, value: 8198 },\n { type: types.CHAR, value: 8199 },\n { type: types.CHAR, value: 8200 },\n { type: types.CHAR, value: 8201 },\n { type: types.CHAR, value: 8202 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n { type: types.CHAR, value: 8239 },\n { type: types.CHAR, value: 8287 },\n { type: types.CHAR, value: 12288 },\n { type: types.CHAR, value: 65279 }\n ];\n};\n\nvar NOTANYCHAR = function() {\n return [\n { type: types.CHAR, value: 10 },\n { type: types.CHAR, value: 13 },\n { type: types.CHAR, value: 8232 },\n { type: types.CHAR, value: 8233 },\n ];\n};\n\n// Predefined class objects.\nexports.words = function() {\n return { type: types.SET, set: WORDS(), not: false };\n};\n\nexports.notWords = function() {\n return { type: types.SET, set: WORDS(), not: true };\n};\n\nexports.ints = function() {\n return { type: types.SET, set: INTS(), not: false };\n};\n\nexports.notInts = function() {\n return { type: types.SET, set: INTS(), not: true };\n};\n\nexports.whitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: false };\n};\n\nexports.notWhitespace = function() {\n return { type: types.SET, set: WHITESPACE(), not: true };\n};\n\nexports.anyChar = function() {\n return { type: types.SET, set: NOTANYCHAR(), not: true };\n};\n","var types = require('./types');\nvar sets = require('./sets');\n\n\n// All of these are private and only used by randexp.\n// It's assumed that they will always be called with the correct input.\n\nvar CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?';\nvar SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 };\n\n/**\n * Finds character representations in str and convert all to\n * their respective characters\n *\n * @param {String} str\n * @return {String}\n */\nexports.strToChars = function(str) {\n /* jshint maxlen: false */\n var chars_regex = /(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\\[\\\\\\]\\^?])|([0tnvfr]))/g;\n str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) {\n if (lbs) {\n return s;\n }\n\n var code = b ? 8 :\n a16 ? parseInt(a16, 16) :\n b16 ? parseInt(b16, 16) :\n c8 ? parseInt(c8, 8) :\n dctrl ? CTRL.indexOf(dctrl) :\n SLSH[eslsh];\n\n var c = String.fromCharCode(code);\n\n // Escape special regex characters.\n if (/[\\[\\]{}\\^$.|?*+()]/.test(c)) {\n c = '\\\\' + c;\n }\n\n return c;\n });\n\n return str;\n};\n\n\n/**\n * turns class into tokens\n * reads str until it encounters a ] not preceeded by a \\\n *\n * @param {String} str\n * @param {String} regexpStr\n * @return {Array., Number>}\n */\nexports.tokenizeClass = function(str, regexpStr) {\n /* jshint maxlen: false */\n var tokens = [];\n var regexp = /\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?(.)/g;\n var rs, c;\n\n\n while ((rs = regexp.exec(str)) != null) {\n if (rs[1]) {\n tokens.push(sets.words());\n\n } else if (rs[2]) {\n tokens.push(sets.ints());\n\n } else if (rs[3]) {\n tokens.push(sets.whitespace());\n\n } else if (rs[4]) {\n tokens.push(sets.notWords());\n\n } else if (rs[5]) {\n tokens.push(sets.notInts());\n\n } else if (rs[6]) {\n tokens.push(sets.notWhitespace());\n\n } else if (rs[7]) {\n tokens.push({\n type: types.RANGE,\n from: (rs[8] || rs[9]).charCodeAt(0),\n to: rs[10].charCodeAt(0),\n });\n\n } else if (c = rs[12]) {\n tokens.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n\n } else {\n return [tokens, regexp.lastIndex];\n }\n }\n\n exports.error(regexpStr, 'Unterminated character class');\n};\n\n\n/**\n * Shortcut to throw errors.\n *\n * @param {String} regexp\n * @param {String} msg\n */\nexports.error = function(regexp, msg) {\n throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg);\n};\n","var util = require('./util');\nvar types = require('./types');\nvar sets = require('./sets');\nvar positions = require('./positions');\n\n\nmodule.exports = function(regexpStr) {\n var i = 0, l, c,\n start = { type: types.ROOT, stack: []},\n\n // Keep track of last clause/group and stack.\n lastGroup = start,\n last = start.stack,\n groupStack = [];\n\n\n var repeatErr = function(i) {\n util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1));\n };\n\n // Decode a few escaped characters.\n var str = util.strToChars(regexpStr);\n l = str.length;\n\n // Iterate through each character in string.\n while (i < l) {\n c = str[i++];\n\n switch (c) {\n // Handle escaped characters, inclues a few sets.\n case '\\\\':\n c = str[i++];\n\n switch (c) {\n case 'b':\n last.push(positions.wordBoundary());\n break;\n\n case 'B':\n last.push(positions.nonWordBoundary());\n break;\n\n case 'w':\n last.push(sets.words());\n break;\n\n case 'W':\n last.push(sets.notWords());\n break;\n\n case 'd':\n last.push(sets.ints());\n break;\n\n case 'D':\n last.push(sets.notInts());\n break;\n\n case 's':\n last.push(sets.whitespace());\n break;\n\n case 'S':\n last.push(sets.notWhitespace());\n break;\n\n default:\n // Check if c is integer.\n // In which case it's a reference.\n if (/\\d/.test(c)) {\n last.push({ type: types.REFERENCE, value: parseInt(c, 10) });\n\n // Escaped character.\n } else {\n last.push({ type: types.CHAR, value: c.charCodeAt(0) });\n }\n }\n\n break;\n\n\n // Positionals.\n case '^':\n last.push(positions.begin());\n break;\n\n case '$':\n last.push(positions.end());\n break;\n\n\n // Handle custom sets.\n case '[':\n // Check if this class is 'anti' i.e. [^abc].\n var not;\n if (str[i] === '^') {\n not = true;\n i++;\n } else {\n not = false;\n }\n\n // Get all the characters in class.\n var classTokens = util.tokenizeClass(str.slice(i), regexpStr);\n\n // Increase index by length of class.\n i += classTokens[1];\n last.push({\n type: types.SET,\n set: classTokens[0],\n not: not,\n });\n\n break;\n\n\n // Class of any character except \\n.\n case '.':\n last.push(sets.anyChar());\n break;\n\n\n // Push group onto stack.\n case '(':\n // Create group.\n var group = {\n type: types.GROUP,\n stack: [],\n remember: true,\n };\n\n c = str[i];\n\n // If if this is a special kind of group.\n if (c === '?') {\n c = str[i + 1];\n i += 2;\n\n // Match if followed by.\n if (c === '=') {\n group.followedBy = true;\n\n // Match if not followed by.\n } else if (c === '!') {\n group.notFollowedBy = true;\n\n } else if (c !== ':') {\n util.error(regexpStr,\n 'Invalid group, character \\'' + c +\n '\\' after \\'?\\' at column ' + (i - 1));\n }\n\n group.remember = false;\n }\n\n // Insert subgroup into current group stack.\n last.push(group);\n\n // Remember the current group for when the group closes.\n groupStack.push(lastGroup);\n\n // Make this new group the current group.\n lastGroup = group;\n last = group.stack;\n break;\n\n\n // Pop group out of stack.\n case ')':\n if (groupStack.length === 0) {\n util.error(regexpStr, 'Unmatched ) at column ' + (i - 1));\n }\n lastGroup = groupStack.pop();\n\n // Check if this group has a PIPE.\n // To get back the correct last stack.\n last = lastGroup.options ?\n lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack;\n break;\n\n\n // Use pipe character to give more choices.\n case '|':\n // Create array where options are if this is the first PIPE\n // in this clause.\n if (!lastGroup.options) {\n lastGroup.options = [lastGroup.stack];\n delete lastGroup.stack;\n }\n\n // Create a new stack and add to options for rest of clause.\n var stack = [];\n lastGroup.options.push(stack);\n last = stack;\n break;\n\n\n // Repetition.\n // For every repetition, remove last element from last stack\n // then insert back a RANGE object.\n // This design is chosen because there could be more than\n // one repetition symbols in a regex i.e. `a?+{2,3}`.\n case '{':\n var rs = /^(\\d+)(,(\\d+)?)?\\}/.exec(str.slice(i)), min, max;\n if (rs !== null) {\n if (last.length === 0) {\n repeatErr(i);\n }\n min = parseInt(rs[1], 10);\n max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min;\n i += rs[0].length;\n\n last.push({\n type: types.REPETITION,\n min: min,\n max: max,\n value: last.pop(),\n });\n } else {\n last.push({\n type: types.CHAR,\n value: 123,\n });\n }\n break;\n\n case '?':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: 1,\n value: last.pop(),\n });\n break;\n\n case '+':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 1,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n case '*':\n if (last.length === 0) {\n repeatErr(i);\n }\n last.push({\n type: types.REPETITION,\n min: 0,\n max: Infinity,\n value: last.pop(),\n });\n break;\n\n\n // Default is a character that is not `\\[](){}?+*^$`.\n default:\n last.push({\n type: types.CHAR,\n value: c.charCodeAt(0),\n });\n }\n\n }\n\n // Check if any groups have not been closed.\n if (groupStack.length !== 0) {\n util.error(regexpStr, 'Unterminated group');\n }\n\n return start;\n};\n\nmodule.exports.types = types;\n","var types = require('./types');\n\nexports.wordBoundary = function() {\n return { type: types.POSITION, value: 'b' };\n};\n\nexports.nonWordBoundary = function() {\n return { type: types.POSITION, value: 'B' };\n};\n\nexports.begin = function() {\n return { type: types.POSITION, value: '^' };\n};\n\nexports.end = function() {\n return { type: types.POSITION, value: '$' };\n};\n","module.exports = {\n ROOT : 0,\n GROUP : 1,\n POSITION : 2,\n SET : 3,\n RANGE : 4,\n REPETITION : 5,\n REFERENCE : 6,\n CHAR : 7,\n};\n","var parse = require('ret');\nvar types = parse.types;\n\nmodule.exports = function (re, opts) {\n if (!opts) opts = {};\n var replimit = opts.limit === undefined ? 25 : opts.limit;\n \n if (isRegExp(re)) re = re.source;\n else if (typeof re !== 'string') re = String(re);\n \n try { re = parse(re) }\n catch (err) { return false }\n \n var reps = 0;\n return (function walk (node, starHeight) {\n if (node.type === types.REPETITION) {\n starHeight ++;\n reps ++;\n if (starHeight > 1) return false;\n if (reps > replimit) return false;\n }\n \n if (node.options) {\n for (var i = 0, len = node.options.length; i < len; i++) {\n var ok = walk({ stack: node.options[i] }, starHeight);\n if (!ok) return false;\n }\n }\n var stack = node.stack || (node.value && node.value.stack);\n if (!stack) return true;\n \n for (var i = 0; i < stack.length; i++) {\n var ok = walk(stack[i], starHeight);\n if (!ok) return false;\n }\n \n return true;\n })(re, 0);\n};\n\nfunction isRegExp (x) {\n return {}.toString.call(x) === '[object RegExp]';\n}\n","/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","/*!\n * is-accessor-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\n// accessor descriptor properties\nvar accessor = {\n get: 'function',\n set: 'function',\n configurable: 'boolean',\n enumerable: 'boolean'\n};\n\nfunction isAccessorDescriptor(obj, prop) {\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (has(obj, 'value') || has(obj, 'writable')) {\n return false;\n }\n\n if (!has(obj, 'get') || typeof obj.get !== 'function') {\n return false;\n }\n\n // tldr: it's valid to have \"set\" be undefined\n // \"set\" might be undefined if `Object.getOwnPropertyDescriptor`\n // was used to get the value, and only `get` was defined by the user\n if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') {\n return false;\n }\n\n for (var key in obj) {\n if (!accessor.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === accessor[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n}\n\nfunction has(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `isAccessorDescriptor`\n */\n\nmodule.exports = isAccessorDescriptor;\n","/*!\n * is-data-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isDataDescriptor(obj, prop) {\n // data descriptor properties\n var data = {\n configurable: 'boolean',\n enumerable: 'boolean',\n writable: 'boolean'\n };\n\n if (typeOf(obj) !== 'object') {\n return false;\n }\n\n if (typeof prop === 'string') {\n var val = Object.getOwnPropertyDescriptor(obj, prop);\n return typeof val !== 'undefined';\n }\n\n if (!('value' in obj) && !('writable' in obj)) {\n return false;\n }\n\n for (var key in obj) {\n if (key === 'value') continue;\n\n if (!data.hasOwnProperty(key)) {\n continue;\n }\n\n if (typeOf(obj[key]) === data[key]) {\n continue;\n }\n\n if (typeof obj[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n};\n","/*!\n * is-descriptor \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isAccessor = require('is-accessor-descriptor');\nvar isData = require('is-data-descriptor');\n\nmodule.exports = function isDescriptor(obj, key) {\n if (typeOf(obj) !== 'object') {\n return false;\n }\n if ('get' in obj) {\n return isAccessor(obj, key);\n }\n return isData(obj, key);\n};\n","/*!\n * define-property \n *\n * Copyright (c) 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isobject = require('isobject');\nvar isDescriptor = require('is-descriptor');\nvar define = (typeof Reflect !== 'undefined' && Reflect.defineProperty)\n ? Reflect.defineProperty\n : Object.defineProperty;\n\nmodule.exports = function defineProperty(obj, key, val) {\n if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) {\n throw new TypeError('expected an object, function, or array');\n }\n\n if (typeof key !== 'string') {\n throw new TypeError('expected \"key\" to be a string');\n }\n\n if (isDescriptor(val)) {\n define(obj, key, val);\n return obj;\n }\n\n define(obj, key, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val\n });\n\n return obj;\n};\n","'use strict';\n\nvar safe = require('safe-regex');\nvar define = require('define-property');\nvar extend = require('extend-shallow');\nvar not = require('regex-not');\nvar MAX_LENGTH = 1024 * 64;\n\n/**\n * Session cache\n */\n\nvar cache = {};\n\n/**\n * Create a regular expression from the given `pattern` string.\n *\n * @param {String|RegExp} `pattern` Pattern can be a string or regular expression.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nmodule.exports = function(patterns, options) {\n if (!Array.isArray(patterns)) {\n return makeRe(patterns, options);\n }\n return makeRe(patterns.join('|'), options);\n};\n\n/**\n * Create a regular expression from the given `pattern` string.\n *\n * @param {String|RegExp} `pattern` Pattern can be a string or regular expression.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nfunction makeRe(pattern, options) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (pattern.length > MAX_LENGTH) {\n throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters');\n }\n\n var key = pattern;\n // do this before shallow cloning options, it's a lot faster\n if (!options || (options && options.cache !== false)) {\n key = createKey(pattern, options);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n }\n\n var opts = extend({}, options);\n if (opts.contains === true) {\n if (opts.negate === true) {\n opts.strictNegate = false;\n } else {\n opts.strict = false;\n }\n }\n\n if (opts.strict === false) {\n opts.strictOpen = false;\n opts.strictClose = false;\n }\n\n var open = opts.strictOpen !== false ? '^' : '';\n var close = opts.strictClose !== false ? '$' : '';\n var flags = opts.flags || '';\n var regex;\n\n if (opts.nocase === true && !/i/.test(flags)) {\n flags += 'i';\n }\n\n try {\n if (opts.negate || typeof opts.strictNegate === 'boolean') {\n pattern = not.create(pattern, opts);\n }\n\n var str = open + '(?:' + pattern + ')' + close;\n regex = new RegExp(str, flags);\n\n if (opts.safe === true && safe(regex) === false) {\n throw new Error('potentially unsafe regular expression: ' + regex.source);\n }\n\n } catch (err) {\n if (opts.strictErrors === true || opts.safe === true) {\n err.key = key;\n err.pattern = pattern;\n err.originalOptions = options;\n err.createdOptions = opts;\n throw err;\n }\n\n try {\n regex = new RegExp('^' + pattern.replace(/(\\W)/g, '\\\\$1') + '$');\n } catch (err) {\n regex = /.^/; //<= match nothing\n }\n }\n\n if (opts.cache !== false) {\n memoize(regex, key, pattern, opts);\n }\n return regex;\n}\n\n/**\n * Memoize generated regex. This can result in dramatic speed improvements\n * and simplify debugging by adding options and pattern to the regex. It can be\n * disabled by passing setting `options.cache` to false.\n */\n\nfunction memoize(regex, key, pattern, options) {\n define(regex, 'cached', true);\n define(regex, 'pattern', pattern);\n define(regex, 'options', options);\n define(regex, 'key', key);\n cache[key] = regex;\n}\n\n/**\n * Create the key to use for memoization. The key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nfunction createKey(pattern, options) {\n if (!options) return pattern;\n var key = pattern;\n for (var prop in options) {\n if (options.hasOwnProperty(prop)) {\n key += ';' + prop + '=' + String(options[prop]);\n }\n }\n return key;\n}\n\n/**\n * Expose `makeRe`\n */\n\nmodule.exports.makeRe = makeRe;\n","'use strict';\n\nvar isObject = require('is-extendable');\n\nmodule.exports = function extend(o/*, objects*/) {\n if (!isObject(o)) { o = {}; }\n\n var len = arguments.length;\n for (var i = 1; i < len; i++) {\n var obj = arguments[i];\n\n if (isObject(obj)) {\n assign(o, obj);\n }\n }\n return o;\n};\n\nfunction assign(a, b) {\n for (var key in b) {\n if (hasOwn(b, key)) {\n a[key] = b[key];\n }\n }\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","/*!\n * is-extendable \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n","'use strict';\n\nvar extend = require('extend-shallow');\nvar safe = require('safe-regex');\n\n/**\n * The main export is a function that takes a `pattern` string and an `options` object.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not('foo'));\n & //=> /^(?:(?!^(?:foo)$).)*$/\n * ```\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`.\n * @api public\n */\n\nfunction toRegex(pattern, options) {\n return new RegExp(toRegex.create(pattern, options));\n}\n\n/**\n * Create a regex-compatible string from the given `pattern` and `options`.\n *\n * ```js\n & var not = require('regex-not');\n & console.log(not.create('foo'));\n & //=> '^(?:(?!^(?:foo)$).)*$'\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\ntoRegex.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var opts = extend({}, options);\n if (opts.contains === true) {\n opts.strictNegate = false;\n }\n\n var open = opts.strictOpen !== false ? '^' : '';\n var close = opts.strictClose !== false ? '$' : '';\n var endChar = opts.endChar ? opts.endChar : '+';\n var str = pattern;\n\n if (opts.strictNegate === false) {\n str = '(?:(?!(?:' + pattern + ')).)' + endChar;\n } else {\n str = '(?:(?!^(?:' + pattern + ')$).)' + endChar;\n }\n\n var res = open + str + close;\n if (opts.safe === true && safe(res) === false) {\n throw new Error('potentially unsafe regular expression: ' + res);\n }\n\n return res;\n};\n\n/**\n * Expose `toRegex`\n */\n\nmodule.exports = toRegex;\n","/*!\n * array-unique \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function unique(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var len = arr.length;\n var i = -1;\n\n while (i++ < len) {\n var j = i + 1;\n\n for (; j < arr.length; ++j) {\n if (arr[i] === arr[j]) {\n arr.splice(j--, 1);\n }\n }\n }\n return arr;\n};\n\nmodule.exports.immutable = function uniqueImmutable(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var arrLen = arr.length;\n var newArr = new Array(arrLen);\n\n for (var i = 0; i < arrLen; i++) {\n newArr[i] = arr[i];\n }\n\n return module.exports(newArr);\n};\n","/*!\n * split-string \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar extend = require('extend-shallow');\n\nmodule.exports = function(str, options, fn) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n if (typeof options === 'function') {\n fn = options;\n options = null;\n }\n\n // allow separator to be defined as a string\n if (typeof options === 'string') {\n options = { sep: options };\n }\n\n var opts = extend({sep: '.'}, options);\n var quotes = opts.quotes || ['\"', \"'\", '`'];\n var brackets;\n\n if (opts.brackets === true) {\n brackets = {\n '<': '>',\n '(': ')',\n '[': ']',\n '{': '}'\n };\n } else if (opts.brackets) {\n brackets = opts.brackets;\n }\n\n var tokens = [];\n var stack = [];\n var arr = [''];\n var sep = opts.sep;\n var len = str.length;\n var idx = -1;\n var closeIdx;\n\n function expected() {\n if (brackets && stack.length) {\n return brackets[stack[stack.length - 1]];\n }\n }\n\n while (++idx < len) {\n var ch = str[idx];\n var next = str[idx + 1];\n var tok = { val: ch, idx: idx, arr: arr, str: str };\n tokens.push(tok);\n\n if (ch === '\\\\') {\n tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next;\n tok.escaped = true;\n if (typeof fn === 'function') {\n fn(tok);\n }\n arr[arr.length - 1] += tok.val;\n idx++;\n continue;\n }\n\n if (brackets && brackets[ch]) {\n stack.push(ch);\n var e = expected();\n var i = idx + 1;\n\n if (str.indexOf(e, i + 1) !== -1) {\n while (stack.length && i < len) {\n var s = str[++i];\n if (s === '\\\\') {\n s++;\n continue;\n }\n\n if (quotes.indexOf(s) !== -1) {\n i = getClosingQuote(str, s, i + 1);\n continue;\n }\n\n e = expected();\n if (stack.length && str.indexOf(e, i + 1) === -1) {\n break;\n }\n\n if (brackets[s]) {\n stack.push(s);\n continue;\n }\n\n if (e === s) {\n stack.pop();\n }\n }\n }\n\n closeIdx = i;\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n ch = str.slice(idx, closeIdx + 1);\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (quotes.indexOf(ch) !== -1) {\n closeIdx = getClosingQuote(str, ch, idx + 1);\n if (closeIdx === -1) {\n arr[arr.length - 1] += ch;\n continue;\n }\n\n if (keepQuotes(ch, opts) === true) {\n ch = str.slice(idx, closeIdx + 1);\n } else {\n ch = str.slice(idx + 1, closeIdx);\n }\n\n tok.val = ch;\n tok.idx = idx = closeIdx;\n }\n\n if (typeof fn === 'function') {\n fn(tok, tokens);\n ch = tok.val;\n idx = tok.idx;\n }\n\n if (tok.val === sep && tok.split !== false) {\n arr.push('');\n continue;\n }\n\n arr[arr.length - 1] += tok.val;\n }\n\n return arr;\n};\n\nfunction getClosingQuote(str, ch, i, brackets) {\n var idx = str.indexOf(ch, i);\n if (str.charAt(idx - 1) === '\\\\') {\n return getClosingQuote(str, ch, idx + 1);\n }\n return idx;\n}\n\nfunction keepQuotes(ch, opts) {\n if (opts.keepDoubleQuotes === true && ch === '\"') return true;\n if (opts.keepSingleQuotes === true && ch === \"'\") return true;\n return opts.keepQuotes;\n}\n\nfunction keepEscaping(opts, str, idx) {\n if (typeof opts.keepEscaping === 'function') {\n return opts.keepEscaping(str, idx);\n }\n return opts.keepEscaping === true || str[idx + 1] === '\\\\';\n}\n","'use strict';\n\nvar splitString = require('split-string');\nvar utils = module.exports;\n\n/**\n * Module dependencies\n */\n\nutils.extend = require('extend-shallow');\nutils.flatten = require('arr-flatten');\nutils.isObject = require('isobject');\nutils.fillRange = require('fill-range');\nutils.repeat = require('repeat-element');\nutils.unique = require('array-unique');\n\nutils.define = function(obj, key, val) {\n Object.defineProperty(obj, key, {\n writable: true,\n configurable: true,\n enumerable: false,\n value: val\n });\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isEmptySets = function(str) {\n return /^(?:\\{,\\})+$/.test(str);\n};\n\n/**\n * Returns true if the given string contains only empty brace sets.\n */\n\nutils.isQuotedString = function(str) {\n var open = str.charAt(0);\n if (open === '\\'' || open === '\"' || open === '`') {\n return str.slice(-1) === open;\n }\n return false;\n};\n\n/**\n * Create the key to use for memoization. The unique key is generated\n * by iterating over the options and concatenating key-value pairs\n * to the pattern string.\n */\n\nutils.createKey = function(pattern, options) {\n var id = pattern;\n if (typeof options === 'undefined') {\n return id;\n }\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n id += ';' + key + '=' + String(options[key]);\n }\n return id;\n};\n\n/**\n * Normalize options\n */\n\nutils.createOptions = function(options) {\n var opts = utils.extend.apply(null, arguments);\n if (typeof opts.expand === 'boolean') {\n opts.optimize = !opts.expand;\n }\n if (typeof opts.optimize === 'boolean') {\n opts.expand = !opts.optimize;\n }\n if (opts.optimize === true) {\n opts.makeRe = true;\n }\n return opts;\n};\n\n/**\n * Join patterns in `a` to patterns in `b`\n */\n\nutils.join = function(a, b, options) {\n options = options || {};\n a = utils.arrayify(a);\n b = utils.arrayify(b);\n\n if (!a.length) return b;\n if (!b.length) return a;\n\n var len = a.length;\n var idx = -1;\n var arr = [];\n\n while (++idx < len) {\n var val = a[idx];\n if (Array.isArray(val)) {\n for (var i = 0; i < val.length; i++) {\n val[i] = utils.join(val[i], b, options);\n }\n arr.push(val);\n continue;\n }\n\n for (var j = 0; j < b.length; j++) {\n var bval = b[j];\n\n if (Array.isArray(bval)) {\n arr.push(utils.join(val, bval, options));\n } else {\n arr.push(val + bval);\n }\n }\n }\n return arr;\n};\n\n/**\n * Split the given string on `,` if not escaped.\n */\n\nutils.split = function(str, options) {\n var opts = utils.extend({sep: ','}, options);\n if (typeof opts.keepQuotes !== 'boolean') {\n opts.keepQuotes = true;\n }\n if (opts.unescape === false) {\n opts.keepEscaping = true;\n }\n return splitString(str, opts, utils.escapeBrackets(opts));\n};\n\n/**\n * Expand ranges or sets in the given `pattern`.\n *\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object}\n */\n\nutils.expand = function(str, options) {\n var opts = utils.extend({rangeLimit: 10000}, options);\n var segs = utils.split(str, opts);\n var tok = { segs: segs };\n\n if (utils.isQuotedString(str)) {\n return tok;\n }\n\n if (opts.rangeLimit === true) {\n opts.rangeLimit = 10000;\n }\n\n if (segs.length > 1) {\n if (opts.optimize === false) {\n tok.val = segs[0];\n return tok;\n }\n\n tok.segs = utils.stringifyArray(tok.segs);\n } else if (segs.length === 1) {\n var arr = str.split('..');\n\n if (arr.length === 1) {\n tok.val = tok.segs[tok.segs.length - 1] || tok.val || str;\n tok.segs = [];\n return tok;\n }\n\n if (arr.length === 2 && arr[0] === arr[1]) {\n tok.escaped = true;\n tok.val = arr[0];\n tok.segs = [];\n return tok;\n }\n\n if (arr.length > 1) {\n if (opts.optimize !== false) {\n opts.optimize = true;\n delete opts.expand;\n }\n\n if (opts.optimize !== true) {\n var min = Math.min(arr[0], arr[1]);\n var max = Math.max(arr[0], arr[1]);\n var step = arr[2] || 1;\n\n if (opts.rangeLimit !== false && ((max - min) / step >= opts.rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n }\n\n arr.push(opts);\n tok.segs = utils.fillRange.apply(null, arr);\n\n if (!tok.segs.length) {\n tok.escaped = true;\n tok.val = str;\n return tok;\n }\n\n if (opts.optimize === true) {\n tok.segs = utils.stringifyArray(tok.segs);\n }\n\n if (tok.segs === '') {\n tok.val = str;\n } else {\n tok.val = tok.segs[0];\n }\n return tok;\n }\n } else {\n tok.val = str;\n }\n return tok;\n};\n\n/**\n * Ensure commas inside brackets and parens are not split.\n * @param {Object} `tok` Token from the `split-string` module\n * @return {undefined}\n */\n\nutils.escapeBrackets = function(options) {\n return function(tok) {\n if (tok.escaped && tok.val === 'b') {\n tok.val = '\\\\b';\n return;\n }\n\n if (tok.val !== '(' && tok.val !== '[') return;\n var opts = utils.extend({}, options);\n var brackets = [];\n var parens = [];\n var stack = [];\n var val = tok.val;\n var str = tok.str;\n var i = tok.idx - 1;\n\n while (++i < str.length) {\n var ch = str[i];\n\n if (ch === '\\\\') {\n val += (opts.keepEscaping === false ? '' : ch) + str[++i];\n continue;\n }\n\n if (ch === '(') {\n parens.push(ch);\n stack.push(ch);\n }\n\n if (ch === '[') {\n brackets.push(ch);\n stack.push(ch);\n }\n\n if (ch === ')') {\n parens.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n\n if (ch === ']') {\n brackets.pop();\n stack.pop();\n if (!stack.length) {\n val += ch;\n break;\n }\n }\n val += ch;\n }\n\n tok.split = false;\n tok.val = val.slice(1);\n tok.idx = i;\n };\n};\n\n/**\n * Returns true if the given string looks like a regex quantifier\n * @return {Boolean}\n */\n\nutils.isQuantifier = function(str) {\n return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str);\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.stringifyArray = function(arr) {\n return [utils.arrayify(arr).join('|')];\n};\n\n/**\n * Cast `val` to an array.\n * @param {*} `val`\n */\n\nutils.arrayify = function(arr) {\n if (typeof arr === 'undefined') {\n return [];\n }\n if (typeof arr === 'string') {\n return [arr];\n }\n return arr;\n};\n\n/**\n * Returns true if the given `str` is a non-empty string\n * @return {Boolean}\n */\n\nutils.isString = function(str) {\n return str != null && typeof str === 'string';\n};\n\n/**\n * Get the last element from `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\nutils.escapeRegex = function(str) {\n return str.replace(/\\\\?([!^*?()[\\]{}+?/])/g, '\\\\$1');\n};\n","/*!\n * arr-flatten \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function (arr) {\n return flat(arr, []);\n};\n\nfunction flat(arr, res) {\n var i = 0, cur;\n var len = arr.length;\n for (; i < len; i++) {\n cur = arr[i];\n Array.isArray(cur) ? flat(cur, res) : res.push(cur);\n }\n return res;\n}\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar util = require('util');\nvar isNumber = require('is-number');\nvar extend = require('extend-shallow');\nvar repeat = require('repeat-string');\nvar toRegex = require('to-regex-range');\n\n/**\n * Return a range of numbers or letters.\n *\n * @param {String} `start` Start of the range\n * @param {String} `stop` End of the range\n * @param {String} `step` Increment or decrement to use.\n * @param {Function} `fn` Custom function to modify each element in the range.\n * @return {Array}\n */\n\nfunction fillRange(start, stop, step, options) {\n if (typeof start === 'undefined') {\n return [];\n }\n\n if (typeof stop === 'undefined' || start === stop) {\n // special case, for handling negative zero\n var isString = typeof start === 'string';\n if (isNumber(start) && !toNumber(start)) {\n return [isString ? '0' : 0];\n }\n return [start];\n }\n\n if (typeof step !== 'number' && typeof step !== 'string') {\n options = step;\n step = undefined;\n }\n\n if (typeof options === 'function') {\n options = { transform: options };\n }\n\n var opts = extend({step: step}, options);\n if (opts.step && !isValidNumber(opts.step)) {\n if (opts.strictRanges === true) {\n throw new TypeError('expected options.step to be a number');\n }\n return [];\n }\n\n opts.isNumber = isValidNumber(start) && isValidNumber(stop);\n if (!opts.isNumber && !isValid(start, stop)) {\n if (opts.strictRanges === true) {\n throw new RangeError('invalid range arguments: ' + util.inspect([start, stop]));\n }\n return [];\n }\n\n opts.isPadded = isPadded(start) || isPadded(stop);\n opts.toString = opts.stringify\n || typeof opts.step === 'string'\n || typeof start === 'string'\n || typeof stop === 'string'\n || !opts.isNumber;\n\n if (opts.isPadded) {\n opts.maxLength = Math.max(String(start).length, String(stop).length);\n }\n\n // support legacy minimatch/fill-range options\n if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize;\n if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe;\n return expand(start, stop, opts);\n}\n\nfunction expand(start, stop, options) {\n var a = options.isNumber ? toNumber(start) : start.charCodeAt(0);\n var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0);\n\n var step = Math.abs(toNumber(options.step)) || 1;\n if (options.toRegex && step === 1) {\n return toRange(a, b, start, stop, options);\n }\n\n var zero = {greater: [], lesser: []};\n var asc = a < b;\n var arr = new Array(Math.round((asc ? b - a : a - b) / step));\n var idx = 0;\n\n while (asc ? a <= b : a >= b) {\n var val = options.isNumber ? a : String.fromCharCode(a);\n if (options.toRegex && (val >= 0 || !options.isNumber)) {\n zero.greater.push(val);\n } else {\n zero.lesser.push(Math.abs(val));\n }\n\n if (options.isPadded) {\n val = zeros(val, options);\n }\n\n if (options.toString) {\n val = String(val);\n }\n\n if (typeof options.transform === 'function') {\n arr[idx++] = options.transform(val, a, b, step, idx, arr, options);\n } else {\n arr[idx++] = val;\n }\n\n if (asc) {\n a += step;\n } else {\n a -= step;\n }\n }\n\n if (options.toRegex === true) {\n return toSequence(arr, zero, options);\n }\n return arr;\n}\n\nfunction toRange(a, b, start, stop, options) {\n if (options.isPadded) {\n return toRegex(start, stop, options);\n }\n\n if (options.isNumber) {\n return toRegex(Math.min(a, b), Math.max(a, b), options);\n }\n\n var start = String.fromCharCode(Math.min(a, b));\n var stop = String.fromCharCode(Math.max(a, b));\n return '[' + start + '-' + stop + ']';\n}\n\nfunction toSequence(arr, zeros, options) {\n var greater = '', lesser = '';\n if (zeros.greater.length) {\n greater = zeros.greater.join('|');\n }\n if (zeros.lesser.length) {\n lesser = '-(' + zeros.lesser.join('|') + ')';\n }\n var res = greater && lesser\n ? greater + '|' + lesser\n : greater || lesser;\n\n if (options.capture) {\n return '(' + res + ')';\n }\n return res;\n}\n\nfunction zeros(val, options) {\n if (options.isPadded) {\n var str = String(val);\n var len = str.length;\n var dash = '';\n if (str.charAt(0) === '-') {\n dash = '-';\n str = str.slice(1);\n }\n var diff = options.maxLength - len;\n var pad = repeat('0', diff);\n val = (dash + pad + str);\n }\n if (options.stringify) {\n return String(val);\n }\n return val;\n}\n\nfunction toNumber(val) {\n return Number(val) || 0;\n}\n\nfunction isPadded(str) {\n return /^-?0\\d/.test(str);\n}\n\nfunction isValid(min, max) {\n return (isValidNumber(min) || isValidLetter(min))\n && (isValidNumber(max) || isValidLetter(max));\n}\n\nfunction isValidLetter(ch) {\n return typeof ch === 'string' && ch.length === 1 && /^\\w+$/.test(ch);\n}\n\nfunction isValidNumber(n) {\n return isNumber(n) && !/\\./.test(n);\n}\n\n/**\n * Expose `fillRange`\n * @type {Function}\n */\n\nmodule.exports = fillRange;\n","/*!\n * is-number \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function isNumber(num) {\n var type = typeOf(num);\n\n if (type === 'string') {\n if (!num.trim()) return false;\n } else if (type !== 'number') {\n return false;\n }\n\n return (num - num + 1) >= 0;\n};\n","/*!\n * repeat-string \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar repeat = require('repeat-string');\nvar isNumber = require('is-number');\nvar cache = {};\n\nfunction toRegexRange(min, max, options) {\n if (isNumber(min) === false) {\n throw new RangeError('toRegexRange: first argument is invalid.');\n }\n\n if (typeof max === 'undefined' || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new RangeError('toRegexRange: second argument is invalid.');\n }\n\n options = options || {};\n var relax = String(options.relaxZeros);\n var shorthand = String(options.shorthand);\n var capture = String(options.capture);\n var key = min + ':' + max + '=' + relax + shorthand + capture;\n if (cache.hasOwnProperty(key)) {\n return cache[key].result;\n }\n\n var a = Math.min(min, max);\n var b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n var result = min + '|' + max;\n if (options.capture) {\n return '(' + result + ')';\n }\n return result;\n }\n\n var isPadded = padding(min) || padding(max);\n var positives = [];\n var negatives = [];\n\n var tok = {min: min, max: max, a: a, b: b};\n if (isPadded) {\n tok.isPadded = isPadded;\n tok.maxLen = String(tok.max).length;\n }\n\n if (a < 0) {\n var newMin = b < 0 ? Math.abs(b) : 1;\n var newMax = Math.abs(a);\n negatives = splitToPatterns(newMin, newMax, tok, options);\n a = tok.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, tok, options);\n }\n\n tok.negatives = negatives;\n tok.positives = positives;\n tok.result = siftPatterns(negatives, positives, options);\n\n if (options.capture && (positives.length + negatives.length) > 1) {\n tok.result = '(' + tok.result + ')';\n }\n\n cache[key] = tok;\n return tok.result;\n}\n\nfunction siftPatterns(neg, pos, options) {\n var onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n var onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n var intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n min = Number(min);\n max = Number(max);\n\n var nines = 1;\n var stops = [max];\n var stop = +countNines(min, nines);\n\n while (min <= stop && stop <= max) {\n stops = push(stops, stop);\n nines += 1;\n stop = +countNines(min, nines);\n }\n\n var zeros = 1;\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops = push(stops, stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return {pattern: String(start), digits: []};\n }\n\n var zipped = zip(String(start), String(stop));\n var len = zipped.length, i = -1;\n\n var pattern = '';\n var digits = 0;\n\n while (++i < len) {\n var numbers = zipped[i];\n var startDigit = numbers[0];\n var stopDigit = numbers[1];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit);\n\n } else {\n digits += 1;\n }\n }\n\n if (digits) {\n pattern += options.shorthand ? '\\\\d' : '[0-9]';\n }\n\n return { pattern: pattern, digits: [digits] };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n var ranges = splitToRanges(min, max);\n var len = ranges.length;\n var idx = -1;\n\n var tokens = [];\n var start = min;\n var prev;\n\n while (++idx < len) {\n var range = ranges[idx];\n var obj = rangeToPattern(start, range, options);\n var zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.digits.length > 1) {\n prev.digits.pop();\n }\n prev.digits.push(obj.digits[0]);\n prev.string = prev.pattern + toQuantifier(prev.digits);\n start = range + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(range, tok);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.digits);\n tokens.push(obj);\n start = range + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n var res = [];\n\n for (var i = 0; i < arr.length; i++) {\n var tok = arr[i];\n var ele = tok.string;\n\n if (options.relaxZeros !== false) {\n if (prefix === '-' && ele.charAt(0) === '0') {\n if (ele.charAt(1) === '{') {\n ele = '0*' + ele.replace(/^0\\{\\d+\\}/, '');\n } else {\n ele = '0*' + ele.slice(1);\n }\n }\n }\n\n if (!intersection && !contains(comparison, 'string', ele)) {\n res.push(prefix + ele);\n }\n\n if (intersection && contains(comparison, 'string', ele)) {\n res.push(prefix + ele);\n }\n }\n return res;\n}\n\n/**\n * Zip strings (`for in` can be used on string characters)\n */\n\nfunction zip(a, b) {\n var arr = [];\n for (var ch in a) arr.push([a[ch], b[ch]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction push(arr, ele) {\n if (arr.indexOf(ele) === -1) arr.push(ele);\n return arr;\n}\n\nfunction contains(arr, key, val) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i][key] === val) {\n return true;\n }\n }\n return false;\n}\n\nfunction countNines(min, len) {\n return String(min).slice(0, -len) + repeat('9', len);\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n var start = digits[0];\n var stop = digits[1] ? (',' + digits[1]) : '';\n if (!stop && (!start || start === 1)) {\n return '';\n }\n return '{' + start + stop + '}';\n}\n\nfunction toCharacterClass(a, b) {\n return '[' + a + ((b - a === 1) ? '' : '-') + b + ']';\n}\n\nfunction padding(str) {\n return /^-?(0+)\\d/.exec(str);\n}\n\nfunction padZeros(val, tok) {\n if (tok.isPadded) {\n var diff = Math.abs(tok.maxLen - String(val).length);\n switch (diff) {\n case 0:\n return '';\n case 1:\n return '0';\n default: {\n return '0{' + diff + '}';\n }\n }\n }\n return val;\n}\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","'use strict';\n\nvar utils = require('./utils');\n\nmodule.exports = function(braces, options) {\n braces.compiler\n\n /**\n * bos\n */\n\n .set('bos', function() {\n if (this.output) return;\n this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : [];\n this.ast.count = 1;\n })\n\n /**\n * Square brackets\n */\n\n .set('bracket', function(node) {\n var close = node.close;\n var open = !node.escaped ? '[' : '\\\\[';\n var negated = node.negated;\n var inner = node.inner;\n\n inner = inner.replace(/\\\\(?=[\\\\\\w]|$)/g, '\\\\\\\\');\n if (inner === ']-') {\n inner = '\\\\]\\\\-';\n }\n\n if (negated && inner.indexOf('.') === -1) {\n inner += '.';\n }\n if (negated && inner.indexOf('/') === -1) {\n inner += '/';\n }\n\n var val = open + negated + inner + close;\n var queue = node.parent.queue;\n var last = utils.arrayify(queue.pop());\n\n queue.push(utils.join(last, val));\n queue.push.apply(queue, []);\n })\n\n /**\n * Brace\n */\n\n .set('brace', function(node) {\n node.queue = isEscaped(node) ? [node.val] : [];\n node.count = 1;\n return this.mapVisit(node.nodes);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function(node) {\n node.parent.open = node.val;\n })\n\n /**\n * Inner\n */\n\n .set('text', function(node) {\n var queue = node.parent.queue;\n var escaped = node.escaped;\n var segs = [node.val];\n\n if (node.optimize === false) {\n options = utils.extend({}, options, {optimize: false});\n }\n\n if (node.multiplier > 1) {\n node.parent.count *= node.multiplier;\n }\n\n if (options.quantifiers === true && utils.isQuantifier(node.val)) {\n escaped = true;\n\n } else if (node.val.length > 1) {\n if (isType(node.parent, 'brace') && !isEscaped(node)) {\n var expanded = utils.expand(node.val, options);\n segs = expanded.segs;\n\n if (expanded.isOptimized) {\n node.parent.isOptimized = true;\n }\n\n // if nothing was expanded, we probably have a literal brace\n if (!segs.length) {\n var val = (expanded.val || node.val);\n if (options.unescape !== false) {\n // unescape unexpanded brace sequence/set separators\n val = val.replace(/\\\\([,.])/g, '$1');\n // strip quotes\n val = val.replace(/[\"'`]/g, '');\n }\n\n segs = [val];\n escaped = true;\n }\n }\n\n } else if (node.val === ',') {\n if (options.expand) {\n node.parent.queue.push(['']);\n segs = [''];\n } else {\n segs = ['|'];\n }\n } else {\n escaped = true;\n }\n\n if (escaped && isType(node.parent, 'brace')) {\n if (node.parent.nodes.length <= 4 && node.parent.count === 1) {\n node.parent.escaped = true;\n } else if (node.parent.length <= 3) {\n node.parent.escaped = true;\n }\n }\n\n if (!hasQueue(node.parent)) {\n node.parent.queue = segs;\n return;\n }\n\n var last = utils.arrayify(queue.pop());\n if (node.parent.count > 1 && options.expand) {\n last = multiply(last, node.parent.count);\n node.parent.count = 1;\n }\n\n queue.push(utils.join(utils.flatten(last), segs.shift()));\n queue.push.apply(queue, segs);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function(node) {\n var queue = node.parent.queue;\n var prev = node.parent.parent;\n var last = prev.queue.pop();\n var open = node.parent.open;\n var close = node.val;\n\n if (open && close && isOptimized(node, options)) {\n open = '(';\n close = ')';\n }\n\n // if a close brace exists, and the previous segment is one character\n // don't wrap the result in braces or parens\n var ele = utils.last(queue);\n if (node.parent.count > 1 && options.expand) {\n ele = multiply(queue.pop(), node.parent.count);\n node.parent.count = 1;\n queue.push(ele);\n }\n\n if (close && typeof ele === 'string' && ele.length === 1) {\n open = '';\n close = '';\n }\n\n if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) {\n queue.push(utils.join(open, queue.pop() || ''));\n queue = utils.flatten(utils.join(queue, close));\n }\n\n if (typeof last === 'undefined') {\n prev.queue = [queue];\n } else {\n prev.queue.push(utils.flatten(utils.join(last, queue)));\n }\n })\n\n /**\n * eos\n */\n\n .set('eos', function(node) {\n if (this.input) return;\n\n if (options.optimize !== false) {\n this.output = utils.last(utils.flatten(this.ast.queue));\n } else if (Array.isArray(utils.last(this.ast.queue))) {\n this.output = utils.flatten(this.ast.queue.pop());\n } else {\n this.output = utils.flatten(this.ast.queue);\n }\n\n if (node.parent.count > 1 && options.expand) {\n this.output = multiply(this.output, node.parent.count);\n }\n\n this.output = utils.arrayify(this.output);\n this.ast.queue = [];\n });\n\n};\n\n/**\n * Multiply the segments in the current brace level\n */\n\nfunction multiply(queue, n, options) {\n return utils.flatten(utils.repeat(utils.arrayify(queue), n));\n}\n\n/**\n * Return true if `node` is escaped\n */\n\nfunction isEscaped(node) {\n return node.escaped === true;\n}\n\n/**\n * Returns true if regex parens should be used for sets. If the parent `type`\n * is not `brace`, then we're on a root node, which means we should never\n * expand segments and open/close braces should be `{}` (since this indicates\n * a brace is missing from the set)\n */\n\nfunction isOptimized(node, options) {\n if (node.parent.isOptimized) return true;\n return isType(node.parent, 'brace')\n && !isEscaped(node.parent)\n && options.expand !== true;\n}\n\n/**\n * Returns true if the value in `node` should be wrapped in a literal brace.\n * @return {Boolean}\n */\n\nfunction isLiteralBrace(node, options) {\n return isEscaped(node.parent) || options.optimize !== false;\n}\n\n/**\n * Returns true if the given `node` does not have an inner value.\n * @return {Boolean}\n */\n\nfunction noInner(node, type) {\n if (node.parent.queue.length === 1) {\n return true;\n }\n var nodes = node.parent.nodes;\n return nodes.length === 3\n && isType(nodes[0], 'brace.open')\n && !isType(nodes[1], 'text')\n && isType(nodes[2], 'brace.close');\n}\n\n/**\n * Returns true if the given `node` is the given `type`\n * @return {Boolean}\n */\n\nfunction isType(node, type) {\n return typeof node !== 'undefined' && node.type === type;\n}\n\n/**\n * Returns true if the given `node` has a non-empty queue.\n * @return {Boolean}\n */\n\nfunction hasQueue(node) {\n return Array.isArray(node.queue) && node.queue.length;\n}\n","/*!\n * repeat-element \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nmodule.exports = function repeat(ele, num) {\n var arr = new Array(num);\n\n for (var i = 0; i < num; i++) {\n arr[i] = ele;\n }\n\n return arr;\n};\n","'use strict';\n\nvar isObject = require('isobject');\nvar define = require('define-property');\nvar utils = require('snapdragon-util');\nvar ownNames;\n\n/**\n * Create a new AST `Node` with the given `val` and `type`.\n *\n * ```js\n * var node = new Node('*', 'Star');\n * var node = new Node({type: 'star', val: '*'});\n * ```\n * @name Node\n * @param {String|Object} `val` Pass a matched substring, or an object to merge onto the node.\n * @param {String} `type` The node type to use when `val` is a string.\n * @return {Object} node instance\n * @api public\n */\n\nfunction Node(val, type, parent) {\n if (typeof type !== 'string') {\n parent = type;\n type = null;\n }\n\n define(this, 'parent', parent);\n define(this, 'isNode', true);\n define(this, 'expect', null);\n\n if (typeof type !== 'string' && isObject(val)) {\n lazyKeys();\n var keys = Object.keys(val);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (ownNames.indexOf(key) === -1) {\n this[key] = val[key];\n }\n }\n } else {\n this.type = type;\n this.val = val;\n }\n}\n\n/**\n * Returns true if the given value is a node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(Node.isNode(node)); //=> true\n * console.log(Node.isNode({})); //=> false\n * ```\n * @param {Object} `node`\n * @returns {Boolean}\n * @api public\n */\n\nNode.isNode = function(node) {\n return utils.isNode(node);\n};\n\n/**\n * Define a non-enumberable property on the node instance.\n * Useful for adding properties that shouldn't be extended\n * or visible during debugging.\n *\n * ```js\n * var node = new Node();\n * node.define('foo', 'something non-enumerable');\n * ```\n * @param {String} `name`\n * @param {any} `val`\n * @return {Object} returns the node instance\n * @api public\n */\n\nNode.prototype.define = function(name, val) {\n define(this, name, val);\n return this;\n};\n\n/**\n * Returns true if `node.val` is an empty string, or `node.nodes` does\n * not contain any non-empty text nodes.\n *\n * ```js\n * var node = new Node({type: 'text'});\n * node.isEmpty(); //=> true\n * node.val = 'foo';\n * node.isEmpty(); //=> false\n * ```\n * @param {Function} `fn` (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes.\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.isEmpty = function(fn) {\n return utils.isEmpty(this, fn);\n};\n\n/**\n * Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and\n * set `foo` as `bar.parent`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.push(bar);\n * ```\n * @param {Object} `node`\n * @return {Number} Returns the length of `node.nodes`\n * @api public\n */\n\nNode.prototype.push = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n define(node, 'parent', this);\n\n this.nodes = this.nodes || [];\n return this.nodes.push(node);\n};\n\n/**\n * Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and\n * set `foo` as `bar.parent`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.unshift(bar);\n * ```\n * @param {Object} `node`\n * @return {Number} Returns the length of `node.nodes`\n * @api public\n */\n\nNode.prototype.unshift = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n define(node, 'parent', this);\n\n this.nodes = this.nodes || [];\n return this.nodes.unshift(node);\n};\n\n/**\n * Pop a node from `node.nodes`.\n *\n * ```js\n * var node = new Node({type: 'foo'});\n * node.push(new Node({type: 'a'}));\n * node.push(new Node({type: 'b'}));\n * node.push(new Node({type: 'c'}));\n * node.push(new Node({type: 'd'}));\n * console.log(node.nodes.length);\n * //=> 4\n * node.pop();\n * console.log(node.nodes.length);\n * //=> 3\n * ```\n * @return {Number} Returns the popped `node`\n * @api public\n */\n\nNode.prototype.pop = function() {\n return this.nodes && this.nodes.pop();\n};\n\n/**\n * Shift a node from `node.nodes`.\n *\n * ```js\n * var node = new Node({type: 'foo'});\n * node.push(new Node({type: 'a'}));\n * node.push(new Node({type: 'b'}));\n * node.push(new Node({type: 'c'}));\n * node.push(new Node({type: 'd'}));\n * console.log(node.nodes.length);\n * //=> 4\n * node.shift();\n * console.log(node.nodes.length);\n * //=> 3\n * ```\n * @return {Object} Returns the shifted `node`\n * @api public\n */\n\nNode.prototype.shift = function() {\n return this.nodes && this.nodes.shift();\n};\n\n/**\n * Remove `node` from `node.nodes`.\n *\n * ```js\n * node.remove(childNode);\n * ```\n * @param {Object} `node`\n * @return {Object} Returns the removed node.\n * @api public\n */\n\nNode.prototype.remove = function(node) {\n assert(Node.isNode(node), 'expected node to be an instance of Node');\n this.nodes = this.nodes || [];\n var idx = node.index;\n if (idx !== -1) {\n node.index = -1;\n return this.nodes.splice(idx, 1);\n }\n return null;\n};\n\n/**\n * Get the first child node from `node.nodes` that matches the given `type`.\n * If `type` is a number, the child node at that index is returned.\n *\n * ```js\n * var child = node.find(1); //<= index of the node to get\n * var child = node.find('foo'); //<= node.type of a child node\n * var child = node.find(/^(foo|bar)$/); //<= regex to match node.type\n * var child = node.find(['foo', 'bar']); //<= array of node.type(s)\n * ```\n * @param {String} `type`\n * @return {Object} Returns a child node or undefined.\n * @api public\n */\n\nNode.prototype.find = function(type) {\n return utils.findNode(this.nodes, type);\n};\n\n/**\n * Return true if the node is the given `type`.\n *\n * ```js\n * var node = new Node({type: 'bar'});\n * cosole.log(node.isType('foo')); // false\n * cosole.log(node.isType(/^(foo|bar)$/)); // true\n * cosole.log(node.isType(['foo', 'bar'])); // true\n * ```\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.isType = function(type) {\n return utils.isType(this, type);\n};\n\n/**\n * Return true if the `node.nodes` has the given `type`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * foo.push(bar);\n *\n * cosole.log(foo.hasType('qux')); // false\n * cosole.log(foo.hasType(/^(qux|bar)$/)); // true\n * cosole.log(foo.hasType(['qux', 'bar'])); // true\n * ```\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nNode.prototype.hasType = function(type) {\n return utils.hasType(this, type);\n};\n\n/**\n * Get the siblings array, or `null` if it doesn't exist.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(bar.siblings.length) // 2\n * console.log(baz.siblings.length) // 2\n * ```\n * @return {Array}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'siblings', {\n set: function() {\n throw new Error('node.siblings is a getter and cannot be defined');\n },\n get: function() {\n return this.parent ? this.parent.nodes : null;\n }\n});\n\n/**\n * Get the node's current index from `node.parent.nodes`.\n * This should always be correct, even when the parent adds nodes.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.unshift(qux);\n *\n * console.log(bar.index) // 1\n * console.log(baz.index) // 2\n * console.log(qux.index) // 0\n * ```\n * @return {Number}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'index', {\n set: function(index) {\n define(this, 'idx', index);\n },\n get: function() {\n if (!Array.isArray(this.siblings)) {\n return -1;\n }\n var tok = this.idx !== -1 ? this.siblings[this.idx] : null;\n if (tok !== this) {\n this.idx = this.siblings.indexOf(this);\n }\n return this.idx;\n }\n});\n\n/**\n * Get the previous node from the siblings array or `null`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(baz.prev.type) // 'bar'\n * ```\n * @return {Object}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'prev', {\n set: function() {\n throw new Error('node.prev is a getter and cannot be defined');\n },\n get: function() {\n if (Array.isArray(this.siblings)) {\n return this.siblings[this.index - 1] || this.parent.prev;\n }\n return null;\n }\n});\n\n/**\n * Get the siblings array, or `null` if it doesn't exist.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * foo.push(bar);\n * foo.push(baz);\n *\n * console.log(bar.siblings.length) // 2\n * console.log(baz.siblings.length) // 2\n * ```\n * @return {Object}\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'next', {\n set: function() {\n throw new Error('node.next is a getter and cannot be defined');\n },\n get: function() {\n if (Array.isArray(this.siblings)) {\n return this.siblings[this.index + 1] || this.parent.next;\n }\n return null;\n }\n});\n\n/**\n * Get the first node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.first.type) // 'bar'\n * ```\n * @return {Object} The first node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'first', {\n get: function() {\n return this.nodes ? this.nodes[0] : null;\n }\n});\n\n/**\n * Get the last node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.last.type) // 'qux'\n * ```\n * @return {Object} The last node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'last', {\n get: function() {\n return this.nodes ? utils.last(this.nodes) : null;\n }\n});\n\n/**\n * Get the last node from `node.nodes`.\n *\n * ```js\n * var foo = new Node({type: 'foo'});\n * var bar = new Node({type: 'bar'});\n * var baz = new Node({type: 'baz'});\n * var qux = new Node({type: 'qux'});\n * foo.push(bar);\n * foo.push(baz);\n * foo.push(qux);\n *\n * console.log(foo.last.type) // 'qux'\n * ```\n * @return {Object} The last node, or undefiend\n * @api public\n */\n\nObject.defineProperty(Node.prototype, 'scope', {\n get: function() {\n if (this.isScope !== true) {\n return this.parent ? this.parent.scope : this;\n }\n return this;\n }\n});\n\n/**\n * Get own property names from Node prototype, but only the\n * first time `Node` is instantiated\n */\n\nfunction lazyKeys() {\n if (!ownNames) {\n ownNames = Object.getOwnPropertyNames(Node.prototype);\n }\n}\n\n/**\n * Simplified assertion. Throws an error is `val` is falsey.\n */\n\nfunction assert(val, message) {\n if (!val) throw new Error(message);\n}\n\n/**\n * Expose `Node`\n */\n\nexports = module.exports = Node;\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar utils = module.exports;\n\n/**\n * Returns true if the given value is a node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(utils.isNode(node)); //=> true\n * console.log(utils.isNode({})); //=> false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {Boolean}\n * @api public\n */\n\nutils.isNode = function(node) {\n return typeOf(node) === 'object' && node.isNode === true;\n};\n\n/**\n * Emit an empty string for the given `node`.\n *\n * ```js\n * // do nothing for beginning-of-string\n * snapdragon.compiler.set('bos', utils.noop);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {undefined}\n * @api public\n */\n\nutils.noop = function(node) {\n append(this, '', node);\n};\n\n/**\n * Appdend `node.val` to `compiler.output`, exactly as it was created\n * by the parser.\n *\n * ```js\n * snapdragon.compiler.set('text', utils.identity);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {undefined}\n * @api public\n */\n\nutils.identity = function(node) {\n append(this, node.val, node);\n};\n\n/**\n * Previously named `.emit`, this method appends the given `val`\n * to `compiler.output` for the given node. Useful when you know\n * what value should be appended advance, regardless of the actual\n * value of `node.val`.\n *\n * ```js\n * snapdragon.compiler\n * .set('i', function(node) {\n * this.mapVisit(node);\n * })\n * .set('i.open', utils.append(''))\n * .set('i.close', utils.append(''))\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @returns {Function} Returns a compiler middleware function.\n * @api public\n */\n\nutils.append = function(val) {\n return function(node) {\n append(this, val, node);\n };\n};\n\n/**\n * Used in compiler middleware, this onverts an AST node into\n * an empty `text` node and deletes `node.nodes` if it exists.\n * The advantage of this method is that, as opposed to completely\n * removing the node, indices will not need to be re-calculated\n * in sibling nodes, and nothing is appended to the output.\n *\n * ```js\n * utils.toNoop(node);\n * // convert `node.nodes` to the given value instead of deleting it\n * utils.toNoop(node, []);\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Array} `nodes` Optionally pass a new `nodes` value, to replace the existing `node.nodes` array.\n * @api public\n */\n\nutils.toNoop = function(node, nodes) {\n if (nodes) {\n node.nodes = nodes;\n } else {\n delete node.nodes;\n node.type = 'text';\n node.val = '';\n }\n};\n\n/**\n * Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon\n * automatically calls registered compilers, this allows you to pass a visitor\n * function.\n *\n * ```js\n * snapdragon.compiler.set('i', function(node) {\n * utils.visit(node, function(childNode) {\n * // do stuff with \"childNode\"\n * return childNode;\n * });\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `fn`\n * @return {Object} returns the node after recursively visiting all child nodes.\n * @api public\n */\n\nutils.visit = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(fn), 'expected a visitor function');\n fn(node);\n return node.nodes ? utils.mapVisit(node, fn) : node;\n};\n\n/**\n * Map [visit](#visit) the given `fn` over `node.nodes`. This is called by\n * [visit](#visit), use this method if you do not want `fn` to be called on\n * the first node.\n *\n * ```js\n * snapdragon.compiler.set('i', function(node) {\n * utils.mapVisit(node, function(childNode) {\n * // do stuff with \"childNode\"\n * return childNode;\n * });\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Object} `options`\n * @param {Function} `fn`\n * @return {Object} returns the node\n * @api public\n */\n\nutils.mapVisit = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isArray(node.nodes), 'expected node.nodes to be an array');\n assert(isFunction(fn), 'expected a visitor function');\n\n for (var i = 0; i < node.nodes.length; i++) {\n utils.visit(node.nodes[i], fn);\n }\n return node;\n};\n\n/**\n * Unshift an `*.open` node onto `node.nodes`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * snapdragon.parser.set('brace', function(node) {\n * var match = this.match(/^{/);\n * if (match) {\n * var parent = new Node({type: 'brace'});\n * utils.addOpen(parent, Node);\n * console.log(parent.nodes[0]):\n * // { type: 'brace.open', val: '' };\n *\n * // push the parent \"brace\" node onto the stack\n * this.push(parent);\n *\n * // return the parent node, so it's also added to the AST\n * return brace;\n * }\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the created opening node.\n * @api public\n */\n\nutils.addOpen = function(node, Node, val, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n if (typeof val === 'function') {\n filter = val;\n val = '';\n }\n\n if (typeof filter === 'function' && !filter(node)) return;\n var open = new Node({ type: node.type + '.open', val: val});\n var unshift = node.unshift || node.unshiftNode;\n if (typeof unshift === 'function') {\n unshift.call(node, open);\n } else {\n utils.unshiftNode(node, open);\n }\n return open;\n};\n\n/**\n * Push a `*.close` node onto `node.nodes`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * snapdragon.parser.set('brace', function(node) {\n * var match = this.match(/^}/);\n * if (match) {\n * var parent = this.parent();\n * if (parent.type !== 'brace') {\n * throw new Error('missing opening: ' + '}');\n * }\n *\n * utils.addClose(parent, Node);\n * console.log(parent.nodes[parent.nodes.length - 1]):\n * // { type: 'brace.close', val: '' };\n *\n * // no need to return a node, since the parent\n * // was already added to the AST\n * return;\n * }\n * });\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the created closing node.\n * @api public\n */\n\nutils.addClose = function(node, Node, val, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n if (typeof val === 'function') {\n filter = val;\n val = '';\n }\n\n if (typeof filter === 'function' && !filter(node)) return;\n var close = new Node({ type: node.type + '.close', val: val});\n var push = node.push || node.pushNode;\n if (typeof push === 'function') {\n push.call(node, close);\n } else {\n utils.pushNode(node, close);\n }\n return close;\n};\n\n/**\n * Wraps the given `node` with `*.open` and `*.close` nodes.\n *\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][].\n * @param {Function} `filter` Optionaly specify a filter function to exclude the node.\n * @return {Object} Returns the node\n * @api public\n */\n\nutils.wrapNodes = function(node, Node, filter) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isFunction(Node), 'expected Node to be a constructor function');\n\n utils.addOpen(node, Node, filter);\n utils.addClose(node, Node, filter);\n return node;\n};\n\n/**\n * Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * var node = new Node({type: 'bar'});\n * utils.pushNode(parent, node);\n * console.log(parent.nodes[0].type) // 'bar'\n * console.log(node.parent.type) // 'foo'\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Object} Returns the child node\n * @api public\n */\n\nutils.pushNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n node.define('parent', parent);\n parent.nodes = parent.nodes || [];\n parent.nodes.push(node);\n return node;\n};\n\n/**\n * Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * var node = new Node({type: 'bar'});\n * utils.unshiftNode(parent, node);\n * console.log(parent.nodes[0].type) // 'bar'\n * console.log(node.parent.type) // 'foo'\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {undefined}\n * @api public\n */\n\nutils.unshiftNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n node.define('parent', parent);\n parent.nodes = parent.nodes || [];\n parent.nodes.unshift(node);\n};\n\n/**\n * Pop the last `node` off of `parent.nodes`. The advantage of\n * using this method is that it checks for `node.nodes` and works\n * with any version of `snapdragon-node`.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * utils.pushNode(parent, new Node({type: 'foo'}));\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.popNode(parent);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Number|Undefined} Returns the length of `node.nodes` or undefined.\n * @api public\n */\n\nutils.popNode = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (typeof node.pop === 'function') {\n return node.pop();\n }\n return node.nodes && node.nodes.pop();\n};\n\n/**\n * Shift the first `node` off of `parent.nodes`. The advantage of\n * using this method is that it checks for `node.nodes` and works\n * with any version of `snapdragon-node`.\n *\n * ```js\n * var parent = new Node({type: 'foo'});\n * utils.pushNode(parent, new Node({type: 'foo'}));\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.shiftNode(parent);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Number|Undefined} Returns the length of `node.nodes` or undefined.\n * @api public\n */\n\nutils.shiftNode = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (typeof node.shift === 'function') {\n return node.shift();\n }\n return node.nodes && node.nodes.shift();\n};\n\n/**\n * Remove the specified `node` from `parent.nodes`.\n *\n * ```js\n * var parent = new Node({type: 'abc'});\n * var foo = new Node({type: 'foo'});\n * utils.pushNode(parent, foo);\n * utils.pushNode(parent, new Node({type: 'bar'}));\n * utils.pushNode(parent, new Node({type: 'baz'}));\n * console.log(parent.nodes.length); //=> 3\n * utils.removeNode(parent, foo);\n * console.log(parent.nodes.length); //=> 2\n * ```\n * @param {Object} `parent`\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Object|undefined} Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`.\n * @api public\n */\n\nutils.removeNode = function(parent, node) {\n assert(utils.isNode(parent), 'expected parent.node to be an instance of Node');\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n if (!parent.nodes) {\n return null;\n }\n\n if (typeof parent.remove === 'function') {\n return parent.remove(node);\n }\n\n var idx = parent.nodes.indexOf(node);\n if (idx !== -1) {\n return parent.nodes.splice(idx, 1);\n }\n};\n\n/**\n * Returns true if `node.type` matches the given `type`. Throws a\n * `TypeError` if `node` is not an instance of `Node`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({type: 'foo'});\n * console.log(utils.isType(node, 'foo')); // false\n * console.log(utils.isType(node, 'bar')); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.isType = function(node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n switch (typeOf(type)) {\n case 'array':\n var types = type.slice();\n for (var i = 0; i < types.length; i++) {\n if (utils.isType(node, types[i])) {\n return true;\n }\n }\n return false;\n case 'string':\n return node.type === type;\n case 'regexp':\n return type.test(node.type);\n default: {\n throw new TypeError('expected \"type\" to be an array, string or regexp');\n }\n }\n};\n\n/**\n * Returns true if the given `node` has the given `type` in `node.nodes`.\n * Throws a `TypeError` if `node` is not an instance of `Node`.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'bar'}),\n * new Node({type: 'baz'})\n * ]\n * });\n * console.log(utils.hasType(node, 'xyz')); // false\n * console.log(utils.hasType(node, 'baz')); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.hasType = function(node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n if (!Array.isArray(node.nodes)) return false;\n for (var i = 0; i < node.nodes.length; i++) {\n if (utils.isType(node.nodes[i], type)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns the first node from `node.nodes` of the given `type`\n *\n * ```js\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'text', val: 'abc'}),\n * new Node({type: 'text', val: 'xyz'})\n * ]\n * });\n *\n * var textNode = utils.firstOfType(node.nodes, 'text');\n * console.log(textNode.val);\n * //=> 'abc'\n * ```\n * @param {Array} `nodes`\n * @param {String} `type`\n * @return {Object|undefined} Returns the first matching node or undefined.\n * @api public\n */\n\nutils.firstOfType = function(nodes, type) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (utils.isType(node, type)) {\n return node;\n }\n }\n};\n\n/**\n * Returns the node at the specified index, or the first node of the\n * given `type` from `node.nodes`.\n *\n * ```js\n * var node = new Node({\n * type: 'foo',\n * nodes: [\n * new Node({type: 'text', val: 'abc'}),\n * new Node({type: 'text', val: 'xyz'})\n * ]\n * });\n *\n * var nodeOne = utils.findNode(node.nodes, 'text');\n * console.log(nodeOne.val);\n * //=> 'abc'\n *\n * var nodeTwo = utils.findNode(node.nodes, 1);\n * console.log(nodeTwo.val);\n * //=> 'xyz'\n * ```\n *\n * @param {Array} `nodes`\n * @param {String|Number} `type` Node type or index.\n * @return {Object} Returns a node or undefined.\n * @api public\n */\n\nutils.findNode = function(nodes, type) {\n if (!Array.isArray(nodes)) {\n return null;\n }\n if (typeof type === 'number') {\n return nodes[type];\n }\n return utils.firstOfType(nodes, type);\n};\n\n/**\n * Returns true if the given node is an \"*.open\" node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n *\n * console.log(utils.isOpen(brace)); // false\n * console.log(utils.isOpen(open)); // true\n * console.log(utils.isOpen(close)); // false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.isOpen = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n return node.type.slice(-5) === '.open';\n};\n\n/**\n * Returns true if the given node is a \"*.close\" node.\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n *\n * console.log(utils.isClose(brace)); // false\n * console.log(utils.isClose(open)); // false\n * console.log(utils.isClose(close)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.isClose = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n return node.type.slice(-6) === '.close';\n};\n\n/**\n * Returns true if `node.nodes` **has** an `.open` node\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var open = new Node({type: 'brace.open'});\n * console.log(utils.hasOpen(brace)); // false\n *\n * brace.pushNode(open);\n * console.log(utils.hasOpen(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasOpen = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n var first = node.first || node.nodes ? node.nodes[0] : null;\n if (utils.isNode(first)) {\n return first.type === node.type + '.open';\n }\n return false;\n};\n\n/**\n * Returns true if `node.nodes` **has** a `.close` node\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var close = new Node({type: 'brace.close'});\n * console.log(utils.hasClose(brace)); // false\n *\n * brace.pushNode(close);\n * console.log(utils.hasClose(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasClose = function(node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n var last = node.last || node.nodes ? node.nodes[node.nodes.length - 1] : null;\n if (utils.isNode(last)) {\n return last.type === node.type + '.close';\n }\n return false;\n};\n\n/**\n * Returns true if `node.nodes` has both `.open` and `.close` nodes\n *\n * ```js\n * var Node = require('snapdragon-node');\n * var brace = new Node({\n * type: 'brace',\n * nodes: []\n * });\n *\n * var open = new Node({type: 'brace.open'});\n * var close = new Node({type: 'brace.close'});\n * console.log(utils.hasOpen(brace)); // false\n * console.log(utils.hasClose(brace)); // false\n *\n * brace.pushNode(open);\n * brace.pushNode(close);\n * console.log(utils.hasOpen(brace)); // true\n * console.log(utils.hasClose(brace)); // true\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Boolean}\n * @api public\n */\n\nutils.hasOpenAndClose = function(node) {\n return utils.hasOpen(node) && utils.hasClose(node);\n};\n\n/**\n * Push the given `node` onto the `state.inside` array for the\n * given type. This array is used as a specialized \"stack\" for\n * only the given `node.type`.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * utils.addType(state, node);\n * console.log(state.inside);\n * //=> { brace: [{type: 'brace'}] }\n * ```\n * @param {Object} `state` The `compiler.state` object or custom state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Array} Returns the `state.inside` stack for the given type.\n * @api public\n */\n\nutils.addType = function(state, node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n var type = node.parent\n ? node.parent.type\n : node.type.replace(/\\.open$/, '');\n\n if (!state.hasOwnProperty('inside')) {\n state.inside = {};\n }\n if (!state.inside.hasOwnProperty(type)) {\n state.inside[type] = [];\n }\n\n var arr = state.inside[type];\n arr.push(node);\n return arr;\n};\n\n/**\n * Remove the given `node` from the `state.inside` array for the\n * given type. This array is used as a specialized \"stack\" for\n * only the given `node.type`.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * utils.addType(state, node);\n * console.log(state.inside);\n * //=> { brace: [{type: 'brace'}] }\n * utils.removeType(state, node);\n * //=> { brace: [] }\n * ```\n * @param {Object} `state` The `compiler.state` object or custom state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @return {Array} Returns the `state.inside` stack for the given type.\n * @api public\n */\n\nutils.removeType = function(state, node) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n var type = node.parent\n ? node.parent.type\n : node.type.replace(/\\.close$/, '');\n\n if (state.inside.hasOwnProperty(type)) {\n return state.inside[type].pop();\n }\n};\n\n/**\n * Returns true if `node.val` is an empty string, or `node.nodes` does\n * not contain any non-empty text nodes.\n *\n * ```js\n * var node = new Node({type: 'text'});\n * utils.isEmpty(node); //=> true\n * node.val = 'foo';\n * utils.isEmpty(node); //=> false\n * ```\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {Function} `fn`\n * @return {Boolean}\n * @api public\n */\n\nutils.isEmpty = function(node, fn) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n\n if (!Array.isArray(node.nodes)) {\n if (node.type !== 'text') {\n return true;\n }\n if (typeof fn === 'function') {\n return fn(node, node.parent);\n }\n return !utils.trim(node.val);\n }\n\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n if (utils.isOpen(child) || utils.isClose(child)) {\n continue;\n }\n if (!utils.isEmpty(child, fn)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Returns true if the `state.inside` stack for the given type exists\n * and has one or more nodes on it.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * console.log(utils.isInsideType(state, 'brace')); //=> false\n * utils.addType(state, node);\n * console.log(utils.isInsideType(state, 'brace')); //=> true\n * utils.removeType(state, node);\n * console.log(utils.isInsideType(state, 'brace')); //=> false\n * ```\n * @param {Object} `state`\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\nutils.isInsideType = function(state, type) {\n assert(isObject(state), 'expected state to be an object');\n assert(isString(type), 'expected type to be a string');\n\n if (!state.hasOwnProperty('inside')) {\n return false;\n }\n\n if (!state.inside.hasOwnProperty(type)) {\n return false;\n }\n\n return state.inside[type].length > 0;\n};\n\n/**\n * Returns true if `node` is either a child or grand-child of the given `type`,\n * or `state.inside[type]` is a non-empty array.\n *\n * ```js\n * var state = { inside: {}};\n * var node = new Node({type: 'brace'});\n * var open = new Node({type: 'brace.open'});\n * console.log(utils.isInside(state, open, 'brace')); //=> false\n * utils.pushNode(node, open);\n * console.log(utils.isInside(state, open, 'brace')); //=> true\n * ```\n * @param {Object} `state` Either the `compiler.state` object, if it exists, or a user-supplied state object.\n * @param {Object} `node` Instance of [snapdragon-node][]\n * @param {String} `type` The `node.type` to check for.\n * @return {Boolean}\n * @api public\n */\n\nutils.isInside = function(state, node, type) {\n assert(utils.isNode(node), 'expected node to be an instance of Node');\n assert(isObject(state), 'expected state to be an object');\n\n if (Array.isArray(type)) {\n for (var i = 0; i < type.length; i++) {\n if (utils.isInside(state, node, type[i])) {\n return true;\n }\n }\n return false;\n }\n\n var parent = node.parent;\n if (typeof type === 'string') {\n return (parent && parent.type === type) || utils.isInsideType(state, type);\n }\n\n if (typeOf(type) === 'regexp') {\n if (parent && parent.type && type.test(parent.type)) {\n return true;\n }\n\n var keys = Object.keys(state.inside);\n var len = keys.length;\n var idx = -1;\n while (++idx < len) {\n var key = keys[idx];\n var val = state.inside[key];\n\n if (Array.isArray(val) && val.length !== 0 && type.test(key)) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Get the last `n` element from the given `array`. Used for getting\n * a node from `node.nodes.`\n *\n * @param {Array} `array`\n * @param {Number} `n`\n * @return {undefined}\n * @api public\n */\n\nutils.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n\n/**\n * Cast the given `val` to an array.\n *\n * ```js\n * console.log(utils.arrayify(''));\n * //=> []\n * console.log(utils.arrayify('foo'));\n * //=> ['foo']\n * console.log(utils.arrayify(['foo']));\n * //=> ['foo']\n * ```\n * @param {any} `val`\n * @return {Array}\n * @api public\n */\n\nutils.arrayify = function(val) {\n if (typeof val === 'string' && val !== '') {\n return [val];\n }\n if (!Array.isArray(val)) {\n return [];\n }\n return val;\n};\n\n/**\n * Convert the given `val` to a string by joining with `,`. Useful\n * for creating a cheerio/CSS/DOM-style selector from a list of strings.\n *\n * @param {any} `val`\n * @return {Array}\n * @api public\n */\n\nutils.stringify = function(val) {\n return utils.arrayify(val).join(',');\n};\n\n/**\n * Ensure that the given value is a string and call `.trim()` on it,\n * or return an empty string.\n *\n * @param {String} `str`\n * @return {String}\n * @api public\n */\n\nutils.trim = function(str) {\n return typeof str === 'string' ? str.trim() : '';\n};\n\n/**\n * Return true if val is an object\n */\n\nfunction isObject(val) {\n return typeOf(val) === 'object';\n}\n\n/**\n * Return true if val is a string\n */\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Return true if val is a function\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n\n/**\n * Return true if val is an array\n */\n\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Shim to ensure the `.append` methods work with any version of snapdragon\n */\n\nfunction append(compiler, val, node) {\n if (typeof compiler.append !== 'function') {\n return compiler.emit(val, node);\n }\n return compiler.append(val, node);\n}\n\n/**\n * Simplified assertion. Throws an error is `val` is falsey.\n */\n\nfunction assert(val, message) {\n if (!val) throw new Error(message);\n}\n","'use strict';\n\nvar Node = require('snapdragon-node');\nvar utils = require('./utils');\n\n/**\n * Braces parsers\n */\n\nmodule.exports = function(braces, options) {\n braces.parser\n .set('bos', function() {\n if (!this.parsed) {\n this.ast = this.nodes[0] = new Node(this.ast);\n }\n })\n\n /**\n * Character parsers\n */\n\n .set('escape', function() {\n var pos = this.position();\n var m = this.match(/^(?:\\\\(.)|\\$\\{)/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: m[0]\n }));\n\n if (node.val === '\\\\\\\\') {\n return node;\n }\n\n if (node.val === '${') {\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n node.val += ch;\n if (ch === '\\\\') {\n node.val += str[++idx];\n continue;\n }\n if (ch === '}') {\n break;\n }\n }\n }\n\n if (this.options.unescape !== false) {\n node.val = node.val.replace(/\\\\([{}])/g, '$1');\n }\n\n if (last.val === '\"' && this.input.charAt(0) === '\"') {\n last.val = node.val;\n this.consume(1);\n return;\n }\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Brackets: \"[...]\" (basic, this is overridden by\n * other parsers in more advanced implementations)\n */\n\n .set('bracket', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^(?:\\[([!^]?)([^\\]]{2,}|\\]-)(\\]|[^*+?]+)|\\[)/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n var negated = m[1] ? '^' : '';\n var inner = m[2] || '';\n var close = m[3] || '';\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var esc = this.input.slice(0, 2);\n if (inner === '' && esc === '\\\\]') {\n inner += esc;\n this.consume(2);\n\n var str = this.input;\n var idx = -1;\n var ch;\n\n while ((ch = str[++idx])) {\n this.consume(1);\n if (ch === ']') {\n close = ch;\n break;\n }\n inner += ch;\n }\n }\n\n return pos(new Node({\n type: 'bracket',\n val: val,\n escaped: close !== ']',\n negated: negated,\n inner: inner,\n close: close\n }));\n })\n\n /**\n * Empty braces (we capture these early to\n * speed up processing in the compiler)\n */\n\n .set('multiplier', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{((?:,|\\{,+\\})+)\\}/);\n if (!m) return;\n\n this.multiplier = true;\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n match: m,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n })\n\n /**\n * Open\n */\n\n .set('brace.open', function() {\n var pos = this.position();\n var m = this.match(/^\\{(?!(?:[^\\\\}]?|,+)\\})/);\n if (!m) return;\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n\n // if the last parsed character was an extglob character\n // we need to _not optimize_ the brace pattern because\n // it might be mistaken for an extglob by a downstream parser\n if (last && last.val && isExtglobChar(last.val.slice(-1))) {\n last.optimize = false;\n }\n\n var open = pos(new Node({\n type: 'brace.open',\n val: m[0]\n }));\n\n var node = pos(new Node({\n type: 'brace',\n nodes: []\n }));\n\n node.push(open);\n prev.push(node);\n this.push('brace', node);\n })\n\n /**\n * Close\n */\n\n .set('brace.close', function() {\n var pos = this.position();\n var m = this.match(/^\\}/);\n if (!m || !m[0]) return;\n\n var brace = this.pop('brace');\n var node = pos(new Node({\n type: 'brace.close',\n val: m[0]\n }));\n\n if (!this.isType(brace, 'brace')) {\n if (this.options.strict) {\n throw new Error('missing opening \"{\"');\n }\n node.type = 'text';\n node.multiplier = 0;\n node.escaped = true;\n return node;\n }\n\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n if (last.text) {\n var lastNode = utils.last(last.nodes);\n if (lastNode.val === ')' && /[!@*?+]\\(/.test(last.text)) {\n var open = last.nodes[0];\n var text = last.nodes[1];\n if (open.type === 'brace.open' && text && text.type === 'text') {\n text.optimize = false;\n }\n }\n }\n\n if (brace.nodes.length > 2) {\n var first = brace.nodes[1];\n if (first.type === 'text' && first.val === ',') {\n brace.nodes.splice(1, 1);\n brace.nodes.push(first);\n }\n }\n\n brace.push(node);\n })\n\n /**\n * Capture boundary characters\n */\n\n .set('boundary', function() {\n var pos = this.position();\n var m = this.match(/^[$^](?!\\{)/);\n if (!m) return;\n return pos(new Node({\n type: 'text',\n val: m[0]\n }));\n })\n\n /**\n * One or zero, non-comma characters wrapped in braces\n */\n\n .set('nobrace', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^\\{[^,]?\\}/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n return pos(new Node({\n type: 'text',\n multiplier: 0,\n val: val\n }));\n })\n\n /**\n * Text\n */\n\n .set('text', function() {\n var isInside = this.isInside('brace');\n var pos = this.position();\n var m = this.match(/^((?!\\\\)[^${}[\\]])+/);\n if (!m) return;\n\n var prev = this.prev();\n var val = m[0];\n\n if (isInside && prev.type === 'brace') {\n prev.text = prev.text || '';\n prev.text += val;\n }\n\n var node = pos(new Node({\n type: 'text',\n multiplier: 1,\n val: val\n }));\n\n return concatNodes.call(this, pos, node, prev, options);\n });\n};\n\n/**\n * Returns true if the character is an extglob character.\n */\n\nfunction isExtglobChar(ch) {\n return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+';\n}\n\n/**\n * Combine text nodes, and calculate empty sets (`{,,}`)\n * @param {Function} `pos` Function to calculate node position\n * @param {Object} `node` AST node\n * @return {Object}\n */\n\nfunction concatNodes(pos, node, parent, options) {\n node.orig = node.val;\n var prev = this.prev();\n var last = utils.last(prev.nodes);\n var isEscaped = false;\n\n if (node.val.length > 1) {\n var a = node.val.charAt(0);\n var b = node.val.slice(-1);\n\n isEscaped = (a === '\"' && b === '\"')\n || (a === \"'\" && b === \"'\")\n || (a === '`' && b === '`');\n }\n\n if (isEscaped && options.unescape !== false) {\n node.val = node.val.slice(1, node.val.length - 1);\n node.escaped = true;\n }\n\n if (node.match) {\n var match = node.match[1];\n if (!match || match.indexOf('}') === -1) {\n match = node.match[0];\n }\n\n // replace each set with a single \",\"\n var val = match.replace(/\\{/g, ',').replace(/\\}/g, '');\n node.multiplier *= val.length;\n node.val = '';\n }\n\n var simpleText = last.type === 'text'\n && last.multiplier === 1\n && node.multiplier === 1\n && node.val;\n\n if (simpleText) {\n last.val += node.val;\n return;\n }\n\n prev.push(node);\n}\n","'use strict';\n\nvar util = require('util');\nvar define = require('define-property');\nvar CacheBase = require('cache-base');\nvar Emitter = require('component-emitter');\nvar isObject = require('isobject');\nvar merge = require('mixin-deep');\nvar pascal = require('pascalcase');\nvar cu = require('class-utils');\n\n/**\n * Optionally define a custom `cache` namespace to use.\n */\n\nfunction namespace(name) {\n var Cache = name ? CacheBase.namespace(name) : CacheBase;\n var fns = [];\n\n /**\n * Create an instance of `Base` with the given `config` and `options`.\n *\n * ```js\n * // initialize with `config` and `options`\n * var app = new Base({isApp: true}, {abc: true});\n * app.set('foo', 'bar');\n *\n * // values defined with the given `config` object will be on the root of the instance\n * console.log(app.baz); //=> undefined\n * console.log(app.foo); //=> 'bar'\n * // or use `.get`\n * console.log(app.get('isApp')); //=> true\n * console.log(app.get('foo')); //=> 'bar'\n *\n * // values defined with the given `options` object will be on `app.options\n * console.log(app.options.abc); //=> true\n * ```\n *\n * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation.\n * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object.\n * @api public\n */\n\n function Base(config, options) {\n if (!(this instanceof Base)) {\n return new Base(config, options);\n }\n Cache.call(this, config);\n this.is('base');\n this.initBase(config, options);\n }\n\n /**\n * Inherit cache-base\n */\n\n util.inherits(Base, Cache);\n\n /**\n * Add static emitter methods\n */\n\n Emitter(Base);\n\n /**\n * Initialize `Base` defaults with the given `config` object\n */\n\n Base.prototype.initBase = function(config, options) {\n this.options = merge({}, this.options, options);\n this.cache = this.cache || {};\n this.define('registered', {});\n if (name) this[name] = {};\n\n // make `app._callbacks` non-enumerable\n this.define('_callbacks', this._callbacks);\n if (isObject(config)) {\n this.visit('set', config);\n }\n Base.run(this, 'use', fns);\n };\n\n /**\n * Set the given `name` on `app._name` and `app.is*` properties. Used for doing\n * lookups in plugins.\n *\n * ```js\n * app.is('foo');\n * console.log(app._name);\n * //=> 'foo'\n * console.log(app.isFoo);\n * //=> true\n * app.is('bar');\n * console.log(app.isFoo);\n * //=> true\n * console.log(app.isBar);\n * //=> true\n * console.log(app._name);\n * //=> 'bar'\n * ```\n * @name .is\n * @param {String} `name`\n * @return {Boolean}\n * @api public\n */\n\n Base.prototype.is = function(name) {\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string');\n }\n this.define('is' + pascal(name), true);\n this.define('_name', name);\n this.define('_appname', name);\n return this;\n };\n\n /**\n * Returns true if a plugin has already been registered on an instance.\n *\n * Plugin implementors are encouraged to use this first thing in a plugin\n * to prevent the plugin from being called more than once on the same\n * instance.\n *\n * ```js\n * var base = new Base();\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin')) return;\n * // do stuff to `app`\n * });\n *\n * // to also record the plugin as being registered\n * base.use(function(app) {\n * if (app.isRegistered('myPlugin', true)) return;\n * // do stuff to `app`\n * });\n * ```\n * @name .isRegistered\n * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once.\n * @param {String} `name` The plugin name.\n * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument.\n * @return {Boolean} Returns true if a plugin is already registered.\n * @api public\n */\n\n Base.prototype.isRegistered = function(name, register) {\n if (this.registered.hasOwnProperty(name)) {\n return true;\n }\n if (register !== false) {\n this.registered[name] = true;\n this.emit('plugin', name);\n }\n return false;\n };\n\n /**\n * Define a plugin function to be called immediately upon init. Plugins are chainable\n * and expose the following arguments to the plugin function:\n *\n * - `app`: the current instance of `Base`\n * - `base`: the [first ancestor instance](#base) of `Base`\n *\n * ```js\n * var app = new Base()\n * .use(foo)\n * .use(bar)\n * .use(baz)\n * ```\n * @name .use\n * @param {Function} `fn` plugin function to call\n * @return {Object} Returns the item instance for chaining.\n * @api public\n */\n\n Base.prototype.use = function(fn) {\n fn.call(this, this);\n return this;\n };\n\n /**\n * The `.define` method is used for adding non-enumerable property on the instance.\n * Dot-notation is **not supported** with `define`.\n *\n * ```js\n * // arbitrary `render` function using lodash `template`\n * app.define('render', function(str, locals) {\n * return _.template(str)(locals);\n * });\n * ```\n * @name .define\n * @param {String} `key` The name of the property to define.\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Base.prototype.define = function(key, val) {\n if (isObject(key)) {\n return this.visit('define', key);\n }\n define(this, key, val);\n return this;\n };\n\n /**\n * Mix property `key` onto the Base prototype. If base is inherited using\n * `Base.extend` this method will be overridden by a new `mixin` method that will\n * only add properties to the prototype of the inheriting application.\n *\n * ```js\n * app.mixin('foo', function() {\n * // do stuff\n * });\n * ```\n * @name .mixin\n * @param {String} `key`\n * @param {Object|Array} `val`\n * @return {Object} Returns the `base` instance for chaining.\n * @api public\n */\n\n Base.prototype.mixin = function(key, val) {\n Base.prototype[key] = val;\n return this;\n };\n\n /**\n * Non-enumberable mixin array, used by the static [Base.mixin]() method.\n */\n\n Base.prototype.mixins = Base.prototype.mixins || [];\n\n /**\n * Getter/setter used when creating nested instances of `Base`, for storing a reference\n * to the first ancestor instance. This works by setting an instance of `Base` on the `parent`\n * property of a \"child\" instance. The `base` property defaults to the current instance if\n * no `parent` property is defined.\n *\n * ```js\n * // create an instance of `Base`, this is our first (\"base\") instance\n * var first = new Base();\n * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later\n *\n * // create another instance\n * var second = new Base();\n * // create a reference to the first instance (`first`)\n * second.parent = first;\n *\n * // create another instance\n * var third = new Base();\n * // create a reference to the previous instance (`second`)\n * // repeat this pattern every time a \"child\" instance is created\n * third.parent = second;\n *\n * // we can always access the first instance using the `base` property\n * console.log(first.base.foo);\n * //=> 'bar'\n * console.log(second.base.foo);\n * //=> 'bar'\n * console.log(third.base.foo);\n * //=> 'bar'\n * // and now you know how to get to third base ;)\n * ```\n * @name .base\n * @api public\n */\n\n Object.defineProperty(Base.prototype, 'base', {\n configurable: true,\n get: function() {\n return this.parent ? this.parent.base : this;\n }\n });\n\n /**\n * Static method for adding global plugin functions that will\n * be added to an instance when created.\n *\n * ```js\n * Base.use(function(app) {\n * app.foo = 'bar';\n * });\n * var app = new Base();\n * console.log(app.foo);\n * //=> 'bar'\n * ```\n * @name #use\n * @param {Function} `fn` Plugin function to use on each instance.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'use', function(fn) {\n fns.push(fn);\n return Base;\n });\n\n /**\n * Run an array of functions by passing each function\n * to a method on the given object specified by the given property.\n *\n * @param {Object} `obj` Object containing method to use.\n * @param {String} `prop` Name of the method on the object to use.\n * @param {Array} `arr` Array of functions to pass to the method.\n */\n\n define(Base, 'run', function(obj, prop, arr) {\n var len = arr.length, i = 0;\n while (len--) {\n obj[prop](arr[i++]);\n }\n return Base;\n });\n\n /**\n * Static method for inheriting the prototype and static methods of the `Base` class.\n * This method greatly simplifies the process of creating inheritance-based applications.\n * See [static-extend][] for more details.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @name #extend\n * @param {Function} `Ctor` constructor to extend\n * @param {Object} `methods` Optional prototype properties to mix in.\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) {\n Ctor.prototype.mixins = Ctor.prototype.mixins || [];\n\n define(Ctor, 'mixin', function(fn) {\n var mixin = fn(Ctor.prototype, Ctor);\n if (typeof mixin === 'function') {\n Ctor.prototype.mixins.push(mixin);\n }\n return Ctor;\n });\n\n define(Ctor, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Ctor.prototype.mixins);\n return Ctor;\n });\n\n Ctor.prototype.mixin = function(key, value) {\n Ctor.prototype[key] = value;\n return this;\n };\n return Base;\n }));\n\n /**\n * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances.\n * When a mixin function returns a function, the returned function is pushed onto the `.mixins`\n * array, making it available to be used on inheriting classes whenever `Base.mixins()` is\n * called (e.g. `Base.mixins(Child)`).\n *\n * ```js\n * Base.mixin(function(proto) {\n * proto.foo = function(msg) {\n * return 'foo ' + msg;\n * };\n * });\n * ```\n * @name #mixin\n * @param {Function} `fn` Function to call\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixin', function(fn) {\n var mixin = fn(Base.prototype, Base);\n if (typeof mixin === 'function') {\n Base.prototype.mixins.push(mixin);\n }\n return Base;\n });\n\n /**\n * Static method for running global mixin functions against a child constructor.\n * Mixins must be registered before calling this method.\n *\n * ```js\n * Base.extend(Child);\n * Base.mixins(Child);\n * ```\n * @name #mixins\n * @param {Function} `Child` Constructor function of a child class\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'mixins', function(Child) {\n Base.run(Child, 'mixin', Base.prototype.mixins);\n return Base;\n });\n\n /**\n * Similar to `util.inherit`, but copies all static properties, prototype properties, and\n * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details.\n *\n * ```js\n * Base.inherit(Foo, Bar);\n * ```\n * @name #inherit\n * @param {Function} `Receiver` Receiving (child) constructor\n * @param {Function} `Provider` Providing (parent) constructor\n * @return {Object} Returns the `Base` constructor for chaining\n * @api public\n */\n\n define(Base, 'inherit', cu.inherit);\n define(Base, 'bubble', cu.bubble);\n return Base;\n}\n\n/**\n * Expose `Base` with default settings\n */\n\nmodule.exports = namespace();\n\n/**\n * Allow users to define a namespace\n */\n\nmodule.exports.namespace = namespace;\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/*!\n * object-visit \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nmodule.exports = function visit(thisArg, method, target, val) {\n if (!isObject(thisArg) && typeof thisArg !== 'function') {\n throw new Error('object-visit expects `thisArg` to be an object.');\n }\n\n if (typeof method !== 'string') {\n throw new Error('object-visit expects `method` name to be a string');\n }\n\n if (typeof thisArg[method] !== 'function') {\n return thisArg;\n }\n\n var args = [].slice.call(arguments, 3);\n target = target || {};\n\n for (var key in target) {\n var arr = [key, target[key]].concat(args);\n thisArg[method].apply(thisArg, arr);\n }\n return thisArg;\n};\n","'use strict';\n\nvar util = require('util');\nvar visit = require('object-visit');\n\n/**\n * Map `visit` over an array of objects.\n *\n * @param {Object} `collection` The context in which to invoke `method`\n * @param {String} `method` Name of the method to call on `collection`\n * @param {Object} `arr` Array of objects.\n */\n\nmodule.exports = function mapVisit(collection, method, val) {\n if (isObject(val)) {\n return visit.apply(null, arguments);\n }\n\n if (!Array.isArray(val)) {\n throw new TypeError('expected an array: ' + util.inspect(val));\n }\n\n var args = [].slice.call(arguments, 3);\n\n for (var i = 0; i < val.length; i++) {\n var ele = val[i];\n if (isObject(ele)) {\n visit.apply(null, [collection, method, ele].concat(args));\n } else {\n collection[method].apply(collection, [ele].concat(args));\n }\n }\n};\n\nfunction isObject(val) {\n return val && (typeof val === 'function' || (!Array.isArray(val) && typeof val === 'object'));\n}\n","/*!\n * collection-visit \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar visit = require('object-visit');\nvar mapVisit = require('map-visit');\n\nmodule.exports = function(collection, method, val) {\n var result;\n\n if (typeof val === 'string' && (method in collection)) {\n var args = [].slice.call(arguments, 2);\n result = collection[method].apply(collection, args);\n } else if (Array.isArray(val)) {\n result = mapVisit.apply(null, arguments);\n } else {\n result = visit.apply(null, arguments);\n }\n\n if (typeof result !== 'undefined') {\n return result;\n }\n\n return collection;\n};\n","/*!\n * to-object-path \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\n\nmodule.exports = function toPath(args) {\n if (typeOf(args) !== 'arguments') {\n args = arguments;\n }\n return filter(args).join('.');\n};\n\nfunction filter(arr) {\n var len = arr.length;\n var idx = -1;\n var res = [];\n\n while (++idx < len) {\n var ele = arr[idx];\n if (typeOf(ele) === 'arguments' || Array.isArray(ele)) {\n res.push.apply(res, filter(ele));\n } else if (typeof ele === 'string') {\n res.push(ele);\n }\n }\n return res;\n}\n","'use strict';\n\nmodule.exports = function union(init) {\n if (!Array.isArray(init)) {\n throw new TypeError('arr-union expects the first argument to be an array.');\n }\n\n var len = arguments.length;\n var i = 0;\n\n while (++i < len) {\n var arg = arguments[i];\n if (!arg) continue;\n\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n\n for (var j = 0; j < arg.length; j++) {\n var ele = arg[j];\n\n if (init.indexOf(ele) >= 0) {\n continue;\n }\n init.push(ele);\n }\n }\n return init;\n};\n","/*!\n * get-value \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function(obj, prop, a, b, c) {\n if (!isObject(obj) || !prop) {\n return obj;\n }\n\n prop = toString(prop);\n\n // allowing for multiple properties to be passed as\n // a string or array, but much faster (3-4x) than doing\n // `[].slice.call(arguments)`\n if (a) prop += '.' + toString(a);\n if (b) prop += '.' + toString(b);\n if (c) prop += '.' + toString(c);\n\n if (prop in obj) {\n return obj[prop];\n }\n\n var segs = prop.split('.');\n var len = segs.length;\n var i = -1;\n\n while (obj && (++i < len)) {\n var key = segs[i];\n while (key[key.length - 1] === '\\\\') {\n key = key.slice(0, -1) + '.' + segs[++i];\n }\n obj = obj[key];\n }\n return obj;\n};\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'object' || typeof val === 'function');\n}\n\nfunction toString(val) {\n if (!val) return '';\n if (Array.isArray(val)) {\n return val.join('.');\n }\n return val;\n}\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/*!\n * set-value \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar split = require('split-string');\nvar extend = require('extend-shallow');\nvar isPlainObject = require('is-plain-object');\nvar isObject = require('is-extendable');\n\nmodule.exports = function(obj, prop, val) {\n if (!isObject(obj)) {\n return obj;\n }\n\n if (Array.isArray(prop)) {\n prop = [].concat.apply([], prop).join('.');\n }\n\n if (typeof prop !== 'string') {\n return obj;\n }\n\n var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey);\n var len = keys.length;\n var idx = -1;\n var current = obj;\n\n while (++idx < len) {\n var key = keys[idx];\n if (idx !== len - 1) {\n if (!isObject(current[key])) {\n current[key] = {};\n }\n current = current[key];\n continue;\n }\n\n if (isPlainObject(current[key]) && isPlainObject(val)) {\n current[key] = extend({}, current[key], val);\n } else {\n current[key] = val;\n }\n }\n\n return obj;\n};\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n}\n","'use strict';\n\nvar isObject = require('is-extendable');\nvar union = require('arr-union');\nvar get = require('get-value');\nvar set = require('set-value');\n\nmodule.exports = function unionValue(obj, prop, value) {\n if (!isObject(obj)) {\n throw new TypeError('union-value expects the first argument to be an object.');\n }\n\n if (typeof prop !== 'string') {\n throw new TypeError('union-value expects `prop` to be a string.');\n }\n\n var arr = arrayify(get(obj, prop));\n set(obj, prop, union(arr, arrayify(value)));\n return obj;\n};\n\nfunction arrayify(val) {\n if (val === null || typeof val === 'undefined') {\n return [];\n }\n if (Array.isArray(val)) {\n return val;\n }\n return [val];\n}\n","'use strict';\n\nvar isObject = require('isobject');\nvar Emitter = require('component-emitter');\nvar visit = require('collection-visit');\nvar toPath = require('to-object-path');\nvar union = require('union-value');\nvar del = require('unset-value');\nvar get = require('get-value');\nvar has = require('has-value');\nvar set = require('set-value');\n\n/**\n * Create a `Cache` constructor that when instantiated will\n * store values on the given `prop`.\n *\n * ```js\n * var Cache = require('cache-base').namespace('data');\n * var cache = new Cache();\n *\n * cache.set('foo', 'bar');\n * //=> {data: {foo: 'bar'}}\n * ```\n * @param {String} `prop` The property name to use for storing values.\n * @return {Function} Returns a custom `Cache` constructor\n * @api public\n */\n\nfunction namespace(prop) {\n\n /**\n * Create a new `Cache`. Internally the `Cache` constructor is created using\n * the `namespace` function, with `cache` defined as the storage object.\n *\n * ```js\n * var app = new Cache();\n * ```\n * @param {Object} `cache` Optionally pass an object to initialize with.\n * @constructor\n * @api public\n */\n\n function Cache(cache) {\n if (prop) {\n this[prop] = {};\n }\n if (cache) {\n this.set(cache);\n }\n }\n\n /**\n * Inherit Emitter\n */\n\n Emitter(Cache.prototype);\n\n /**\n * Assign `value` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.on('set', function(key, val) {\n * // do something when `set` is emitted\n * });\n *\n * app.set(key, value);\n *\n * // also takes an object or array\n * app.set({name: 'Halle'});\n * app.set([{foo: 'bar'}, {baz: 'quux'}]);\n * console.log(app);\n * //=> {name: 'Halle', foo: 'bar', baz: 'quux'}\n * ```\n *\n * @name .set\n * @emits `set` with `key` and `value` as arguments.\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.set = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n if (isObject(key) || Array.isArray(key)) {\n this.visit('set', key);\n } else {\n set(prop ? this[prop] : this, key, val);\n this.emit('set', key, val);\n }\n return this;\n };\n\n /**\n * Union `array` to `key`. Also emits `set` with\n * the key and value.\n *\n * ```js\n * app.union('a.b', ['foo']);\n * app.union('a.b', ['bar']);\n * console.log(app.get('a'));\n * //=> {b: ['foo', 'bar']}\n * ```\n * @name .union\n * @param {String} `key`\n * @param {any} `value`\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.union = function(key, val) {\n if (Array.isArray(key) && arguments.length === 2) {\n key = toPath(key);\n }\n var ctx = prop ? this[prop] : this;\n union(ctx, key, arrayify(val));\n this.emit('union', val);\n return this;\n };\n\n /**\n * Return the value of `key`. Dot notation may be used\n * to get [nested property values][get-value].\n *\n * ```js\n * app.set('a.b.c', 'd');\n * app.get('a.b');\n * //=> {c: 'd'}\n *\n * app.get(['a', 'b']);\n * //=> {c: 'd'}\n * ```\n *\n * @name .get\n * @emits `get` with `key` and `value` as arguments.\n * @param {String} `key` The name of the property to get. Dot-notation may be used.\n * @return {any} Returns the value of `key`\n * @api public\n */\n\n Cache.prototype.get = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n this.emit('get', key, val);\n return val;\n };\n\n /**\n * Return true if app has a stored value for `key`,\n * false only if value is `undefined`.\n *\n * ```js\n * app.set('foo', 'bar');\n * app.has('foo');\n * //=> true\n * ```\n *\n * @name .has\n * @emits `has` with `key` and true or false as arguments.\n * @param {String} `key`\n * @return {Boolean}\n * @api public\n */\n\n Cache.prototype.has = function(key) {\n key = toPath(arguments);\n\n var ctx = prop ? this[prop] : this;\n var val = get(ctx, key);\n\n var has = typeof val !== 'undefined';\n this.emit('has', key, has);\n return has;\n };\n\n /**\n * Delete one or more properties from the instance.\n *\n * ```js\n * app.del(); // delete all\n * // or\n * app.del('foo');\n * // or\n * app.del(['foo', 'bar']);\n * ```\n * @name .del\n * @emits `del` with the `key` as the only argument.\n * @param {String|Array} `key` Property name or array of property names.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.del = function(key) {\n if (Array.isArray(key)) {\n this.visit('del', key);\n } else {\n del(prop ? this[prop] : this, key);\n this.emit('del', key);\n }\n return this;\n };\n\n /**\n * Reset the entire cache to an empty object.\n *\n * ```js\n * app.clear();\n * ```\n * @api public\n */\n\n Cache.prototype.clear = function() {\n if (prop) {\n this[prop] = {};\n }\n };\n\n /**\n * Visit `method` over the properties in the given object, or map\n * visit over the object-elements in an array.\n *\n * @name .visit\n * @param {String} `method` The name of the `base` method to call.\n * @param {Object|Array} `val` The object or array to iterate over.\n * @return {Object} Returns the instance for chaining.\n * @api public\n */\n\n Cache.prototype.visit = function(method, val) {\n visit(this, method, val);\n return this;\n };\n\n return Cache;\n}\n\n/**\n * Cast val to an array\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Expose `Cache`\n */\n\nmodule.exports = namespace();\n\n/**\n * Expose `Cache.namespace`\n */\n\nmodule.exports.namespace = namespace;\n","/*!\n * has-values \n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = require('kind-of');\nvar isNumber = require('is-number');\n\nmodule.exports = function hasValue(val) {\n // is-number checks for NaN and other edge cases\n if (isNumber(val)) {\n return true;\n }\n\n switch (typeOf(val)) {\n case 'null':\n case 'boolean':\n case 'function':\n return true;\n case 'string':\n case 'arguments':\n return val.length !== 0;\n case 'error':\n return val.message !== '';\n case 'array':\n var len = val.length;\n if (len === 0) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (hasValue(val[i])) {\n return true;\n }\n }\n return false;\n case 'file':\n case 'map':\n case 'set':\n return val.size !== 0;\n case 'object':\n var keys = Object.keys(val);\n if (keys.length === 0) {\n return false;\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (hasValue(val[key])) {\n return true;\n }\n }\n return false;\n default: {\n return false;\n }\n }\n};\n","/*!\n * has-value \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar hasValues = require('has-values');\nvar get = require('get-value');\n\nmodule.exports = function(val, prop) {\n return hasValues(isObject(val) && prop ? get(val, prop) : val);\n};\n","/*!\n * unset-value \n *\n * Copyright (c) 2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\nvar has = require('has-value');\n\nmodule.exports = function unset(obj, prop) {\n if (!isObject(obj)) {\n throw new TypeError('expected an object.');\n }\n if (obj.hasOwnProperty(prop)) {\n delete obj[prop];\n return true;\n }\n\n if (has(obj, prop)) {\n var segs = prop.split('.');\n var last = segs.pop();\n while (segs.length && segs[segs.length - 1].slice(-1) === '\\\\') {\n last = segs.pop().slice(0, -1) + '.' + last;\n }\n while (segs.length) obj = obj[prop = segs.shift()];\n return (delete obj[last]);\n }\n return true;\n};\n","'use strict';\n\nvar isExtendable = require('is-extendable');\nvar forIn = require('for-in');\n\nfunction mixinDeep(target, objects) {\n var len = arguments.length, i = 0;\n while (++i < len) {\n var obj = arguments[i];\n if (isObject(obj)) {\n forIn(obj, copy, target);\n }\n }\n return target;\n}\n\n/**\n * Copy properties from the source object to the\n * target object.\n *\n * @param {*} `val`\n * @param {String} `key`\n */\n\nfunction copy(val, key) {\n if (!isValidKey(key)) {\n return;\n }\n\n var obj = this[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n this[key] = val;\n }\n}\n\n/**\n * Returns true if `val` is an object or function.\n *\n * @param {any} val\n * @return {Boolean}\n */\n\nfunction isObject(val) {\n return isExtendable(val) && !Array.isArray(val);\n}\n\n/**\n * Returns true if `key` is a valid key to use when extending objects.\n *\n * @param {String} `key`\n * @return {Boolean}\n */\n\nfunction isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\n/**\n * Expose `mixinDeep`\n */\n\nmodule.exports = mixinDeep;\n","/*!\n * for-in \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n","/*!\n * pascalcase \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nfunction pascalcase(str) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string.');\n }\n str = str.replace(/([A-Z])/g, ' $1');\n if (str.length === 1) { return str.toUpperCase(); }\n str = str.replace(/^[\\W_]+|[\\W_]+$/g, '').toLowerCase();\n str = str.charAt(0).toUpperCase() + str.slice(1);\n return str.replace(/[\\W_]+(\\w|$)/g, function (_, ch) {\n return ch.toUpperCase();\n });\n}\n\nmodule.exports = pascalcase;\n","'use strict';\n\nvar util = require('util');\nvar union = require('arr-union');\nvar define = require('define-property');\nvar staticExtend = require('static-extend');\nvar isObj = require('isobject');\n\n/**\n * Expose class utils\n */\n\nvar cu = module.exports;\n\n/**\n * Expose class utils: `cu`\n */\n\ncu.isObject = function isObject(val) {\n return isObj(val) || typeof val === 'function';\n};\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * cu.has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * cu.has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n * @api public\n */\n\ncu.has = function has(obj, val) {\n val = cu.arrayify(val);\n var len = val.length;\n\n if (cu.isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = cu.nativeKeys(obj);\n return cu.has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n};\n\n/**\n * Returns true if an array or object has all of the given values.\n *\n * ```js\n * cu.hasAll(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * cu.hasAll(['a', 'b', 'c'], ['c', 'z']);\n * //=> false\n *\n * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> false\n * ```\n * @param {Object|Array} `val`\n * @param {String|Array} `values`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasAll = function hasAll(val, values) {\n values = cu.arrayify(values);\n var len = values.length;\n while (len--) {\n if (!cu.has(val, values[len])) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * cu.arrayify('foo');\n * //=> ['foo']\n *\n * cu.arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n * @api public\n */\n\ncu.arrayify = function arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Noop\n */\n\ncu.noop = function noop() {\n return;\n};\n\n/**\n * Returns the first argument passed to the function.\n */\n\ncu.identity = function identity(val) {\n return val;\n};\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * cu.hasConstructor({});\n * //=> true\n *\n * cu.hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n * @api public\n */\n\ncu.hasConstructor = function hasConstructor(val) {\n return cu.isObject(val) && typeof val.constructor !== 'undefined';\n};\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * cu.nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * cu.nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n * @api public\n */\n\ncu.nativeKeys = function nativeKeys(val) {\n if (!cu.hasConstructor(val)) return [];\n var keys = Object.getOwnPropertyNames(val);\n if ('caller' in val) keys.push('caller');\n return keys;\n};\n\n/**\n * Returns property descriptor `key` if it's an \"own\" property\n * of the given object.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * cu.getDescriptor(App.prototype, 'count');\n * // returns:\n * // {\n * // get: [Function],\n * // set: undefined,\n * // enumerable: false,\n * // configurable: false\n * // }\n * ```\n *\n * @param {Object} `obj`\n * @param {String} `key`\n * @return {Object} Returns descriptor `key`\n * @api public\n */\n\ncu.getDescriptor = function getDescriptor(obj, key) {\n if (!cu.isObject(obj)) {\n throw new TypeError('expected an object.');\n }\n if (typeof key !== 'string') {\n throw new TypeError('expected key to be a string.');\n }\n return Object.getOwnPropertyDescriptor(obj, key);\n};\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {}\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this).length;\n * }\n * });\n * var obj = {};\n * cu.copyDescriptor(obj, App.prototype, 'count');\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String} `name`\n * @return {Object}\n * @api public\n */\n\ncu.copyDescriptor = function copyDescriptor(receiver, provider, name) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n if (typeof name !== 'string') {\n throw new TypeError('expected name to be a string.');\n }\n\n var val = cu.getDescriptor(provider, name);\n if (val) Object.defineProperty(receiver, name, val);\n};\n\n/**\n * Copy static properties, prototype properties, and descriptors\n * from one object to another.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.copy = function copy(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n var props = Object.getOwnPropertyNames(provider);\n var keys = Object.keys(provider);\n var len = props.length,\n key;\n omit = cu.arrayify(omit);\n\n while (len--) {\n key = props[len];\n\n if (cu.has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !cu.has(omit, key)) {\n cu.copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Inherit the static properties, prototype properties, and descriptors\n * from of an object.\n *\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\ncu.inherit = function inherit(receiver, provider, omit) {\n if (!cu.isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!cu.isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var keys = [];\n for (var key in provider) {\n keys.push(key);\n receiver[key] = provider[key];\n }\n\n keys = keys.concat(cu.arrayify(omit));\n\n var a = provider.prototype || provider;\n var b = receiver.prototype || receiver;\n cu.copy(b, a, keys);\n};\n\n/**\n * Returns a function for extending the static properties,\n * prototype properties, and descriptors from the `Parent`\n * constructor onto `Child` constructors.\n *\n * ```js\n * var extend = cu.extend(Parent);\n * Parent.extend(Child);\n *\n * // optional methods\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @param {Function} `Parent` Parent ctor\n * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype.\n * @param {Function} `Child` Child ctor\n * @param {Object} `proto` Optionally pass additional prototype properties to inherit.\n * @return {Object}\n * @api public\n */\n\ncu.extend = function() {\n // keep it lazy, instead of assigning to `cu.extend`\n return staticExtend.apply(null, arguments);\n};\n\n/**\n * Bubble up events emitted from static methods on the Parent ctor.\n *\n * @param {Object} `Parent`\n * @param {Array} `events` Event names to bubble up\n * @api public\n */\n\ncu.bubble = function(Parent, events) {\n events = events || [];\n Parent.bubble = function(Child, arr) {\n if (Array.isArray(arr)) {\n events = union([], events, arr);\n }\n var len = events.length;\n var idx = -1;\n while (++idx < len) {\n var name = events[idx];\n Parent.on(name, Child.emit.bind(Child, name));\n }\n cu.bubble(Child, events);\n };\n};\n","/*!\n * copy-descriptor \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Copy a descriptor from one object to another.\n *\n * ```js\n * function App() {\n * this.cache = {};\n * }\n * App.prototype.set = function(key, val) {\n * this.cache[key] = val;\n * return this;\n * };\n * Object.defineProperty(App.prototype, 'count', {\n * get: function() {\n * return Object.keys(this.cache).length;\n * }\n * });\n *\n * copy(App.prototype, 'count', 'len');\n *\n * // create an instance\n * var app = new App();\n *\n * app.set('a', true);\n * app.set('b', true);\n * app.set('c', true);\n *\n * console.log(app.count);\n * //=> 3\n * console.log(app.len);\n * //=> 3\n * ```\n * @name copy\n * @param {Object} `receiver` The target object\n * @param {Object} `provider` The provider object\n * @param {String} `from` The key to copy on provider.\n * @param {String} `to` Optionally specify a new key name to use.\n * @return {Object}\n * @api public\n */\n\nmodule.exports = function copyDescriptor(receiver, provider, from, to) {\n if (!isObject(provider) && typeof provider !== 'function') {\n to = from;\n from = provider;\n provider = receiver;\n }\n if (!isObject(receiver) && typeof receiver !== 'function') {\n throw new TypeError('expected the first argument to be an object');\n }\n if (!isObject(provider) && typeof provider !== 'function') {\n throw new TypeError('expected provider to be an object');\n }\n\n if (typeof to !== 'string') {\n to = from;\n }\n if (typeof from !== 'string') {\n throw new TypeError('expected key to be a string');\n }\n\n if (!(from in provider)) {\n throw new Error('property \"' + from + '\" does not exist');\n }\n\n var val = Object.getOwnPropertyDescriptor(provider, from);\n if (val) Object.defineProperty(receiver, to, val);\n};\n\nfunction isObject(val) {\n return {}.toString.call(val) === '[object Object]';\n}\n\n","'use strict';\n\nvar typeOf = require('kind-of');\nvar copyDescriptor = require('copy-descriptor');\nvar define = require('define-property');\n\n/**\n * Copy static properties, prototype properties, and descriptors from one object to another.\n *\n * ```js\n * function App() {}\n * var proto = App.prototype;\n * App.prototype.set = function() {};\n * App.prototype.get = function() {};\n *\n * var obj = {};\n * copy(obj, proto);\n * ```\n * @param {Object} `receiver`\n * @param {Object} `provider`\n * @param {String|Array} `omit` One or more properties to omit\n * @return {Object}\n * @api public\n */\n\nfunction copy(receiver, provider, omit) {\n if (!isObject(receiver)) {\n throw new TypeError('expected receiving object to be an object.');\n }\n if (!isObject(provider)) {\n throw new TypeError('expected providing object to be an object.');\n }\n\n var props = nativeKeys(provider);\n var keys = Object.keys(provider);\n var len = props.length;\n omit = arrayify(omit);\n\n while (len--) {\n var key = props[len];\n\n if (has(keys, key)) {\n define(receiver, key, provider[key]);\n } else if (!(key in receiver) && !has(omit, key)) {\n copyDescriptor(receiver, provider, key);\n }\n }\n};\n\n/**\n * Return true if the given value is an object or function\n */\n\nfunction isObject(val) {\n return typeOf(val) === 'object' || typeof val === 'function';\n}\n\n/**\n * Returns true if an array has any of the given elements, or an\n * object has any of the give keys.\n *\n * ```js\n * has(['a', 'b', 'c'], 'c');\n * //=> true\n *\n * has(['a', 'b', 'c'], ['c', 'z']);\n * //=> true\n *\n * has({a: 'b', c: 'd'}, ['c', 'z']);\n * //=> true\n * ```\n * @param {Object} `obj`\n * @param {String|Array} `val`\n * @return {Boolean}\n */\n\nfunction has(obj, val) {\n val = arrayify(val);\n var len = val.length;\n\n if (isObject(obj)) {\n for (var key in obj) {\n if (val.indexOf(key) > -1) {\n return true;\n }\n }\n\n var keys = nativeKeys(obj);\n return has(keys, val);\n }\n\n if (Array.isArray(obj)) {\n var arr = obj;\n while (len--) {\n if (arr.indexOf(val[len]) > -1) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('expected an array or object.');\n}\n\n/**\n * Cast the given value to an array.\n *\n * ```js\n * arrayify('foo');\n * //=> ['foo']\n *\n * arrayify(['foo']);\n * //=> ['foo']\n * ```\n *\n * @param {String|Array} `val`\n * @return {Array}\n */\n\nfunction arrayify(val) {\n return val ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Returns true if a value has a `contructor`\n *\n * ```js\n * hasConstructor({});\n * //=> true\n *\n * hasConstructor(Object.create(null));\n * //=> false\n * ```\n * @param {Object} `value`\n * @return {Boolean}\n */\n\nfunction hasConstructor(val) {\n return isObject(val) && typeof val.constructor !== 'undefined';\n}\n\n/**\n * Get the native `ownPropertyNames` from the constructor of the\n * given `object`. An empty array is returned if the object does\n * not have a constructor.\n *\n * ```js\n * nativeKeys({a: 'b', b: 'c', c: 'd'})\n * //=> ['a', 'b', 'c']\n *\n * nativeKeys(function(){})\n * //=> ['length', 'caller']\n * ```\n *\n * @param {Object} `obj` Object that has a `constructor`.\n * @return {Array} Array of keys.\n */\n\nfunction nativeKeys(val) {\n if (!hasConstructor(val)) return [];\n return Object.getOwnPropertyNames(val);\n}\n\n/**\n * Expose `copy`\n */\n\nmodule.exports = copy;\n\n/**\n * Expose `copy.has` for tests\n */\n\nmodule.exports.has = has;\n","/*!\n * static-extend \n *\n * Copyright (c) 2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar copy = require('object-copy');\nvar define = require('define-property');\nvar util = require('util');\n\n/**\n * Returns a function for extending the static properties,\n * prototype properties, and descriptors from the `Parent`\n * constructor onto `Child` constructors.\n *\n * ```js\n * var extend = require('static-extend');\n * Parent.extend = extend(Parent);\n *\n * // optionally pass a custom merge function as the second arg\n * Parent.extend = extend(Parent, function(Child) {\n * Child.prototype.mixin = function(key, val) {\n * Child.prototype[key] = val;\n * };\n * });\n *\n * // extend \"child\" constructors\n * Parent.extend(Child);\n *\n * // optionally define prototype methods as the second arg\n * Parent.extend(Child, {\n * foo: function() {},\n * bar: function() {}\n * });\n * ```\n * @param {Function} `Parent` Parent ctor\n * @param {Function} `extendFn` Optional extend function for handling any necessary custom merging. Useful when updating methods that require a specific prototype.\n * @param {Function} `Child` Child ctor\n * @param {Object} `proto` Optionally pass additional prototype properties to inherit.\n * @return {Object}\n * @api public\n */\n\nfunction extend(Parent, extendFn) {\n if (typeof Parent !== 'function') {\n throw new TypeError('expected Parent to be a function.');\n }\n\n return function(Ctor, proto) {\n if (typeof Ctor !== 'function') {\n throw new TypeError('expected Ctor to be a function.');\n }\n\n util.inherits(Ctor, Parent);\n copy(Ctor, Parent);\n\n // proto can be null or a plain object\n if (typeof proto === 'object') {\n var obj = Object.create(proto);\n\n for (var k in obj) {\n Ctor.prototype[k] = obj[k];\n }\n }\n\n // keep a reference to the parent prototype\n define(Ctor.prototype, '_parent_', {\n configurable: true,\n set: function() {},\n get: function() {\n return Parent.prototype;\n }\n });\n\n if (typeof extendFn === 'function') {\n extendFn(Ctor, Parent);\n }\n\n Ctor.extend = extend(Ctor, extendFn);\n };\n};\n\n/**\n * Expose `extend`\n */\n\nmodule.exports = extend;\n","'use strict';\n\nvar Base = require('base');\nvar define = require('define-property');\nvar Compiler = require('./lib/compiler');\nvar Parser = require('./lib/parser');\nvar utils = require('./lib/utils');\nvar regexCache = {};\nvar cache = {};\n\n/**\n * Create a new instance of `Snapdragon` with the given `options`.\n *\n * ```js\n * var snapdragon = new Snapdragon();\n * ```\n *\n * @param {Object} `options`\n * @api public\n */\n\nfunction Snapdragon(options) {\n Base.call(this, null, options);\n this.options = utils.extend({source: 'string'}, this.options);\n this.compiler = new Compiler(this.options);\n this.parser = new Parser(this.options);\n\n Object.defineProperty(this, 'compilers', {\n get: function() {\n return this.compiler.compilers;\n }\n });\n\n Object.defineProperty(this, 'parsers', {\n get: function() {\n return this.parser.parsers;\n }\n });\n\n Object.defineProperty(this, 'regex', {\n get: function() {\n return this.parser.regex;\n }\n });\n}\n\n/**\n * Inherit Base\n */\n\nBase.extend(Snapdragon);\n\n/**\n * Add a parser to `snapdragon.parsers` for capturing the given `type` using\n * the specified regex or parser function. A function is useful if you need\n * to customize how the token is created and/or have access to the parser\n * instance to check options, etc.\n *\n * ```js\n * snapdragon\n * .capture('slash', /^\\//)\n * .capture('dot', function() {\n * var pos = this.position();\n * var m = this.match(/^\\./);\n * if (!m) return;\n * return pos({\n * type: 'dot',\n * val: m[0]\n * });\n * });\n * ```\n * @param {String} `type`\n * @param {RegExp|Function} `regex`\n * @return {Object} Returns the parser instance for chaining\n * @api public\n */\n\nSnapdragon.prototype.capture = function() {\n return this.parser.capture.apply(this.parser, arguments);\n};\n\n/**\n * Register a plugin `fn`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * snapdragon.use(function() {\n * console.log(this); //<= snapdragon instance\n * console.log(this.parser); //<= parser instance\n * console.log(this.compiler); //<= compiler instance\n * });\n * ```\n * @param {Object} `fn`\n * @api public\n */\n\nSnapdragon.prototype.use = function(fn) {\n fn.call(this, this);\n return this;\n};\n\n/**\n * Parse the given `str`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * // register parsers\n * snapdragon.parser.use(function() {});\n *\n * // parse\n * var ast = snapdragon.parse('foo/bar');\n * console.log(ast);\n * ```\n * @param {String} `str`\n * @param {Object} `options` Set `options.sourcemap` to true to enable source maps.\n * @return {Object} Returns an AST.\n * @api public\n */\n\nSnapdragon.prototype.parse = function(str, options) {\n this.options = utils.extend({}, this.options, options);\n var parsed = this.parser.parse(str, this.options);\n\n // add non-enumerable parser reference\n define(parsed, 'parser', this.parser);\n return parsed;\n};\n\n/**\n * Compile the given `AST`.\n *\n * ```js\n * var snapdragon = new Snapdgragon([options]);\n * // register plugins\n * snapdragon.use(function() {});\n * // register parser plugins\n * snapdragon.parser.use(function() {});\n * // register compiler plugins\n * snapdragon.compiler.use(function() {});\n *\n * // parse\n * var ast = snapdragon.parse('foo/bar');\n *\n * // compile\n * var res = snapdragon.compile(ast);\n * console.log(res.output);\n * ```\n * @param {Object} `ast`\n * @param {Object} `options`\n * @return {Object} Returns an object with an `output` property with the rendered string.\n * @api public\n */\n\nSnapdragon.prototype.compile = function(ast, options) {\n this.options = utils.extend({}, this.options, options);\n var compiled = this.compiler.compile(ast, this.options);\n\n // add non-enumerable compiler reference\n define(compiled, 'compiler', this.compiler);\n return compiled;\n};\n\n/**\n * Expose `Snapdragon`\n */\n\nmodule.exports = Snapdragon;\n\n/**\n * Expose `Parser` and `Compiler`\n */\n\nmodule.exports.Compiler = Compiler;\nmodule.exports.Parser = Parser;\n","/*!\n * use \n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function base(app, options) {\n if (!isObject(app) && typeof app !== 'function') {\n throw new TypeError('expected an object or function');\n }\n\n var opts = isObject(options) ? options : {};\n var prop = typeof opts.prop === 'string' ? opts.prop : 'fns';\n if (!Array.isArray(app[prop])) {\n define(app, prop, []);\n }\n\n /**\n * Define a plugin function to be passed to use. The only\n * parameter exposed to the plugin is `app`, the object or function.\n * passed to `use(app)`. `app` is also exposed as `this` in plugins.\n *\n * Additionally, **if a plugin returns a function, the function will\n * be pushed onto the `fns` array**, allowing the plugin to be\n * called at a later point by the `run` method.\n *\n * ```js\n * var use = require('use');\n *\n * // define a plugin\n * function foo(app) {\n * // do stuff\n * }\n *\n * var app = function(){};\n * use(app);\n *\n * // register plugins\n * app.use(foo);\n * app.use(bar);\n * app.use(baz);\n * ```\n * @name .use\n * @param {Function} `fn` plugin function to call\n * @api public\n */\n\n define(app, 'use', use);\n\n /**\n * Run all plugins on `fns`. Any plugin that returns a function\n * when called by `use` is pushed onto the `fns` array.\n *\n * ```js\n * var config = {};\n * app.run(config);\n * ```\n * @name .run\n * @param {Object} `value` Object to be modified by plugins.\n * @return {Object} Returns the object passed to `run`\n * @api public\n */\n\n define(app, 'run', function(val) {\n if (!isObject(val)) return;\n\n if (!val.use || !val.run) {\n define(val, prop, val[prop] || []);\n define(val, 'use', use);\n }\n\n if (!val[prop] || val[prop].indexOf(base) === -1) {\n val.use(base);\n }\n\n var self = this || app;\n var fns = self[prop];\n var len = fns.length;\n var idx = -1;\n\n while (++idx < len) {\n val.use(fns[idx]);\n }\n return val;\n });\n\n /**\n * Call plugin `fn`. If a function is returned push it into the\n * `fns` array to be called by the `run` method.\n */\n\n function use(type, fn, options) {\n var offset = 1;\n\n if (typeof type === 'string' || Array.isArray(type)) {\n fn = wrap(type, fn);\n offset++;\n } else {\n options = fn;\n fn = type;\n }\n\n if (typeof fn !== 'function') {\n throw new TypeError('expected a function');\n }\n\n var self = this || app;\n var fns = self[prop];\n\n var args = [].slice.call(arguments, offset);\n args.unshift(self);\n\n if (typeof opts.hook === 'function') {\n opts.hook.apply(self, args);\n }\n\n var val = fn.apply(self, args);\n if (typeof val === 'function' && fns.indexOf(val) === -1) {\n fns.push(val);\n }\n return self;\n }\n\n /**\n * Wrap a named plugin function so that it's only called on objects of the\n * given `type`\n *\n * @param {String} `type`\n * @param {Function} `fn` Plugin function\n * @return {Function}\n */\n\n function wrap(type, fn) {\n return function plugin() {\n return this.type === type ? fn.apply(this, arguments) : plugin;\n };\n }\n\n return app;\n};\n\nfunction isObject(val) {\n return val && typeof val === 'object' && !Array.isArray(val);\n}\n\nfunction define(obj, key, val) {\n Object.defineProperty(obj, key, {\n configurable: true,\n writable: true,\n value: val\n });\n}\n","'use strict';\n\nvar use = require('use');\nvar define = require('define-property');\nvar debug = require('debug')('snapdragon:compiler');\nvar utils = require('./utils');\n\n/**\n * Create a new `Compiler` with the given `options`.\n * @param {Object} `options`\n */\n\nfunction Compiler(options, state) {\n debug('initializing', __filename);\n this.options = utils.extend({source: 'string'}, options);\n this.state = state || {};\n this.compilers = {};\n this.output = '';\n this.set('eos', function(node) {\n return this.emit(node.val, node);\n });\n this.set('noop', function(node) {\n return this.emit(node.val, node);\n });\n this.set('bos', function(node) {\n return this.emit(node.val, node);\n });\n use(this);\n}\n\n/**\n * Prototype methods\n */\n\nCompiler.prototype = {\n\n /**\n * Throw an error message with details including the cursor position.\n * @param {String} `msg` Message to use in the Error.\n */\n\n error: function(msg, node) {\n var pos = node.position || {start: {column: 0}};\n var message = this.options.source + ' column:' + pos.start.column + ': ' + msg;\n\n var err = new Error(message);\n err.reason = msg;\n err.column = pos.start.column;\n err.source = this.pattern;\n\n if (this.options.silent) {\n this.errors.push(err);\n } else {\n throw err;\n }\n },\n\n /**\n * Define a non-enumberable property on the `Compiler` instance.\n *\n * ```js\n * compiler.define('foo', 'bar');\n * ```\n * @name .define\n * @param {String} `key` propery name\n * @param {any} `val` property value\n * @return {Object} Returns the Compiler instance for chaining.\n * @api public\n */\n\n define: function(key, val) {\n define(this, key, val);\n return this;\n },\n\n /**\n * Emit `node.val`\n */\n\n emit: function(str, node) {\n this.output += str;\n return str;\n },\n\n /**\n * Add a compiler `fn` with the given `name`\n */\n\n set: function(name, fn) {\n this.compilers[name] = fn;\n return this;\n },\n\n /**\n * Get compiler `name`.\n */\n\n get: function(name) {\n return this.compilers[name];\n },\n\n /**\n * Get the previous AST node.\n */\n\n prev: function(n) {\n return this.ast.nodes[this.idx - (n || 1)] || { type: 'bos', val: '' };\n },\n\n /**\n * Get the next AST node.\n */\n\n next: function(n) {\n return this.ast.nodes[this.idx + (n || 1)] || { type: 'eos', val: '' };\n },\n\n /**\n * Visit `node`.\n */\n\n visit: function(node, nodes, i) {\n var fn = this.compilers[node.type];\n this.idx = i;\n\n if (typeof fn !== 'function') {\n throw this.error('compiler \"' + node.type + '\" is not registered', node);\n }\n return fn.call(this, node, nodes, i);\n },\n\n /**\n * Map visit over array of `nodes`.\n */\n\n mapVisit: function(nodes) {\n if (!Array.isArray(nodes)) {\n throw new TypeError('expected an array');\n }\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n this.visit(nodes[idx], nodes, idx);\n }\n return this;\n },\n\n /**\n * Compile `ast`.\n */\n\n compile: function(ast, options) {\n var opts = utils.extend({}, this.options, options);\n this.ast = ast;\n this.parsingErrors = this.ast.errors;\n this.output = '';\n\n // source map support\n if (opts.sourcemap) {\n var sourcemaps = require('./source-maps');\n sourcemaps(this);\n this.mapVisit(this.ast.nodes);\n this.applySourceMaps();\n this.map = opts.sourcemap === 'generator' ? this.map : this.map.toJSON();\n return this;\n }\n\n this.mapVisit(this.ast.nodes);\n return this;\n }\n};\n\n/**\n * Expose `Compiler`\n */\n\nmodule.exports = Compiler;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (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 base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","// Copyright 2014 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory)\n } else if (typeof exports === \"object\") {\n module.exports = factory()\n } else {\n root.sourceMappingURL = factory()\n }\n}(this, function() {\n\n var innerRegex = /[#@] sourceMappingURL=([^\\s'\"]*)/\n\n var regex = RegExp(\n \"(?:\" +\n \"/\\\\*\" +\n \"(?:\\\\s*\\r?\\n(?://)?)?\" +\n \"(?:\" + innerRegex.source + \")\" +\n \"\\\\s*\" +\n \"\\\\*/\" +\n \"|\" +\n \"//(?:\" + innerRegex.source + \")\" +\n \")\" +\n \"\\\\s*\"\n )\n\n return {\n\n regex: regex,\n _innerRegex: innerRegex,\n\n getFrom: function(code) {\n var match = code.match(regex)\n return (match ? match[1] || match[2] || \"\" : null)\n },\n\n existsIn: function(code) {\n return regex.test(code)\n },\n\n removeFrom: function(code) {\n return code.replace(regex, \"\")\n },\n\n insertBefore: function(code, string) {\n var match = code.match(regex)\n if (match) {\n return code.slice(0, match.index) + string + code.slice(match.index)\n } else {\n return code + string\n }\n }\n }\n\n}));\n","// Copyright 2014 Simon Lydell\r\n// X11 (“MIT”) Licensed. (See LICENSE.)\r\n\r\nvoid (function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(factory)\r\n } else if (typeof exports === \"object\") {\r\n module.exports = factory()\r\n } else {\r\n root.resolveUrl = factory()\r\n }\r\n}(this, function() {\r\n\r\n function resolveUrl(/* ...urls */) {\r\n var numUrls = arguments.length\r\n\r\n if (numUrls === 0) {\r\n throw new Error(\"resolveUrl requires at least one argument; got none.\")\r\n }\r\n\r\n var base = document.createElement(\"base\")\r\n base.href = arguments[0]\r\n\r\n if (numUrls === 1) {\r\n return base.href\r\n }\r\n\r\n var head = document.getElementsByTagName(\"head\")[0]\r\n head.insertBefore(base, head.firstChild)\r\n\r\n var a = document.createElement(\"a\")\r\n var resolved\r\n\r\n for (var index = 1; index < numUrls; index++) {\r\n a.href = arguments[index]\r\n resolved = a.href\r\n base.href = resolved\r\n }\r\n\r\n head.removeChild(base)\r\n\r\n return resolved\r\n }\r\n\r\n return resolveUrl\r\n\r\n}));\r\n","// Note: source-map-resolve.js is generated from source-map-resolve-node.js and\n// source-map-resolve-template.js. Only edit the two latter files, _not_\n// source-map-resolve.js!\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"source-map-url\", \"resolve-url\"], factory)\n } else if (typeof exports === \"object\") {\n var sourceMappingURL = require(\"source-map-url\")\n var resolveUrl = require(\"resolve-url\")\n module.exports = factory(sourceMappingURL, resolveUrl)\n } else {\n root.sourceMapResolve = factory(root.sourceMappingURL, root.resolveUrl)\n }\n}(this, function(sourceMappingURL, resolveUrl) {\n\n function callbackAsync(callback, error, result) {\n setImmediate(function() { callback(error, result) })\n }\n\n function parseMapToJSON(string, data) {\n try {\n return JSON.parse(string.replace(/^\\)\\]\\}'/, \"\"))\n } catch (error) {\n error.sourceMapData = data\n throw error\n }\n }\n\n function readSync(read, url, data) {\n var readUrl = url\n try {\n return String(read(readUrl))\n } catch (error) {\n error.sourceMapData = data\n throw error\n }\n }\n\n\n\n function resolveSourceMap(code, codeUrl, read, callback) {\n var mapData\n try {\n mapData = resolveSourceMapHelper(code, codeUrl)\n } catch (error) {\n return callbackAsync(callback, error)\n }\n if (!mapData || mapData.map) {\n return callbackAsync(callback, null, mapData)\n }\n var readUrl = mapData.url\n read(readUrl, function(error, result) {\n if (error) {\n error.sourceMapData = mapData\n return callback(error)\n }\n mapData.map = String(result)\n try {\n mapData.map = parseMapToJSON(mapData.map, mapData)\n } catch (error) {\n return callback(error)\n }\n callback(null, mapData)\n })\n }\n\n function resolveSourceMapSync(code, codeUrl, read) {\n var mapData = resolveSourceMapHelper(code, codeUrl)\n if (!mapData || mapData.map) {\n return mapData\n }\n mapData.map = readSync(read, mapData.url, mapData)\n mapData.map = parseMapToJSON(mapData.map, mapData)\n return mapData\n }\n\n var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/\n\n /**\n * The media type for JSON text is application/json.\n *\n * {@link https://tools.ietf.org/html/rfc8259#section-11 | IANA Considerations }\n *\n * `text/json` is non-standard media type\n */\n var jsonMimeTypeRegex = /^(?:application|text)\\/json$/\n\n /**\n * JSON text exchanged between systems that are not part of a closed ecosystem\n * MUST be encoded using UTF-8.\n *\n * {@link https://tools.ietf.org/html/rfc8259#section-8.1 | Character Encoding}\n */\n var jsonCharacterEncoding = \"utf-8\"\n\n function base64ToBuf(b64) {\n var binStr = atob(b64)\n var len = binStr.length\n var arr = new Uint8Array(len)\n for (var i = 0; i < len; i++) {\n arr[i] = binStr.charCodeAt(i)\n }\n return arr\n }\n\n function decodeBase64String(b64) {\n if (typeof TextDecoder === \"undefined\" || typeof Uint8Array === \"undefined\") {\n return atob(b64)\n }\n var buf = base64ToBuf(b64);\n // Note: `decoder.decode` method will throw a `DOMException` with the\n // `\"EncodingError\"` value when an coding error is found.\n var decoder = new TextDecoder(jsonCharacterEncoding, {fatal: true})\n return decoder.decode(buf);\n }\n\n function resolveSourceMapHelper(code, codeUrl) {\n var url = sourceMappingURL.getFrom(code)\n if (!url) {\n return null\n }\n\n var dataUri = url.match(dataUriRegex)\n if (dataUri) {\n var mimeType = dataUri[1] || \"text/plain\"\n var lastParameter = dataUri[2] || \"\"\n var encoded = dataUri[3] || \"\"\n var data = {\n sourceMappingURL: url,\n url: null,\n sourcesRelativeTo: codeUrl,\n map: encoded\n }\n if (!jsonMimeTypeRegex.test(mimeType)) {\n var error = new Error(\"Unuseful data uri mime type: \" + mimeType)\n error.sourceMapData = data\n throw error\n }\n try {\n data.map = parseMapToJSON(\n lastParameter === \";base64\" ? decodeBase64String(encoded) : decodeURIComponent(encoded),\n data\n )\n } catch (error) {\n error.sourceMapData = data\n throw error\n }\n return data\n }\n\n var mapUrl = resolveUrl(codeUrl, url)\n return {\n sourceMappingURL: url,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n }\n\n\n\n function resolveSources(map, mapUrl, read, options, callback) {\n if (typeof options === \"function\") {\n callback = options\n options = {}\n }\n var pending = map.sources ? map.sources.length : 0\n var result = {\n sourcesResolved: [],\n sourcesContent: []\n }\n\n if (pending === 0) {\n callbackAsync(callback, null, result)\n return\n }\n\n var done = function() {\n pending--\n if (pending === 0) {\n callback(null, result)\n }\n }\n\n resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {\n result.sourcesResolved[index] = fullUrl\n if (typeof sourceContent === \"string\") {\n result.sourcesContent[index] = sourceContent\n callbackAsync(done, null)\n } else {\n var readUrl = fullUrl\n read(readUrl, function(error, source) {\n result.sourcesContent[index] = error ? error : String(source)\n done()\n })\n }\n })\n }\n\n function resolveSourcesSync(map, mapUrl, read, options) {\n var result = {\n sourcesResolved: [],\n sourcesContent: []\n }\n\n if (!map.sources || map.sources.length === 0) {\n return result\n }\n\n resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) {\n result.sourcesResolved[index] = fullUrl\n if (read !== null) {\n if (typeof sourceContent === \"string\") {\n result.sourcesContent[index] = sourceContent\n } else {\n var readUrl = fullUrl\n try {\n result.sourcesContent[index] = String(read(readUrl))\n } catch (error) {\n result.sourcesContent[index] = error\n }\n }\n }\n })\n\n return result\n }\n\n var endingSlash = /\\/?$/\n\n function resolveSourcesHelper(map, mapUrl, options, fn) {\n options = options || {}\n var fullUrl\n var sourceContent\n var sourceRoot\n for (var index = 0, len = map.sources.length; index < len; index++) {\n sourceRoot = null\n if (typeof options.sourceRoot === \"string\") {\n sourceRoot = options.sourceRoot\n } else if (typeof map.sourceRoot === \"string\" && options.sourceRoot !== false) {\n sourceRoot = map.sourceRoot\n }\n // If the sourceRoot is the empty string, it is equivalent to not setting\n // the property at all.\n if (sourceRoot === null || sourceRoot === '') {\n fullUrl = resolveUrl(mapUrl, map.sources[index])\n } else {\n // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes\n // `/scripts/subdir/`, not `/scripts/`. Pointing to a file as source root\n // does not make sense.\n fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, \"/\"), map.sources[index])\n }\n sourceContent = (map.sourcesContent || [])[index]\n fn(fullUrl, sourceContent, index)\n }\n }\n\n\n\n function resolve(code, codeUrl, read, options, callback) {\n if (typeof options === \"function\") {\n callback = options\n options = {}\n }\n if (code === null) {\n var mapUrl = codeUrl\n var data = {\n sourceMappingURL: null,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n var readUrl = mapUrl\n read(readUrl, function(error, result) {\n if (error) {\n error.sourceMapData = data\n return callback(error)\n }\n data.map = String(result)\n try {\n data.map = parseMapToJSON(data.map, data)\n } catch (error) {\n return callback(error)\n }\n _resolveSources(data)\n })\n } else {\n resolveSourceMap(code, codeUrl, read, function(error, mapData) {\n if (error) {\n return callback(error)\n }\n if (!mapData) {\n return callback(null, null)\n }\n _resolveSources(mapData)\n })\n }\n\n function _resolveSources(mapData) {\n resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) {\n if (error) {\n return callback(error)\n }\n mapData.sourcesResolved = result.sourcesResolved\n mapData.sourcesContent = result.sourcesContent\n callback(null, mapData)\n })\n }\n }\n\n function resolveSync(code, codeUrl, read, options) {\n var mapData\n if (code === null) {\n var mapUrl = codeUrl\n mapData = {\n sourceMappingURL: null,\n url: mapUrl,\n sourcesRelativeTo: mapUrl,\n map: null\n }\n mapData.map = readSync(read, mapUrl, mapData)\n mapData.map = parseMapToJSON(mapData.map, mapData)\n } else {\n mapData = resolveSourceMapSync(code, codeUrl, read)\n if (!mapData) {\n return null\n }\n }\n var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options)\n mapData.sourcesResolved = result.sourcesResolved\n mapData.sourcesContent = result.sourcesContent\n return mapData\n }\n\n\n\n return {\n resolveSourceMap: resolveSourceMap,\n resolveSourceMapSync: resolveSourceMapSync,\n resolveSources: resolveSources,\n resolveSourcesSync: resolveSourcesSync,\n resolve: resolve,\n resolveSync: resolveSync,\n parseMapToJSON: parseMapToJSON\n }\n\n}));\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nexports.extend = require('extend-shallow');\nexports.SourceMap = require('source-map');\nexports.sourceMapResolve = require('source-map-resolve');\n\n/**\n * Convert backslash in the given string to forward slashes\n */\n\nexports.unixify = function(fp) {\n return fp.split(/\\\\+/).join('/');\n};\n\n/**\n * Return true if `val` is a non-empty string\n *\n * @param {String} `str`\n * @return {Boolean}\n */\n\nexports.isString = function(str) {\n return str && typeof str === 'string';\n};\n\n/**\n * Cast `val` to an array\n * @return {Array}\n */\n\nexports.arrayify = function(val) {\n if (typeof val === 'string') return [val];\n return val ? (Array.isArray(val) ? val : [val]) : [];\n};\n\n/**\n * Get the last `n` element from the given `array`\n * @param {Array} `array`\n * @return {*}\n */\n\nexports.last = function(arr, n) {\n return arr[arr.length - (n || 1)];\n};\n","'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar define = require('define-property');\nvar utils = require('./utils');\n\n/**\n * Expose `mixin()`.\n * This code is based on `source-maps-support.js` in reworkcss/css\n * https://github.com/reworkcss/css/blob/master/lib/stringify/source-map-support.js\n * Copyright (c) 2012 TJ Holowaychuk \n */\n\nmodule.exports = mixin;\n\n/**\n * Mixin source map support into `compiler`.\n *\n * @param {Object} `compiler`\n * @api public\n */\n\nfunction mixin(compiler) {\n define(compiler, '_comment', compiler.comment);\n compiler.map = new utils.SourceMap.SourceMapGenerator();\n compiler.position = { line: 1, column: 1 };\n compiler.content = {};\n compiler.files = {};\n\n for (var key in exports) {\n define(compiler, key, exports[key]);\n }\n}\n\n/**\n * Update position.\n *\n * @param {String} str\n */\n\nexports.updatePosition = function(str) {\n var lines = str.match(/\\n/g);\n if (lines) this.position.line += lines.length;\n var i = str.lastIndexOf('\\n');\n this.position.column = ~i ? str.length - i : this.position.column + str.length;\n};\n\n/**\n * Emit `str` with `position`.\n *\n * @param {String} str\n * @param {Object} [pos]\n * @return {String}\n */\n\nexports.emit = function(str, node) {\n var position = node.position || {};\n var source = position.source;\n if (source) {\n if (position.filepath) {\n source = utils.unixify(position.filepath);\n }\n\n this.map.addMapping({\n source: source,\n generated: {\n line: this.position.line,\n column: Math.max(this.position.column - 1, 0)\n },\n original: {\n line: position.start.line,\n column: position.start.column - 1\n }\n });\n\n if (position.content) {\n this.addContent(source, position);\n }\n if (position.filepath) {\n this.addFile(source, position);\n }\n\n this.updatePosition(str);\n this.output += str;\n }\n return str;\n};\n\n/**\n * Adds a file to the source map output if it has not already been added\n * @param {String} `file`\n * @param {Object} `pos`\n */\n\nexports.addFile = function(file, position) {\n if (typeof position.content !== 'string') return;\n if (Object.prototype.hasOwnProperty.call(this.files, file)) return;\n this.files[file] = position.content;\n};\n\n/**\n * Adds a content source to the source map output if it has not already been added\n * @param {String} `source`\n * @param {Object} `position`\n */\n\nexports.addContent = function(source, position) {\n if (typeof position.content !== 'string') return;\n if (Object.prototype.hasOwnProperty.call(this.content, source)) return;\n this.map.setSourceContent(source, position.content);\n};\n\n/**\n * Applies any original source maps to the output and embeds the source file\n * contents in the source map.\n */\n\nexports.applySourceMaps = function() {\n Object.keys(this.files).forEach(function(file) {\n var content = this.files[file];\n this.map.setSourceContent(file, content);\n\n if (this.options.inputSourcemaps === true) {\n var originalMap = utils.sourceMapResolve.resolveSync(content, file, fs.readFileSync);\n if (originalMap) {\n var map = new utils.SourceMap.SourceMapConsumer(originalMap.map);\n var relativeTo = originalMap.sourcesRelativeTo;\n this.map.applySourceMap(map, file, utils.unixify(path.dirname(relativeTo)));\n }\n }\n }, this);\n};\n\n/**\n * Process comments, drops sourceMap comments.\n * @param {Object} node\n */\n\nexports.comment = function(node) {\n if (/^# sourceMappingURL=/.test(node.comment)) {\n return this.emit('', node.position);\n }\n return this._comment(node);\n};\n","'use strict';\n\nvar use = require('use');\nvar util = require('util');\nvar Cache = require('map-cache');\nvar define = require('define-property');\nvar debug = require('debug')('snapdragon:parser');\nvar Position = require('./position');\nvar utils = require('./utils');\n\n/**\n * Create a new `Parser` with the given `input` and `options`.\n * @param {String} `input`\n * @param {Object} `options`\n * @api public\n */\n\nfunction Parser(options) {\n debug('initializing', __filename);\n this.options = utils.extend({source: 'string'}, options);\n this.init(this.options);\n use(this);\n}\n\n/**\n * Prototype methods\n */\n\nParser.prototype = {\n constructor: Parser,\n\n init: function(options) {\n this.orig = '';\n this.input = '';\n this.parsed = '';\n\n this.column = 1;\n this.line = 1;\n\n this.regex = new Cache();\n this.errors = this.errors || [];\n this.parsers = this.parsers || {};\n this.types = this.types || [];\n this.sets = this.sets || {};\n this.fns = this.fns || [];\n this.currentType = 'root';\n\n var pos = this.position();\n this.bos = pos({type: 'bos', val: ''});\n\n this.ast = {\n type: 'root',\n errors: this.errors,\n nodes: [this.bos]\n };\n\n define(this.bos, 'parent', this.ast);\n this.nodes = [this.ast];\n\n this.count = 0;\n this.setCount = 0;\n this.stack = [];\n },\n\n /**\n * Throw a formatted error with the cursor column and `msg`.\n * @param {String} `msg` Message to use in the Error.\n */\n\n error: function(msg, node) {\n var pos = node.position || {start: {column: 0, line: 0}};\n var line = pos.start.line;\n var column = pos.start.column;\n var source = this.options.source;\n\n var message = source + ' : ' + msg;\n var err = new Error(message);\n err.source = source;\n err.reason = msg;\n err.pos = pos;\n\n if (this.options.silent) {\n this.errors.push(err);\n } else {\n throw err;\n }\n },\n\n /**\n * Define a non-enumberable property on the `Parser` instance.\n *\n * ```js\n * parser.define('foo', 'bar');\n * ```\n * @name .define\n * @param {String} `key` propery name\n * @param {any} `val` property value\n * @return {Object} Returns the Parser instance for chaining.\n * @api public\n */\n\n define: function(key, val) {\n define(this, key, val);\n return this;\n },\n\n /**\n * Mark position and patch `node.position`.\n */\n\n position: function() {\n var start = { line: this.line, column: this.column };\n var self = this;\n\n return function(node) {\n define(node, 'position', new Position(start, self));\n return node;\n };\n },\n\n /**\n * Set parser `name` with the given `fn`\n * @param {String} `name`\n * @param {Function} `fn`\n * @api public\n */\n\n set: function(type, fn) {\n if (this.types.indexOf(type) === -1) {\n this.types.push(type);\n }\n this.parsers[type] = fn.bind(this);\n return this;\n },\n\n /**\n * Get parser `name`\n * @param {String} `name`\n * @api public\n */\n\n get: function(name) {\n return this.parsers[name];\n },\n\n /**\n * Push a `token` onto the `type` stack.\n *\n * @param {String} `type`\n * @return {Object} `token`\n * @api public\n */\n\n push: function(type, token) {\n this.sets[type] = this.sets[type] || [];\n this.count++;\n this.stack.push(token);\n return this.sets[type].push(token);\n },\n\n /**\n * Pop a token off of the `type` stack\n * @param {String} `type`\n * @returns {Object} Returns a token\n * @api public\n */\n\n pop: function(type) {\n this.sets[type] = this.sets[type] || [];\n this.count--;\n this.stack.pop();\n return this.sets[type].pop();\n },\n\n /**\n * Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`.\n *\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\n isInside: function(type) {\n this.sets[type] = this.sets[type] || [];\n return this.sets[type].length > 0;\n },\n\n /**\n * Return true if `node` is the given `type`.\n *\n * ```js\n * parser.isType(node, 'brace');\n * ```\n * @param {Object} `node`\n * @param {String} `type`\n * @return {Boolean}\n * @api public\n */\n\n isType: function(node, type) {\n return node && node.type === type;\n },\n\n /**\n * Get the previous AST node\n * @return {Object}\n */\n\n prev: function(n) {\n return this.stack.length > 0\n ? utils.last(this.stack, n)\n : utils.last(this.nodes, n);\n },\n\n /**\n * Update line and column based on `str`.\n */\n\n consume: function(len) {\n this.input = this.input.substr(len);\n },\n\n /**\n * Update column based on `str`.\n */\n\n updatePosition: function(str, len) {\n var lines = str.match(/\\n/g);\n if (lines) this.line += lines.length;\n var i = str.lastIndexOf('\\n');\n this.column = ~i ? len - i : this.column + len;\n this.parsed += str;\n this.consume(len);\n },\n\n /**\n * Match `regex`, return captures, and update the cursor position by `match[0]` length.\n * @param {RegExp} `regex`\n * @return {Object}\n */\n\n match: function(regex) {\n var m = regex.exec(this.input);\n if (m) {\n this.updatePosition(m[0], m[0].length);\n return m;\n }\n },\n\n /**\n * Capture `type` with the given regex.\n * @param {String} `type`\n * @param {RegExp} `regex`\n * @return {Function}\n */\n\n capture: function(type, regex) {\n if (typeof regex === 'function') {\n return this.set.apply(this, arguments);\n }\n\n this.regex.set(type, regex);\n this.set(type, function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(regex);\n if (!m || !m[0]) return;\n\n var prev = this.prev();\n var node = pos({\n type: type,\n val: m[0],\n parsed: parsed,\n rest: this.input\n });\n\n if (m[1]) {\n node.inner = m[1];\n }\n\n define(node, 'inside', this.stack.length > 0);\n define(node, 'parent', prev);\n prev.nodes.push(node);\n }.bind(this));\n return this;\n },\n\n /**\n * Create a parser with open and close for parens,\n * brackets or braces\n */\n\n capturePair: function(type, openRegex, closeRegex, fn) {\n this.sets[type] = this.sets[type] || [];\n\n /**\n * Open\n */\n\n this.set(type + '.open', function() {\n var parsed = this.parsed;\n var pos = this.position();\n var m = this.match(openRegex);\n if (!m || !m[0]) return;\n\n var val = m[0];\n this.setCount++;\n this.specialChars = true;\n var open = pos({\n type: type + '.open',\n val: val,\n rest: this.input\n });\n\n if (typeof m[1] !== 'undefined') {\n open.inner = m[1];\n }\n\n var prev = this.prev();\n var node = pos({\n type: type,\n nodes: [open]\n });\n\n define(node, 'rest', this.input);\n define(node, 'parsed', parsed);\n define(node, 'prefix', m[1]);\n define(node, 'parent', prev);\n define(open, 'parent', node);\n\n if (typeof fn === 'function') {\n fn.call(this, open, node);\n }\n\n this.push(type, node);\n prev.nodes.push(node);\n });\n\n /**\n * Close\n */\n\n this.set(type + '.close', function() {\n var pos = this.position();\n var m = this.match(closeRegex);\n if (!m || !m[0]) return;\n\n var parent = this.pop(type);\n var node = pos({\n type: type + '.close',\n rest: this.input,\n suffix: m[1],\n val: m[0]\n });\n\n if (!this.isType(parent, type)) {\n if (this.options.strict) {\n throw new Error('missing opening \"' + type + '\"');\n }\n\n this.setCount--;\n node.escaped = true;\n return node;\n }\n\n if (node.suffix === '\\\\') {\n parent.escaped = true;\n node.escaped = true;\n }\n\n parent.nodes.push(node);\n define(node, 'parent', parent);\n });\n\n return this;\n },\n\n /**\n * Capture end-of-string\n */\n\n eos: function() {\n var pos = this.position();\n if (this.input) return;\n var prev = this.prev();\n\n while (prev.type !== 'root' && !prev.visited) {\n if (this.options.strict === true) {\n throw new SyntaxError('invalid syntax:' + util.inspect(prev, null, 2));\n }\n\n if (!hasDelims(prev)) {\n prev.parent.escaped = true;\n prev.escaped = true;\n }\n\n visit(prev, function(node) {\n if (!hasDelims(node.parent)) {\n node.parent.escaped = true;\n node.escaped = true;\n }\n });\n\n prev = prev.parent;\n }\n\n var tok = pos({\n type: 'eos',\n val: this.append || ''\n });\n\n define(tok, 'parent', this.ast);\n return tok;\n },\n\n /**\n * Run parsers to advance the cursor position\n */\n\n next: function() {\n var parsed = this.parsed;\n var len = this.types.length;\n var idx = -1;\n var tok;\n\n while (++idx < len) {\n if ((tok = this.parsers[this.types[idx]].call(this))) {\n define(tok, 'rest', this.input);\n define(tok, 'parsed', parsed);\n this.last = tok;\n return tok;\n }\n }\n },\n\n /**\n * Parse the given string.\n * @return {Array}\n */\n\n parse: function(input) {\n if (typeof input !== 'string') {\n throw new TypeError('expected a string');\n }\n\n this.init(this.options);\n this.orig = input;\n this.input = input;\n var self = this;\n\n function parse() {\n // check input before calling `.next()`\n input = self.input;\n\n // get the next AST ndoe\n var node = self.next();\n if (node) {\n var prev = self.prev();\n if (prev) {\n define(node, 'parent', prev);\n if (prev.nodes) {\n prev.nodes.push(node);\n }\n }\n\n if (self.sets.hasOwnProperty(prev.type)) {\n self.currentType = prev.type;\n }\n }\n\n // if we got here but input is not changed, throw an error\n if (self.input && input === self.input) {\n throw new Error('no parsers registered for: \"' + self.input.slice(0, 5) + '\"');\n }\n }\n\n while (this.input) parse();\n if (this.stack.length && this.options.strict) {\n var node = this.stack.pop();\n throw this.error('missing opening ' + node.type + ': \"' + this.orig + '\"');\n }\n\n var eos = this.eos();\n var tok = this.prev();\n if (tok.type !== 'eos') {\n this.ast.nodes.push(eos);\n }\n\n return this.ast;\n }\n};\n\n/**\n * Visit `node` with the given `fn`\n */\n\nfunction visit(node, fn) {\n if (!node.visited) {\n define(node, 'visited', true);\n return node.nodes ? mapVisit(node.nodes, fn) : fn(node);\n }\n return node;\n}\n\n/**\n * Map visit over array of `nodes`.\n */\n\nfunction mapVisit(nodes, fn) {\n var len = nodes.length;\n var idx = -1;\n while (++idx < len) {\n visit(nodes[idx], fn);\n }\n}\n\nfunction hasOpen(node) {\n return node.nodes && node.nodes[0].type === (node.type + '.open');\n}\n\nfunction hasClose(node) {\n return node.nodes && utils.last(node.nodes).type === (node.type + '.close');\n}\n\nfunction hasDelims(node) {\n return hasOpen(node) && hasClose(node);\n}\n\n/**\n * Expose `Parser`\n */\n\nmodule.exports = Parser;\n","/*!\n * map-cache \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\n/**\n * Expose `MapCache`\n */\n\nmodule.exports = MapCache;\n\n/**\n * Creates a cache object to store key/value pairs.\n *\n * ```js\n * var cache = new MapCache();\n * ```\n *\n * @api public\n */\n\nfunction MapCache(data) {\n this.__data__ = data || {};\n}\n\n/**\n * Adds `value` to `key` on the cache.\n *\n * ```js\n * cache.set('foo', 'bar');\n * ```\n *\n * @param {String} `key` The key of the value to cache.\n * @param {*} `value` The value to cache.\n * @returns {Object} Returns the `Cache` object for chaining.\n * @api public\n */\n\nMapCache.prototype.set = function mapSet(key, value) {\n if (key !== '__proto__') {\n this.__data__[key] = value;\n }\n return this;\n};\n\n/**\n * Gets the cached value for `key`.\n *\n * ```js\n * cache.get('foo');\n * //=> 'bar'\n * ```\n *\n * @param {String} `key` The key of the value to get.\n * @returns {*} Returns the cached value.\n * @api public\n */\n\nMapCache.prototype.get = function mapGet(key) {\n return key === '__proto__' ? undefined : this.__data__[key];\n};\n\n/**\n * Checks if a cached value for `key` exists.\n *\n * ```js\n * cache.has('foo');\n * //=> true\n * ```\n *\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 * @api public\n */\n\nMapCache.prototype.has = function mapHas(key) {\n return key !== '__proto__' && hasOwn.call(this.__data__, key);\n};\n\n/**\n * Removes `key` and its value from the cache.\n *\n * ```js\n * cache.del('foo');\n * ```\n * @title .del\n * @param {String} `key` The key of the value to remove.\n * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`.\n * @api public\n */\n\nMapCache.prototype.del = function mapDelete(key) {\n return this.has(key) && delete this.__data__[key];\n};\n","'use strict';\n\nvar define = require('define-property');\n\n/**\n * Store position for a node\n */\n\nmodule.exports = function Position(start, parser) {\n this.start = start;\n this.end = { line: parser.line, column: parser.column };\n define(this, 'content', parser.orig);\n define(this, 'source', parser.options.source);\n};\n","'use strict';\n\nvar extend = require('extend-shallow');\nvar Snapdragon = require('snapdragon');\nvar compilers = require('./compilers');\nvar parsers = require('./parsers');\nvar utils = require('./utils');\n\n/**\n * Customize Snapdragon parser and renderer\n */\n\nfunction Braces(options) {\n this.options = extend({}, options);\n}\n\n/**\n * Initialize braces\n */\n\nBraces.prototype.init = function(options) {\n if (this.isInitialized) return;\n this.isInitialized = true;\n var opts = utils.createOptions({}, this.options, options);\n this.snapdragon = this.options.snapdragon || new Snapdragon(opts);\n this.compiler = this.snapdragon.compiler;\n this.parser = this.snapdragon.parser;\n\n compilers(this.snapdragon, opts);\n parsers(this.snapdragon, opts);\n\n /**\n * Call Snapdragon `.parse` method. When AST is returned, we check to\n * see if any unclosed braces are left on the stack and, if so, we iterate\n * over the stack and correct the AST so that compilers are called in the correct\n * order and unbalance braces are properly escaped.\n */\n\n utils.define(this.snapdragon, 'parse', function(pattern, options) {\n var parsed = Snapdragon.prototype.parse.apply(this, arguments);\n this.parser.ast.input = pattern;\n\n var stack = this.parser.stack;\n while (stack.length) {\n addParent({type: 'brace.close', val: ''}, stack.pop());\n }\n\n function addParent(node, parent) {\n utils.define(node, 'parent', parent);\n parent.nodes.push(node);\n }\n\n // add non-enumerable parser reference\n utils.define(parsed, 'parser', this.parser);\n return parsed;\n });\n};\n\n/**\n * Decorate `.parse` method\n */\n\nBraces.prototype.parse = function(ast, options) {\n if (ast && typeof ast === 'object' && ast.nodes) return ast;\n this.init(options);\n return this.snapdragon.parse(ast, options);\n};\n\n/**\n * Decorate `.compile` method\n */\n\nBraces.prototype.compile = function(ast, options) {\n if (typeof ast === 'string') {\n ast = this.parse(ast, options);\n } else {\n this.init(options);\n }\n return this.snapdragon.compile(ast, options);\n};\n\n/**\n * Expand\n */\n\nBraces.prototype.expand = function(pattern) {\n var ast = this.parse(pattern, {expand: true});\n return this.compile(ast, {expand: true});\n};\n\n/**\n * Optimize\n */\n\nBraces.prototype.optimize = function(pattern) {\n var ast = this.parse(pattern, {optimize: true});\n return this.compile(ast, {optimize: true});\n};\n\n/**\n * Expose `Braces`\n */\n\nmodule.exports = Braces;\n","'use strict';\n\n/**\n * Module dependencies\n */\n\nvar toRegex = require('to-regex');\nvar unique = require('array-unique');\nvar extend = require('extend-shallow');\n\n/**\n * Local dependencies\n */\n\nvar compilers = require('./lib/compilers');\nvar parsers = require('./lib/parsers');\nvar Braces = require('./lib/braces');\nvar utils = require('./lib/utils');\nvar MAX_LENGTH = 1024 * 64;\nvar cache = {};\n\n/**\n * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)).\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces('{a,b,c}'));\n * //=> ['(a|b|c)']\n *\n * console.log(braces('{a,b,c}', {expand: true}));\n * //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nfunction braces(pattern, options) {\n var key = utils.createKey(String(pattern), options);\n var arr = [];\n\n var disabled = options && options.cache === false;\n if (!disabled && cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n if (Array.isArray(pattern)) {\n for (var i = 0; i < pattern.length; i++) {\n arr.push.apply(arr, braces.create(pattern[i], options));\n }\n } else {\n arr = braces.create(pattern, options);\n }\n\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n if (!disabled) {\n cache[key] = arr;\n }\n return arr;\n}\n\n/**\n * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = function(pattern, options) {\n return braces.create(pattern, extend({}, options, {expand: true}));\n};\n\n/**\n * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.optimize = function(pattern, options) {\n return braces.create(pattern, options);\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function.\n *\n * ```js\n * var braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function create() {\n if (pattern === '' || pattern.length < 3) {\n return [pattern];\n }\n\n if (utils.isEmptySets(pattern)) {\n return [];\n }\n\n if (utils.isQuotedString(pattern)) {\n return [pattern.slice(1, -1)];\n }\n\n var proto = new Braces(options);\n var result = !options || options.expand !== true\n ? proto.optimize(pattern, options)\n : proto.expand(pattern, options);\n\n // get the generated pattern(s)\n var arr = result.output;\n\n // filter out empty strings if specified\n if (options && options.noempty === true) {\n arr = arr.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options && options.nodupes === true) {\n arr = unique(arr);\n }\n\n Object.defineProperty(arr, 'result', {\n enumerable: false,\n value: result\n });\n\n return arr;\n }\n\n return memoize('create', pattern, options, create);\n};\n\n/**\n * Create a regular expression from the given string `pattern`.\n *\n * ```js\n * var braces = require('braces');\n *\n * console.log(braces.makeRe('id-{200..300}'));\n * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/\n * ```\n * @param {String} `pattern` The pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\nbraces.makeRe = function(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('expected a string');\n }\n\n var maxLength = (options && options.maxLength) || MAX_LENGTH;\n if (pattern.length >= maxLength) {\n throw new Error('expected pattern to be less than ' + maxLength + ' characters');\n }\n\n function makeRe() {\n var arr = braces(pattern, options);\n var opts = extend({strictErrors: false}, options);\n return toRegex(arr, opts);\n }\n\n return memoize('makeRe', pattern, options, makeRe);\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * // { type: 'root',\n * // errors: [],\n * // input: 'a/{b,c}/d',\n * // nodes:\n * // [ { type: 'bos', val: '' },\n * // { type: 'text', val: 'a/' },\n * // { type: 'brace',\n * // nodes:\n * // [ { type: 'brace.open', val: '{' },\n * // { type: 'text', val: 'b,c' },\n * // { type: 'brace.close', val: '}' } ] },\n * // { type: 'text', val: '/d' },\n * // { type: 'eos', val: '' } ] }\n * ```\n * @param {String} `pattern` Brace pattern to parse\n * @param {Object} `options`\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = function(pattern, options) {\n var proto = new Braces(options);\n return proto.parse(pattern, options);\n};\n\n/**\n * Compile the given `ast` or string with the given `options`.\n *\n * ```js\n * var braces = require('braces');\n * var ast = braces.parse('a/{b,c}/d');\n * console.log(braces.compile(ast));\n * // { options: { source: 'string' },\n * // state: {},\n * // compilers:\n * // { eos: [Function],\n * // noop: [Function],\n * // bos: [Function],\n * // brace: [Function],\n * // 'brace.open': [Function],\n * // text: [Function],\n * // 'brace.close': [Function] },\n * // output: [ 'a/(b|c)/d' ],\n * // ast:\n * // { ... },\n * // parsingErrors: [] }\n * ```\n * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first.\n * @param {Object} `options`\n * @return {Object} Returns an object that has an `output` property with the compiled string.\n * @api public\n */\n\nbraces.compile = function(ast, options) {\n var proto = new Braces(options);\n return proto.compile(ast, options);\n};\n\n/**\n * Clear the regex cache.\n *\n * ```js\n * braces.clearCache();\n * ```\n * @api public\n */\n\nbraces.clearCache = function() {\n cache = braces.cache = {};\n};\n\n/**\n * Memoize a generated regex or function. A unique key is generated\n * from the method name, pattern, and user-defined options. Set\n * options.memoize to false to disable.\n */\n\nfunction memoize(type, pattern, options, fn) {\n var key = utils.createKey(type + ':' + pattern, options);\n var disabled = options && options.cache === false;\n if (disabled) {\n braces.clearCache();\n return fn(pattern, options);\n }\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n var res = fn(pattern, options);\n cache[key] = res;\n return res;\n}\n\n/**\n * Expose `Braces` constructor and methods\n * @type {Function}\n */\n\nbraces.Braces = Braces;\nbraces.compilers = compilers;\nbraces.parsers = parsers;\nbraces.cache = cache;\n\n/**\n * Expose `braces`\n * @type {Function}\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return parsed.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${parsed.output})${append}`;\n if (parsed && parsed.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = parsed;\n }\n\n return regex;\n};\n\npicomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n const opts = options || {};\n let parsed = { negated: false, fastpaths: true };\n let prefix = '';\n let output;\n\n if (input.startsWith('./')) {\n input = input.slice(2);\n prefix = parsed.prefix = './';\n }\n\n if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n output = parse.fastpaths(input, options);\n }\n\n if (output === undefined) {\n parsed = parse(input, options);\n parsed.prefix = prefix + (parsed.prefix || '');\n } else {\n parsed.output = output;\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n }\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = (opts) => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index];\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.prev.type === 'bos' && eos()) {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance() || '';\n } else {\n value += advance() || '';\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = (opts) => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.merge = void 0;\r\nconst merge2 = require(\"merge2\");\r\nfunction merge(streams) {\r\n const mergedStream = merge2(streams);\r\n streams.forEach((stream) => {\r\n stream.once('error', (error) => mergedStream.emit('error', error));\r\n });\r\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\r\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\r\n return mergedStream;\r\n}\r\nexports.merge = merge;\r\nfunction propagateCloseEventToSources(streams) {\r\n streams.forEach((stream) => stream.emit('close'));\r\n}\r\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEmpty = exports.isString = void 0;\r\nfunction isString(input) {\r\n return typeof input === 'string';\r\n}\r\nexports.isString = isString;\r\nfunction isEmpty(input) {\r\n return input === '';\r\n}\r\nexports.isEmpty = isEmpty;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderAsync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = [];\r\n return new Promise((resolve, reject) => {\r\n const stream = this.api(root, task, options);\r\n stream.once('error', reject);\r\n stream.on('data', (entry) => entries.push(options.transform(entry)));\r\n stream.once('end', () => resolve(entries));\r\n });\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderAsync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderStream extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkStream = fsWalk.walkStream;\r\n this._stat = fsStat.stat;\r\n }\r\n dynamic(root, options) {\r\n return this._walkStream(root, options);\r\n }\r\n static(patterns, options) {\r\n const filepaths = patterns.map(this._getFullEntryPath, this);\r\n const stream = new stream_1.PassThrough({ objectMode: true });\r\n stream._write = (index, _enc, done) => {\r\n return this._getEntry(filepaths[index], patterns[index], options)\r\n .then((entry) => {\r\n if (entry !== null && options.entryFilter(entry)) {\r\n stream.push(entry);\r\n }\r\n if (index === filepaths.length - 1) {\r\n stream.end();\r\n }\r\n done();\r\n })\r\n .catch(done);\r\n };\r\n for (let i = 0; i < filepaths.length; i++) {\r\n stream.write(i);\r\n }\r\n return stream;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n return this._getStat(filepath)\r\n .then((stats) => this._makeEntry(stats, pattern))\r\n .catch((error) => {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n });\r\n }\r\n _getStat(filepath) {\r\n return new Promise((resolve, reject) => {\r\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\r\n return error === null ? resolve(stats) : reject(error);\r\n });\r\n });\r\n }\r\n}\r\nexports.default = ReaderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.statSync = exports.stat = exports.Settings = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.stat = stat;\r\nfunction statSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.statSync = statSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings, callback) {\r\n settings.fs.lstat(path, (lstatError, lstat) => {\r\n if (lstatError !== null) {\r\n return callFailureCallback(callback, lstatError);\r\n }\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n settings.fs.stat(path, (statError, stat) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return callFailureCallback(callback, statError);\r\n }\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n callSuccessCallback(callback, stat);\r\n });\r\n });\r\n}\r\nexports.read = read;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings) {\r\n const lstat = settings.fs.lstatSync(path);\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return lstat;\r\n }\r\n try {\r\n const stat = settings.fs.statSync(path);\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n return stat;\r\n }\r\n catch (error) {\r\n if (!settings.throwErrorOnBrokenSymbolicLink) {\r\n return lstat;\r\n }\r\n throw error;\r\n }\r\n}\r\nexports.read = read;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\r\n }\r\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\r\n}\r\nexports.walk = walk;\r\nfunction walkSync(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new sync_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkSync = walkSync;\r\nfunction walkStream(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new stream_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkStream = walkStream;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst async_1 = require(\"../readers/async\");\r\nclass AsyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._storage = new Set();\r\n }\r\n read(callback) {\r\n this._reader.onError((error) => {\r\n callFailureCallback(callback, error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._storage.add(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n callSuccessCallback(callback, [...this._storage]);\r\n });\r\n this._reader.read();\r\n }\r\n}\r\nexports.default = AsyncProvider;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, entries) {\r\n callback(null, entries);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"events\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst fastq = require(\"fastq\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass AsyncReader extends reader_1.default {\r\n constructor(_root, _settings) {\r\n super(_root, _settings);\r\n this._settings = _settings;\r\n this._scandir = fsScandir.scandir;\r\n this._emitter = new events_1.EventEmitter();\r\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n this._queue.drain = () => {\r\n if (!this._isFatalError) {\r\n this._emitter.emit('end');\r\n }\r\n };\r\n }\r\n read() {\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n setImmediate(() => {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n });\r\n return this._emitter;\r\n }\r\n get isDestroyed() {\r\n return this._isDestroyed;\r\n }\r\n destroy() {\r\n if (this._isDestroyed) {\r\n throw new Error('The reader is already destroyed');\r\n }\r\n this._isDestroyed = true;\r\n this._queue.killAndDrain();\r\n }\r\n onEntry(callback) {\r\n this._emitter.on('entry', callback);\r\n }\r\n onError(callback) {\r\n this._emitter.once('error', callback);\r\n }\r\n onEnd(callback) {\r\n this._emitter.once('end', callback);\r\n }\r\n _pushToQueue(directory, base) {\r\n const queueItem = { directory, base };\r\n this._queue.push(queueItem, (error) => {\r\n if (error !== null) {\r\n this._handleError(error);\r\n }\r\n });\r\n }\r\n _worker(item, done) {\r\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\r\n if (error !== null) {\r\n return done(error, undefined);\r\n }\r\n for (const entry of entries) {\r\n this._handleEntry(entry, item.base);\r\n }\r\n done(null, undefined);\r\n });\r\n }\r\n _handleError(error) {\r\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n this._isFatalError = true;\r\n this._isDestroyed = true;\r\n this._emitter.emit('error', error);\r\n }\r\n _handleEntry(entry, base) {\r\n if (this._isDestroyed || this._isFatalError) {\r\n return;\r\n }\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._emitEntry(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _emitEntry(entry) {\r\n this._emitter.emit('entry', entry);\r\n }\r\n}\r\nexports.default = AsyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.scandir = scandir;\r\nfunction scandirSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.scandirSync = scandirSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst rpl = require(\"run-parallel\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings, callback) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings, callback);\r\n }\r\n return readdir(directory, settings, callback);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings, callback) {\r\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const entries = dirents.map((dirent) => ({\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n }));\r\n if (!settings.followSymbolicLinks) {\r\n return callSuccessCallback(callback, entries);\r\n }\r\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\r\n rpl(tasks, (rplError, rplEntries) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n callSuccessCallback(callback, rplEntries);\r\n });\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction makeRplTaskEntry(entry, settings) {\r\n return (done) => {\r\n if (!entry.dirent.isSymbolicLink()) {\r\n return done(null, entry);\r\n }\r\n settings.fs.stat(entry.path, (statError, stats) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return done(statError);\r\n }\r\n return done(null, entry);\r\n }\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n return done(null, entry);\r\n });\r\n };\r\n}\r\nfunction readdir(directory, settings, callback) {\r\n settings.fs.readdir(directory, (readdirError, names) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const filepaths = names.map((name) => common.joinPathSegments(directory, name, settings.pathSegmentSeparator));\r\n const tasks = filepaths.map((filepath) => {\r\n return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);\r\n });\r\n rpl(tasks, (rplError, results) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n const entries = [];\r\n names.forEach((name, index) => {\r\n const stats = results[index];\r\n const entry = {\r\n name,\r\n path: filepaths[index],\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n entries.push(entry);\r\n });\r\n callSuccessCallback(callback, entries);\r\n });\r\n });\r\n}\r\nexports.readdir = readdir;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(globalThis)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\r\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\r\nconst MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\r\nconst MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\r\nconst SUPPORTED_MAJOR_VERSION = 10;\r\nconst SUPPORTED_MINOR_VERSION = 10;\r\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\r\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\r\n/**\r\n * IS `true` for Node.js 10.10 and greater.\r\n */\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fs = void 0;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = void 0;\r\nfunction joinPathSegments(a, b, separator) {\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings);\r\n }\r\n return readdir(directory, settings);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings) {\r\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\r\n return dirents.map((dirent) => {\r\n const entry = {\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n };\r\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\r\n try {\r\n const stats = settings.fs.statSync(entry.path);\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n }\r\n catch (error) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n throw error;\r\n }\r\n }\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction readdir(directory, settings) {\r\n const names = settings.fs.readdirSync(directory);\r\n return names.map((name) => {\r\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\r\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\r\n const entry = {\r\n name,\r\n path: entryPath,\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdir = readdir;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n this.fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this.followSymbolicLinks,\r\n fs: this.fs,\r\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","'use strict'\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n\n return queue\n\n function push (value) {\n return new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n\n function unshift (value) {\n return new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\r\nfunction isFatalError(settings, error) {\r\n if (settings.errorFilter === null) {\r\n return true;\r\n }\r\n return !settings.errorFilter(error);\r\n}\r\nexports.isFatalError = isFatalError;\r\nfunction isAppliedFilter(filter, value) {\r\n return filter === null || filter(value);\r\n}\r\nexports.isAppliedFilter = isAppliedFilter;\r\nfunction replacePathSegmentSeparator(filepath, separator) {\r\n return filepath.split(/[/\\\\]/).join(separator);\r\n}\r\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\r\nfunction joinPathSegments(a, b, separator) {\r\n if (a === '') {\r\n return b;\r\n }\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst common = require(\"./common\");\r\nclass Reader {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst async_1 = require(\"../readers/async\");\r\nclass StreamProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._stream = new stream_1.Readable({\r\n objectMode: true,\r\n read: () => { },\r\n destroy: () => {\r\n if (!this._reader.isDestroyed) {\r\n this._reader.destroy();\r\n }\r\n }\r\n });\r\n }\r\n read() {\r\n this._reader.onError((error) => {\r\n this._stream.emit('error', error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._stream.push(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n this._stream.push(null);\r\n });\r\n this._reader.read();\r\n return this._stream;\r\n }\r\n}\r\nexports.default = StreamProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nclass SyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new sync_1.default(this._root, this._settings);\r\n }\r\n read() {\r\n return this._reader.read();\r\n }\r\n}\r\nexports.default = SyncProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass SyncReader extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._scandir = fsScandir.scandirSync;\r\n this._storage = new Set();\r\n this._queue = new Set();\r\n }\r\n read() {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n this._handleQueue();\r\n return [...this._storage];\r\n }\r\n _pushToQueue(directory, base) {\r\n this._queue.add({ directory, base });\r\n }\r\n _handleQueue() {\r\n for (const item of this._queue.values()) {\r\n this._handleDirectory(item.directory, item.base);\r\n }\r\n }\r\n _handleDirectory(directory, base) {\r\n try {\r\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\r\n for (const entry of entries) {\r\n this._handleEntry(entry, base);\r\n }\r\n }\r\n catch (error) {\r\n this._handleError(error);\r\n }\r\n }\r\n _handleError(error) {\r\n if (!common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n _handleEntry(entry, base) {\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._pushToStorage(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _pushToStorage(entry) {\r\n this._storage.add(entry);\r\n }\r\n}\r\nexports.default = SyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.basePath = this._getValue(this._options.basePath, undefined);\r\n this.concurrency = this._getValue(this._options.concurrency, Infinity);\r\n this.deepFilter = this._getValue(this._options.deepFilter, null);\r\n this.entryFilter = this._getValue(this._options.entryFilter, null);\r\n this.errorFilter = this._getValue(this._options.errorFilter, null);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.fsScandirSettings = new fsScandir.Settings({\r\n followSymbolicLinks: this._options.followSymbolicLinks,\r\n fs: this._options.fs,\r\n pathSegmentSeparator: this._options.pathSegmentSeparator,\r\n stats: this._options.stats,\r\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst utils = require(\"../utils\");\r\nclass Reader {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this._fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\r\n });\r\n }\r\n _getFullEntryPath(filepath) {\r\n return path.resolve(this._settings.cwd, filepath);\r\n }\r\n _makeEntry(stats, pattern) {\r\n const entry = {\r\n name: pattern,\r\n path: pattern,\r\n dirent: utils.fs.createDirentFromStats(pattern, stats)\r\n };\r\n if (this._settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n }\r\n _isFatalError(error) {\r\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst deep_1 = require(\"./filters/deep\");\r\nconst entry_1 = require(\"./filters/entry\");\r\nconst error_1 = require(\"./filters/error\");\r\nconst entry_2 = require(\"./transformers/entry\");\r\nclass Provider {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this.errorFilter = new error_1.default(this._settings);\r\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\r\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\r\n this.entryTransformer = new entry_2.default(this._settings);\r\n }\r\n _getRootDirectory(task) {\r\n return path.resolve(this._settings.cwd, task.base);\r\n }\r\n _getReaderOptions(task) {\r\n const basePath = task.base === '.' ? '' : task.base;\r\n return {\r\n basePath,\r\n pathSegmentSeparator: '/',\r\n concurrency: this._settings.concurrency,\r\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\r\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\r\n errorFilter: this.errorFilter.getFilter(),\r\n followSymbolicLinks: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n stats: this._settings.stats,\r\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\r\n transform: this.entryTransformer.getTransformer()\r\n };\r\n }\r\n _getMicromatchOptions() {\r\n return {\r\n dot: this._settings.dot,\r\n matchBase: this._settings.baseNameMatch,\r\n nobrace: !this._settings.braceExpansion,\r\n nocase: !this._settings.caseSensitiveMatch,\r\n noext: !this._settings.extglob,\r\n noglobstar: !this._settings.globstar,\r\n posix: true,\r\n strictSlashes: false\r\n };\r\n }\r\n}\r\nexports.default = Provider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nconst partial_1 = require(\"../matchers/partial\");\r\nclass DeepFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n }\r\n getFilter(basePath, positive, negative) {\r\n const matcher = this._getMatcher(positive);\r\n const negativeRe = this._getNegativePatternsRe(negative);\r\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\r\n }\r\n _getMatcher(patterns) {\r\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\r\n }\r\n _getNegativePatternsRe(patterns) {\r\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\r\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\r\n }\r\n _filter(basePath, entry, matcher, negativeRe) {\r\n if (this._isSkippedByDeep(basePath, entry.path)) {\r\n return false;\r\n }\r\n if (this._isSkippedSymbolicLink(entry)) {\r\n return false;\r\n }\r\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\r\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\r\n return false;\r\n }\r\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\r\n }\r\n _isSkippedByDeep(basePath, entryPath) {\r\n /**\r\n * Avoid unnecessary depth calculations when it doesn't matter.\r\n */\r\n if (this._settings.deep === Infinity) {\r\n return false;\r\n }\r\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\r\n }\r\n _getEntryLevel(basePath, entryPath) {\r\n const entryPathDepth = entryPath.split('/').length;\r\n if (basePath === '') {\r\n return entryPathDepth;\r\n }\r\n const basePathDepth = basePath.split('/').length;\r\n return entryPathDepth - basePathDepth;\r\n }\r\n _isSkippedSymbolicLink(entry) {\r\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\r\n }\r\n _isSkippedByPositivePatterns(entryPath, matcher) {\r\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\r\n }\r\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\r\n return !utils.pattern.matchAny(entryPath, patternsRe);\r\n }\r\n}\r\nexports.default = DeepFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst matcher_1 = require(\"./matcher\");\r\nclass PartialMatcher extends matcher_1.default {\r\n match(filepath) {\r\n const parts = filepath.split('/');\r\n const levels = parts.length;\r\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\r\n for (const pattern of patterns) {\r\n const section = pattern.sections[0];\r\n /**\r\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\r\n * but only if the level has reached the end of the first group.\r\n *\r\n * fixtures/{a,b}/**\r\n * ^ true/false ^ always true\r\n */\r\n if (!pattern.complete && levels > section.length) {\r\n return true;\r\n }\r\n const match = parts.every((part, index) => {\r\n const segment = pattern.segments[index];\r\n if (segment.dynamic && segment.patternRe.test(part)) {\r\n return true;\r\n }\r\n if (!segment.dynamic && segment.pattern === part) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexports.default = PartialMatcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass Matcher {\r\n constructor(_patterns, _settings, _micromatchOptions) {\r\n this._patterns = _patterns;\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this._storage = [];\r\n this._fillStorage();\r\n }\r\n _fillStorage() {\r\n /**\r\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\r\n * So, before expand patterns with brace expansion into separated patterns.\r\n */\r\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\r\n for (const pattern of patterns) {\r\n const segments = this._getPatternSegments(pattern);\r\n const sections = this._splitSegmentsIntoSections(segments);\r\n this._storage.push({\r\n complete: sections.length <= 1,\r\n pattern,\r\n segments,\r\n sections\r\n });\r\n }\r\n }\r\n _getPatternSegments(pattern) {\r\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\r\n return parts.map((part) => {\r\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\r\n if (!dynamic) {\r\n return {\r\n dynamic: false,\r\n pattern: part\r\n };\r\n }\r\n return {\r\n dynamic: true,\r\n pattern: part,\r\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\r\n };\r\n });\r\n }\r\n _splitSegmentsIntoSections(segments) {\r\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\r\n }\r\n}\r\nexports.default = Matcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this.index = new Map();\r\n }\r\n getFilter(positive, negative) {\r\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\r\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\r\n return (entry) => this._filter(entry, positiveRe, negativeRe);\r\n }\r\n _filter(entry, positiveRe, negativeRe) {\r\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\r\n return false;\r\n }\r\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\r\n return false;\r\n }\r\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\r\n return false;\r\n }\r\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\r\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\r\n if (this._settings.unique && isMatched) {\r\n this._createIndexRecord(entry);\r\n }\r\n return isMatched;\r\n }\r\n _isDuplicateEntry(entry) {\r\n return this.index.has(entry.path);\r\n }\r\n _createIndexRecord(entry) {\r\n this.index.set(entry.path, undefined);\r\n }\r\n _onlyFileFilter(entry) {\r\n return this._settings.onlyFiles && !entry.dirent.isFile();\r\n }\r\n _onlyDirectoryFilter(entry) {\r\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\r\n }\r\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\r\n if (!this._settings.absolute) {\r\n return false;\r\n }\r\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\r\n return utils.pattern.matchAny(fullpath, patternsRe);\r\n }\r\n _isMatchToPatterns(entryPath, patternsRe) {\r\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\r\n return utils.pattern.matchAny(filepath, patternsRe);\r\n }\r\n}\r\nexports.default = EntryFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass ErrorFilter {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getFilter() {\r\n return (error) => this._isNonFatalError(error);\r\n }\r\n _isNonFatalError(error) {\r\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = ErrorFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryTransformer {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getTransformer() {\r\n return (entry) => this._transform(entry);\r\n }\r\n _transform(entry) {\r\n let filepath = entry.path;\r\n if (this._settings.absolute) {\r\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\r\n filepath = utils.path.unixify(filepath);\r\n }\r\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\r\n filepath += '/';\r\n }\r\n if (!this._settings.objectMode) {\r\n return filepath;\r\n }\r\n return Object.assign(Object.assign({}, entry), { path: filepath });\r\n }\r\n}\r\nexports.default = EntryTransformer;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst stream_2 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderStream extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_2.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const source = this.api(root, task, options);\r\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\r\n source\r\n .once('error', (error) => destination.emit('error', error))\r\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\r\n .once('end', () => destination.emit('end'));\r\n destination\r\n .once('close', () => source.destroy());\r\n return destination;\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderSync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new sync_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = this.api(root, task, options);\r\n return entries.map(options.transform);\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderSync extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkSync = fsWalk.walkSync;\r\n this._statSync = fsStat.statSync;\r\n }\r\n dynamic(root, options) {\r\n return this._walkSync(root, options);\r\n }\r\n static(patterns, options) {\r\n const entries = [];\r\n for (const pattern of patterns) {\r\n const filepath = this._getFullEntryPath(pattern);\r\n const entry = this._getEntry(filepath, pattern, options);\r\n if (entry === null || !options.entryFilter(entry)) {\r\n continue;\r\n }\r\n entries.push(entry);\r\n }\r\n return entries;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n try {\r\n const stats = this._getStat(filepath);\r\n return this._makeEntry(stats, pattern);\r\n }\r\n catch (error) {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n _getStat(filepath) {\r\n return this._statSync(filepath, this._fsStatSettings);\r\n }\r\n}\r\nexports.default = ReaderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nconst os = require(\"os\");\r\n/**\r\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\r\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\r\n */\r\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n lstatSync: fs.lstatSync,\r\n stat: fs.stat,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.absolute = this._getValue(this._options.absolute, false);\r\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\r\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\r\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\r\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\r\n this.cwd = this._getValue(this._options.cwd, process.cwd());\r\n this.deep = this._getValue(this._options.deep, Infinity);\r\n this.dot = this._getValue(this._options.dot, false);\r\n this.extglob = this._getValue(this._options.extglob, true);\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\r\n this.fs = this._getFileSystemMethods(this._options.fs);\r\n this.globstar = this._getValue(this._options.globstar, true);\r\n this.ignore = this._getValue(this._options.ignore, []);\r\n this.markDirectories = this._getValue(this._options.markDirectories, false);\r\n this.objectMode = this._getValue(this._options.objectMode, false);\r\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\r\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\r\n this.unique = this._getValue(this._options.unique, true);\r\n if (this.onlyDirectories) {\r\n this.onlyFiles = false;\r\n }\r\n if (this.stats) {\r\n this.objectMode = true;\r\n }\r\n }\r\n _getValue(option, value) {\r\n return option === undefined ? value : option;\r\n }\r\n _getFileSystemMethods(methods = {}) {\r\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nconst taskManager = require(\"./managers/tasks\");\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nconst utils = require(\"./utils\");\r\nasync function FastGlob(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, async_1.default, options);\r\n const result = await Promise.all(works);\r\n return utils.array.flatten(result);\r\n}\r\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\r\n// eslint-disable-next-line no-redeclare\r\n(function (FastGlob) {\r\n function sync(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, sync_1.default, options);\r\n return utils.array.flatten(works);\r\n }\r\n FastGlob.sync = sync;\r\n function stream(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, stream_1.default, options);\r\n /**\r\n * The stream returned by the provider cannot work with an asynchronous iterator.\r\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\r\n * This affects performance (+25%). I don't see best solution right now.\r\n */\r\n return utils.stream.merge(works);\r\n }\r\n FastGlob.stream = stream;\r\n function generateTasks(source, options) {\r\n assertPatternsInput(source);\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n return taskManager.generate(patterns, settings);\r\n }\r\n FastGlob.generateTasks = generateTasks;\r\n function isDynamicPattern(source, options) {\r\n assertPatternsInput(source);\r\n const settings = new settings_1.default(options);\r\n return utils.pattern.isDynamicPattern(source, settings);\r\n }\r\n FastGlob.isDynamicPattern = isDynamicPattern;\r\n function escapePath(source) {\r\n assertPatternsInput(source);\r\n return utils.path.escape(source);\r\n }\r\n FastGlob.escapePath = escapePath;\r\n})(FastGlob || (FastGlob = {}));\r\nfunction getWorks(source, _Provider, options) {\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n const tasks = taskManager.generate(patterns, settings);\r\n const provider = new _Provider(settings);\r\n return tasks.map(provider.read, provider);\r\n}\r\nfunction assertPatternsInput(input) {\r\n const source = [].concat(input);\r\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\r\n if (!isValidSource) {\r\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\r\n }\r\n}\r\nmodule.exports = FastGlob;\r\n","\"use babel\"\n\nconst javascriptPrefixes = [\n \"import\\\\s+.*?from\\\\s+['\\\"]\", // import foo from './foo'\n \"import\\\\s+['\\\"]\", // import './foo'\n \"require\\\\(['\\\"]\", // require('./foo')\n \"define\\\\(\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n]\n\nconst javascriptExtensions = [\"js\", \"jsx\", \"ts\", \"tsx\", \"coffee\", \"json\"]\n\n// no index replacement\nconst javascriptReplaceOnInsert = [\n [\"\\\\.jsx?$\", \"\"],\n [\"\\\\.ts$\", \"\"],\n [\"\\\\.coffee$\", \"\"],\n]\n\n// with index replacement\nconst javascriptWithIndexReplaceOnInsert = [\n [\"([\\\\/]?index)?\\\\.jsx?$\", \"\"],\n [\"([\\\\/]?index)?\\\\.ts$\", \"\"],\n [\"([\\\\/]?index)?\\\\.coffee$\", \"\"],\n]\n\nexport const DefaultScopes = [\n {\n scopes: [\n \"source.js\",\n \"source.js.jsx\",\n \"source.coffee\",\n \"source.coffee.jsx\",\n \"source.ts\",\n \"source.tsx\",\n \"javascript\",\n \"source.flow\",\n ],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptWithIndexReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions.concat(\"vue\"),\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"css\", \"sass\", \"scss\", \"less\", \"styl\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.coffee\", \"source.coffee.jsx\"],\n prefixes: [\n \"require\\\\s+['\\\"]\", // require './foo'\n \"define\\\\s+\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n ],\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"source.php\"],\n prefixes: [\n \"require_once\\\\(['\\\"]\", // require_once('foo.php')\n \"include\\\\(['\\\"]\", // include('./foo.php')\n ],\n extensions: [\"php\"],\n relative: true,\n },\n {\n scopes: [\"source.sass\", \"source.css.scss\", \"source.css.less\", \"source.stylus\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"sass\", \"scss\", \"css\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.css\"],\n prefixes: [\n \"@import\\\\s+['\\\"]?\", // @import 'foo.css'\n \"@import\\\\s+url\\\\(['\\\"]?\", // @import url('foo.css')\n ],\n extensions: [\"css\"],\n relative: true,\n },\n {\n scopes: [\"source.css\", \"source.sass\", \"source.css.less\", \"source.css.scss\", \"source.stylus\"],\n prefixes: [\"url\\\\(['\\\"]?\"],\n extensions: [\"png\", \"gif\", \"jpeg\", \"jpg\", \"woff\", \"woff2\", \"ttf\", \"svg\", \"otf\"],\n relative: true,\n },\n {\n scopes: [\"source.c\", \"source.cpp\"],\n prefixes: [\"^\\\\s*#include\\\\s+['\\\"]\"],\n extensions: [\"h\", \"hpp\"],\n relative: true,\n includeCurrentDirectory: false,\n },\n {\n scopes: [\"source.lua\"],\n prefixes: [\"require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"lua\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.lua$\", \"\"],\n ],\n },\n {\n scopes: [\"source.ruby\"],\n prefixes: [\"^\\\\s*require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"rb\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [[\"\\\\.rb$\", \"\"]],\n },\n {\n scopes: [\"source.python\"],\n prefixes: [\"^\\\\s*from\\\\s+\", \"^\\\\s*import\\\\s+\"],\n extensions: [\"py\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.py$\", \"\"],\n ],\n },\n]\n"],"names":["$parcel$export","e","n","v","Object","defineProperty","get","enumerable","$parcel$global","globalThis","self","window","global","subscriptions","add","atom","commands","autocomplete-paths:rebuild-cache","_provider","rebuildCache","forEach","cacheOption","config","observe","_pathsCache","updateConfig","scopeOptions","key","OptionScopes","push","scopeOption","reloadScopes","_statusBarInterval","clearInterval","dispose","_statusBarTile","destroy","statusBar","_statusBar","_displayStatusBarItemOnConsumption","_displayStatusBarTile","enableHtmlSupport","scopes","prefixes","extensions","relative","normalizeSlashes","type","description","default","maxFileCount","suggestionPriority","ignoredNames","ignoreSubmodules","ignoredPatterns","items","ignoreBuiltinScopes","properties","replaceOnInsert","keys","i","len","length","a","$a721ad2560afc34d0811795f07a7a883$var$_events","_events","$a721ad2560afc34d0811795f07a7a883$var$_path","$a721ad2560afc34d0811795f07a7a883$var$_interopRequireDefault","_path","value","root","Function","ArrayProto","Array","prototype","ObjProto","SymbolProto","Symbol","slice","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","arguments","rest","index","call","this","args","apply","isObject","obj","isNull","isUndefined","isBoolean","$8db6d7b92485185ae1a478b09caad61c$export$toString","isElement","nodeType","tagTester","name","tag","$b32e23cb4eddd5ea7b7060b126b5f177$export$default","isFunction","nodelist","$8db6d7b92485185ae1a478b09caad61c$export$root","document","childNodes","Int8Array","hasStringTagBug","$8db6d7b92485185ae1a478b09caad61c$export$supportsDataView","$56af084d38aed55fd41adc3334ee4d77$export$default","isIE11","Map","isDataView","$afc311580968e2d1d77f1f5fb0fb6643$export$hasStringTagBug","$0c2d0370d0aee9186b81b6ae89956de1$export$default","getInt8","$c2bf4896ba4566b85b79ab239153d438$export$default","buffer","$8db6d7b92485185ae1a478b09caad61c$export$nativeIsArray","has","$8db6d7b92485185ae1a478b09caad61c$export$hasOwnProperty","isArguments","$576055ab7b04587098c39e009210b4be$export$default","$bfee947749c26bacfaf196981d23ea95$export$default","$8db6d7b92485185ae1a478b09caad61c$export$_isFinite","parseFloat","$2e87c856a666ba949d91694676b510d6$export$default","$8db6d7b92485185ae1a478b09caad61c$export$_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","$8db6d7b92485185ae1a478b09caad61c$export$MAX_ARRAY_INDEX","shallowProperty","$adcf21984040f6f4f8cf4a3575e15e48$export$default","$94e70e23dfbf9552b5f35d7f54201599$export$default","$e1067ef7afd40f9e9692a8709dadd29b$export$default","typedArrayPattern","$8db6d7b92485185ae1a478b09caad61c$export$supportsArrayBuffer","$8db6d7b92485185ae1a478b09caad61c$export$nativeIsView","$32eb29c5e1ce5b0adcb36c8a700afa05$export$default","$c75e69c0379e02c188dcd22c39092da2$export$default","test","$84cbcd6e29878171ef054c72d606241a$export$default","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","$8db6d7b92485185ae1a478b09caad61c$export$nonEnumerableProps","constructor","proto","$8db6d7b92485185ae1a478b09caad61c$export$ObjProto","prop","$b490913bb9edb0db694891dc1025da26$export$default","$8db6d7b92485185ae1a478b09caad61c$export$nativeKeys","$8db6d7b92485185ae1a478b09caad61c$export$hasEnumBug","$2a7ebd51289157d7782a0a72b561a381$export$default","isEmpty","$701f6920eb2acccee10133f01fc8f670$export$default","$e558127c84cb436e80518cc68dead985$export$default","$5be088fa13a5ca10bfd59d08de99e0c9$export$default","$91774314258a18caae4f835647ecf8f0$export$default","$f6d5502f337276c2e96f59a1e8c24adc$export$default","isMatch","object","attrs","_keys","_","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","VERSION","valueOf","toJSON","String","eq","b","aStack","bStack","deepEq","$1b17a0cb2eeac0099655a3e2636da29c$export$default","className","$8db6d7b92485185ae1a478b09caad61c$export$SymbolProto","$aed9b680e2990d97fdfbdc93c226eee4$export$default","areArrays","$9a3b09d2eb1ee7e38efcd5d1429c2552$export$default","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","methods","$a8ad706ac7686660b99d23b2b49456ea$export$default","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","$afc311580968e2d1d77f1f5fb0fb6643$export$isIE11","$6f348052a7e527e5432e3dcd998699ca$export$ie11fingerprint","$6f348052a7e527e5432e3dcd998699ca$export$mapMethods","$6f348052a7e527e5432e3dcd998699ca$export$weakMapMethods","$6f348052a7e527e5432e3dcd998699ca$export$setMethods","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","source","$cfdc7e30507b65055ccf3ed931d21371$export$default","baseCreate","$8db6d7b92485185ae1a478b09caad61c$export$nativeCreate","Ctor","props","$f575de91b9c51cb6ad6b589de27f3811$export$default","$b1f453113b3508425835a37c192e02f5$export$default","clone","$c42a0cbdda8e8e7320b8993505747676$export$default","tap","interceptor","toPath","path","deepGet","defaultValue","$96219adce99d3ed9063590bcd5bfdfc8$export$default","$51ea9f1d8a5da8f359063a49ba97c46d$export$default","$f91535973b2fbcd6e5ae4b2ff31d54ab$export$default","identity","matcher","$613fbc32153c0c2418f6039c10484014$export$default","property","optimizeCb","context","argCount","accumulator","baseIteratee","$b95ea402daa5df5a5bf4430798bdafaa$export$default","$35e59c88981af80596c22515921a4153$export$default","$d5f239baff4917367a4ff47ffc874787$export$default","$9e37dfcc05041a8a0e944f712dd45ba1$export$default","iteratee","$e348b079e09df5773d59bc7daa3a0812$export$default","Infinity","cb","$73676550f5e29ea3252a763fbf11c6fe$export$default","mapObject","$8664ac5bcdb43f32abd389064e4b2c05$export$default","results","currentKey","noop","propertyOf","$c84ed7dbd18a26faf3e0df2e05c6c5d3$export$default","$f8366f502139cec287b480bb1d983809$export$default","times","accum","random","min","floor","Date","now","getTime","createEscaper","map","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","replace","&","<",">","\"","'","`","$574cb77d3ae4f7d29fcdbfeca80ca525$export$default","$9ba9c94a8f6c818d44fe1ee31d917573$export$default","$c7e287a20854fce3e73a8a558511595c$export$default","templateSettings","evaluate","interpolate","escape","noMatch","escapes","\\","\r","\n","
","
","escapeRegExp","escapeChar","template","text","settings","oldSettings","$bacb549979038cd31336ec61608ff330$export$default","render","offset","variable","data","argument","fallback","idCounter","uniqueId","prefix","id","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","$aa92626040fbd5117a85266f907ae92c$export$default","boundArgs","placeholder","bound","position","$2a50f5e45191fc6e695a938febf44f5f$export$default","TypeError","callArgs","flatten","input","depth","strict","output","idx","$b20148b4c02e3fcfb557fb7bd8bb5171$export$default","j","$d7761232657d32dd98169d4683f48d6d$export$default","Error","$2be82356948312e4d31b66b933318d76$export$default","memoize","hasher","cache","address","wait","setTimeout","$b720792274b9c9afc1cdf7e8dbf33332$export$default","$f996a2b93dc07bedcd3c037333b645bc$export$default","throttle","options","timeout","previous","later","leading","$2422416142c0843a588ff57699470b3b$export$default","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","debounced","callNow","wrap","wrapper","negate","predicate","compose","start","after","before","memo","$de53bba92714229d17e006e6f5dca526$export$default","findKey","createPredicateIndexFinder","dir","array","$9e90169be19b41ddf2a3aa72e6374d52$export$default","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","$8db6d7b92485185ae1a478b09caad61c$export$slice","$18085cf62b6fb59b056f4f4f06ca2261$export$default","$a8293031d5637f8b60fb8728d9d5cdc9$export$default","$49aa4122e24158225f3fe5e4ac6ee9eb$export$default","$0687f899b04c91434ddc9ba7bf0add50$export$default","$d029245d3e8d25c6e3060b4f7bfff3a3$export$default","find","$6259d6c62e1069389a52f42158e95d65$export$default","findWhere","$ad35eecb0119420bcc93ac9187bc18e8$export$default","each","createReduce","reducer","initial","$0c44b7613c2927408707b4b1dbe48b13$export$default","filter","$75097658a4b7d6f8bc081f8cfc89af9a$export$default","list","reject","$bebfd7ff815c0c632a74cf211993dad8$export$default","$68811c9994d89ef4467835b6257ed646$export$default","every","some","fromIndex","guard","$e2f51cc4b92b1ee51815a5f83b485d21$export$default","$ee6c23e0e653cbad18758bba95d52e01$export$default","contextPath","$6e3415c8a7e7176bbc156eec9d4160f3$export$default","method","pluck","where","computed","lastComputed","sample","$ad225e62772a30218575f912f729befe$export$default","$8fc2f052a4bb2155552c539233b548f0$export$default","last","rand","temp","shuffle","$92ce8b11860aa9a69bd6eeb49ebd50ab$export$default","sortBy","$74385c47bc6f0de98f57eb92a5b26e64$export$default","criteria","left","right","group","behavior","partition","$2fb6e70c239dbe781d6f905d67af9895$export$default","pass","reStrSymbol","toArray","size","keyInObj","$409558018ea5dcf2dcc8669c000af1f0$export$default","$1baf6aec3ce7b883dc505df9da41b383$export$default","$3482aecad379da8d508a950350835257$export$default","first","$c06f20b780cd9d99af8d57ffa81be21e$export$default","$d1137798e4d0d5467beed99b83e8b121$export$default","compact","Boolean","otherArrays","$010a3eb305b3fe8e8cf1fbfe1ba801c9$export$default","uniq","isSorted","$eb71bf4594411620bc01b9dbb90248ba$export$default","seen","arrays","$5687dafd9eed919541fe1e458e715685$export$default","intersection","argsLength","unzip","$7c8c6d48056069efb5390a5ff1364c30$export$default","$77fce9382bb11b094457fd58148c8521$export$default","range","stop","step","ceil","chunk","count","chainResult","mixin","$a650f311a624b5349dc63476622dd62a$export$default","$8db6d7b92485185ae1a478b09caad61c$export$push","$4c2a7122b43bf59a5276151154cc2f11$export$default","$8db6d7b92485185ae1a478b09caad61c$export$ArrayProto","dest","$66cc0700abe924c0beca4a033aa7334c$export$default","$142fdaed87263961df25f1be9f38925d$exports","$a721ad2560afc34d0811795f07a7a883$var$_slash","isExtendedLengthPath","hasNonAscii","$dccaa55fe1b259c4af227f27e10562d0$var$_events","$9cb47ba4bfa2a607ad1265467225714e$exports","minimatch","Minimatch","sep","err","code","$parcel$missingModule","er","GLOBSTAR","$3ce52b077ea31211ed59c9a676906124$exports","xs","fn","res","x","balanced","str","maybeMatch","r","end","pre","body","post","reg","m","begs","beg","ai","indexOf","bi","$7d3b6124a8758bf655df865c74323f57$exports","$112668d1a98d5efd70542a0337087401$exports","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseInt","charCodeAt","parseCommaParts","parts","p","postParts","shift","embrace","isPadded","el","lte","y","gte","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","N","width","incr","abs","pad","c","fromCharCode","need","z","k","expansion","plTypes","!","open","close","?","+","*","@","reSpecials","reduce","set","slashSplit","ext","t","pattern","nocomment","charAt","trim","regexp","comment","empty","make","braceExpand","nobrace","def","orig","debug","_made","parseNegate","globSet","console","error","globParts","s","si","parse","negateOffset","nonegate","isSub","noglobstar","stateChar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","substring","sp","SUBPARSE","tail","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","filename","file","matchBase","matchOne","flipNegate","fi","pi","fl","hit","fr","pr","swallowee","toLowerCase","$dccaa55fe1b259c4af227f27e10562d0$var$_minimatch","$dccaa55fe1b259c4af227f27e10562d0$var$_interopRequireDefault","$dccaa55fe1b259c4af227f27e10562d0$var$_atom","_atom","arr1","arr2","merge","unique","$86aaf12417e9149e679d6e7e5506e1a1$var$_child_process","_child_process","$86aaf12417e9149e679d6e7e5506e1a1$var$_buffer","_buffer","_util","promisify","execRaw","arr","Set","constants","MAX_STRING_LENGTH","async","givenPath","givenDirectory","process","cwd","globifyGitIgnoreEntry","posixifyPath","posixifyPathNormalized","gitIgnoreDirectory","globifyGitIgnore","readFile","$7e1a045830e8ea74d310ca1505ac9555$var$_path","$7e1a045830e8ea74d310ca1505ac9555$var$_interopRequireDefault","$7e1a045830e8ea74d310ca1505ac9555$var$_fs","_fs","$96c66a8fab6a5a9421d83f7a0065591c$exports","exec","chars","{","(","[","strictRegex","relaxedRegex","$9fa2782b5b8ca4a4c027fb0b0e515863$exports","regex","$20c9374561eee72b07e10559f6d6704f$exports","$7e1a045830e8ea74d310ca1505ac9555$var$_isValidPath","stat","promises","normalize","gitIgnoreContent","gitIgnoreEntries","entry","trimLeadingWhiteSpace","trimTrailingWhitespace","gitIgnoreEntriesNum","globEntries","iEntry","globifyOutput","$86aaf12417e9149e679d6e7e5506e1a1$exports","gitIgnoreEntry","forceInclude","pathType","PATH_TYPE","OTHER","getPathType","slashPlacement","startsWith","DIRECTORY","endsWith","FILE","filepath","pathStat","isDirectory","isFile","$c6ce6a2080f77d2a41316ae8d94c6548$exports","generate","$c6ce6a2080f77d2a41316ae8d94c6548$export$generate","convertPatternsToTasks","$c6ce6a2080f77d2a41316ae8d94c6548$export$convertPatternsToTasks","getPositivePatterns","$c6ce6a2080f77d2a41316ae8d94c6548$export$getPositivePatterns","getNegativePatternsAsPositive","$c6ce6a2080f77d2a41316ae8d94c6548$export$getNegativePatternsAsPositive","groupPatternsByBaseDirectory","$c6ce6a2080f77d2a41316ae8d94c6548$export$groupPatternsByBaseDirectory","convertPatternGroupsToTasks","$c6ce6a2080f77d2a41316ae8d94c6548$export$convertPatternGroupsToTasks","convertPatternGroupToTask","$c6ce6a2080f77d2a41316ae8d94c6548$export$convertPatternGroupToTask","$bb8db7b87e9934fdc362dced3d52d6f5$exports","$bb8db7b87e9934fdc362dced3d52d6f5$export$array","errno","$bb8db7b87e9934fdc362dced3d52d6f5$export$errno","fs","$bb8db7b87e9934fdc362dced3d52d6f5$export$fs","$bb8db7b87e9934fdc362dced3d52d6f5$export$path","$bb8db7b87e9934fdc362dced3d52d6f5$export$pattern","stream","$bb8db7b87e9934fdc362dced3d52d6f5$export$stream","$bb8db7b87e9934fdc362dced3d52d6f5$export$string","$2eaa2e771dc308781c1dc8c17880c78e$exports","$2eaa2e771dc308781c1dc8c17880c78e$export$flatten","splitWhen","$2eaa2e771dc308781c1dc8c17880c78e$export$splitWhen","groupIndex","$bb4ec04f6a8c9bb80c560814e66ddebb$exports","isEnoentCodeError","$bb4ec04f6a8c9bb80c560814e66ddebb$export$isEnoentCodeError","$f881ecce60f068a16be9b949dc2939cd$exports","createDirentFromStats","$f881ecce60f068a16be9b949dc2939cd$export$createDirentFromStats","DirentFromStats","stats","isBlockDevice","bind","isCharacterDevice","isFIFO","isSocket","isSymbolicLink","$b0414deaf53f5d3c2bbd86837270b8b0$exports","unixify","$b0414deaf53f5d3c2bbd86837270b8b0$export$unixify","makeAbsolute","$b0414deaf53f5d3c2bbd86837270b8b0$export$makeAbsolute","$b0414deaf53f5d3c2bbd86837270b8b0$export$escape","removeLeadingDotSegment","$b0414deaf53f5d3c2bbd86837270b8b0$export$removeLeadingDotSegment","UNESCAPED_GLOB_SYMBOLS_RE","resolve","secondCharactery","$8a9b0099c5c23a551bac415bff99f78f$exports","isStaticPattern","$8a9b0099c5c23a551bac415bff99f78f$export$isStaticPattern","isDynamicPattern","$8a9b0099c5c23a551bac415bff99f78f$export$isDynamicPattern","convertToPositivePattern","$8a9b0099c5c23a551bac415bff99f78f$export$convertToPositivePattern","convertToNegativePattern","$8a9b0099c5c23a551bac415bff99f78f$export$convertToNegativePattern","isNegativePattern","$8a9b0099c5c23a551bac415bff99f78f$export$isNegativePattern","isPositivePattern","$8a9b0099c5c23a551bac415bff99f78f$export$isPositivePattern","getNegativePatterns","$8a9b0099c5c23a551bac415bff99f78f$export$getNegativePatterns","$8a9b0099c5c23a551bac415bff99f78f$export$getPositivePatterns","getBaseDirectory","$8a9b0099c5c23a551bac415bff99f78f$export$getBaseDirectory","hasGlobStar","$8a9b0099c5c23a551bac415bff99f78f$export$hasGlobStar","endsWithSlashGlobStar","$8a9b0099c5c23a551bac415bff99f78f$export$endsWithSlashGlobStar","isAffectDepthOfReadingPattern","$8a9b0099c5c23a551bac415bff99f78f$export$isAffectDepthOfReadingPattern","expandPatternsWithBraceExpansion","$8a9b0099c5c23a551bac415bff99f78f$export$expandPatternsWithBraceExpansion","expandBraceExpansion","$8a9b0099c5c23a551bac415bff99f78f$export$expandBraceExpansion","getPatternParts","$8a9b0099c5c23a551bac415bff99f78f$export$getPatternParts","$8a9b0099c5c23a551bac415bff99f78f$export$makeRe","convertPatternsToRe","$8a9b0099c5c23a551bac415bff99f78f$export$convertPatternsToRe","matchAny","$8a9b0099c5c23a551bac415bff99f78f$export$matchAny","pathPosixDirname","posix","dirname","isWin32","_os","platform","backslash","enclosure","globby","escaped","$51078da72c7dbb3412ae6d4e057b0dd6$exports","opts","assign","flipBackslashes","util","INTS","$0f26b409f241a5c47e5770cc6c0440b6$exports","RANGE","from","to","WORDS","CHAR","WHITESPACE","SET","not","SLSH","0","regexpStr","rs","tokens","$aefac407e80aa6b85c91462ee3143aaa$export$words","$aefac407e80aa6b85c91462ee3143aaa$export$ints","$aefac407e80aa6b85c91462ee3143aaa$export$whitespace","$aefac407e80aa6b85c91462ee3143aaa$export$notWords","$aefac407e80aa6b85c91462ee3143aaa$export$notInts","$aefac407e80aa6b85c91462ee3143aaa$export$notWhitespace","lastIndex","$360c03f5ff72cd7c6fe7677dfcc5bd49$export$error","msg","SyntaxError","$edde2581b07c7e030877c2314413fc6f$exports","ROOT","stack","lastGroup","groupStack","repeatErr","lbs","a16","b16","c8","dctrl","eslsh","$360c03f5ff72cd7c6fe7677dfcc5bd49$export$strToChars","POSITION","REFERENCE","classTokens","$360c03f5ff72cd7c6fe7677dfcc5bd49$export$tokenizeClass","GROUP","remember","followedBy","notFollowedBy","REPETITION","types","$168adb170c209e757fe4b060035488e9$exports","replimit","undefined","limit","reps","walk","node","starHeight","$60caf9cc7b72b70ce7b41ffb788a8833$exports","val","ctorName","$2532faf84d4617ff82b807205efd95fd$exports","isBuffer","callee","message","toDateString","getDate","setDate","isDate","stackTraceLimit","isError","ignoreCase","multiline","isRegexp","throw","return","next","isGeneratorObj","accessor","configurable","$785ce1bbc7cd534430744e1d18c0ee23$exports","getOwnPropertyDescriptor","$a31309610cc2bb633d50ad6fb2509dfe$exports","writable","$ed49a1631130fc0f4c96516fc10b338f$exports","isobject","isDescriptor","define","Reflect","$96cef0a3c0657b4223364af1305c0b26$exports","$96cef0a3c0657b4223364af1305c0b26$init","hasOwn","$68b0e9689b9a41ef01994d2699871bb0$exports","$c1cb22a83eceac59938ab435aa0b9d12$exports","o","toRegex","strictNegate","strictOpen","strictClose","endChar","safe","$c588c924c381380ba812dd80397b87b5$exports","createKey","strictErrors","originalOptions","createdOptions","$472a8548c4cfba65b31d54e16bad786a$exports","patterns","$28637b54a6fedcc3b944c4fb041e0c5a$exports","splice","immutable","arrLen","newArr","getClosingQuote","ch","brackets","keepQuotes","keepDoubleQuotes","keepSingleQuotes","keepEscaping","$f4615712f020011590aeca4aab0f67ef$exports","quotes","closeIdx","expected","tok","$aad63487bf516e60d7d148fd855712d7$exports","extend","flat","cur","$dc82966fc3115c4bfc8bfd443721efc6$exports","$2f5741ddcd5c48b827df42fe6d4e235a$exports","num","$ef51b921d303ac6c7a0ab9b8e78f2e1e$exports","rangeToPattern","digits","zipped","zip","numbers","startDigit","stopDigit","toCharacterClass","shorthand","splitToPatterns","prev","ranges","Number","nines","stops","countNines","zeros","countZeros","compare","splitToRanges","padZeros","toQuantifier","filterPatterns","comparison","ele","relaxZeros","integer","padding","diff","maxLen","dash","maxLength","stringify","toNumber","isValidLetter","isValidNumber","$bb50dc5ea7f3a40b79d8c83f139d5c4b$exports","RangeError","capture","positives","negatives","neg","pos","onlyNegative","onlyPositive","intersected","siftPatterns","$615da2d8a3e540c6768c94a0683e1c2b$exports","isString","transform","strictRanges","isNumber","inspect","optimize","toRange","zero","greater","lesser","asc","round","toSequence","fillRange","multiply","queue","repeat","arrayify","isEscaped","isType","$249f6ec0c0c2552098db1df68abb6c35$exports","isEmptySets","isQuotedString","createOptions","bval","unescape","escapeBrackets","rangeLimit","segs","stringifyArray","parens","isQuantifier","escapeRegex","$b033c896c4628e35cc163bcd2bd0bf21$exports","braces","compiler","ast","negated","inner","parent","mapVisit","nodes","multiplier","quantifiers","expanded","isOptimized","hasQueue","isLiteralBrace","noInner","hasEmpty","ownNames","append","emit","assert","Node","getOwnPropertyNames","concatNodes","$2c8a4d4fba4213dd59057e4b2d61622f$exports","isNode","toNoop","visit","addOpen","unshift","unshiftNode","addClose","pushNode","wrapNodes","popNode","shiftNode","removeNode","remove","hasType","firstOfType","findNode","isOpen","isClose","hasOpen","hasClose","hasOpenAndClose","addType","state","inside","removeType","child","isInsideType","isInside","siblings","isScope","scope","$e4b07084cabe321da181b12ec916b58f$exports","$b2a5190c31f3997e2409b615336c6c95$exports","parser","parsed","consume","esc","brace","Emitter","$c3f0f3013e237737780897be06c4bf9a$exports","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","listeners","hasListeners","$7ae59eb5def08a67ec5f8175028050ca$exports","thisArg","target","$6b1fe1e63d6b4ea70462171e8d79e78e$exports","$cad6ef3b1f73f4c2ee4aac6acd0f2cc0$exports","$dfa5f9f6cc8135ec214abe36b92a28f5$exports","$9006838362bfc585f62b28b93569ea88$exports","init","arg","$136b4e6871c9f111169a5d44ef23f9cf$exports","isObjectObject","isValidKey","$ce13dc39e7f748e333c26d060dd7efd7$exports","ctor","prot","$fb4c9bdf0ca710c6c72b23e81d3256a1$exports","current","$4f7ce5c186a429e137ffe3e6589a5307$exports","namespace","Cache","union","ctx","del","$f175428ea8502f926190eb9b58ea8fcb$exports","clear","$28130d392c4a0772d47246da5e69b8a1$exports","hasValue","$c1cd14697e94c35c9f1bfeae474b36c5$exports","$ca47687bdc264180a695e44c58199b56$exports","$ca47687bdc264180a695e44c58199b56$export$namespace","mixinDeep","objects","$60081aa55def818dbda363a31032d7dd$exports","copy","$683f3d64c9438d54d3e2bfc31155a407$exports","$04b55222fef547194393fa3f0362d97e$exports","toUpperCase","$5674b182ca5068e6676c7cdfca35f846$exports","receiver","provider","hasConstructor","$edc8888f4a82c69e0f981627daace0c7$exports","omit","$edc8888f4a82c69e0f981627daace0c7$export$has","fns","Base","is","initBase","inherits","run","isRegistered","register","registered","use","mixins","base","$34d81bbec38512cd1254e93068271e97$exports","Parent","Child","inherit","bubble","$bbacb3042e11a36d5211faab36d069be$exports","extendFn","hasAll","getDescriptor","copyDescriptor","events","$62a8875358db2512d0367b4f7f5013f8$exports","$62a8875358db2512d0367b4f7f5013f8$export$namespace","$6e1427add4b9f0840c4fc729cc6efde4$exports","app","hook","plugin","useColors","$3f52446ee1abc7653dc4a5035ed79b04$exports","humanize","color","lastC","formatArgs","$3f52446ee1abc7653dc4a5035ed79b04$export$formatArgs","namespaces","storage","setItem","removeItem","save","$3f52446ee1abc7653dc4a5035ed79b04$export$save","getItem","env","DEBUG","load","$3f52446ee1abc7653dc4a5035ed79b04$export$load","__nwjs","navigator","userAgent","documentElement","style","WebkitAppearance","firebug","exception","table","$3f52446ee1abc7653dc4a5035ed79b04$export$useColors","localStorage","localstorage","$3f52446ee1abc7653dc4a5035ed79b04$export$storage","warned","warn","$3f52446ee1abc7653dc4a5035ed79b04$export$destroy","colors","log","$3f52446ee1abc7653dc4a5035ed79b04$export$log","h","d","w","plural","ms","msAbs","isPlural","$01565c02dd8c9a99a144ce8c7cfe2029$exports","long","fmtShort","JSON","createDebug","prevTime","enableOverride","enabled","curr","coerce","format","formatter","formatters","selectColor","delimiter","newDebug","toNamespace","disable","skips","enable","$d3d78d251c3d34ccd6e6dad01d99683c$exports","intToCharMap","number","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","$bca72b3f56981746db37ecabcda31237$export$encode","aStr","aIndex","aOutParam","continuation","charCode","shifted","strLen","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","host","port","urlGenerate","aParsedUrl","url","aPath","part","isAbsolute","$dfaea7ed1bad598607417e5b75620ae8$export$isAbsolute","up","aRoot","aPathUrl","aRootUrl","joined","level","lastIndexOf","supportsNullProto","isProtoString","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","onlyCompareGenerated","strcmp","aStr1","aStr2","hasNativeMap","ArraySet","_array","_set","fromArray","aArray","aAllowDuplicates","sStr","$dfaea7ed1bad598607417e5b75620ae8$export$toSetString","isDuplicate","at","aIdx","$b697de32ec04ab701ca8c20c3b1d8842$export$ArraySet","MappingList","_sorted","_last","unsortedForEach","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","$dfaea7ed1bad598607417e5b75620ae8$export$compareByGeneratedPositionsInflated","SourceMapGenerator","_file","$dfaea7ed1bad598607417e5b75620ae8$export$getArg","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","eachMapping","mapping","newMapping","generated","line","column","$dfaea7ed1bad598607417e5b75620ae8$export$relative","original","addMapping","sources","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","originalPositionFor","$dfaea7ed1bad598607417e5b75620ae8$export$join","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","$cd3748f8e165ba3ac013e58242d5fe94$export$encode","_generateSourcesContent","aSources","aSourceRoot","version","sourcesContent","$c541c936866662f6d02b074208766006$exports","$c541c936866662f6d02b074208766006$export$SourceMapGenerator","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","swap","ary","doQuickSort","comparator","pivot","q","quickSort","SourceMapConsumer","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","$dfaea7ed1bad598607417e5b75620ae8$export$compareByOriginalPositions","lastColumn","$dfaea7ed1bad598607417e5b75620ae8$export$normalize","Mapping","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","consumer","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","cachedSegments","originalMappings","$cd3748f8e165ba3ac013e58242d5fe94$export$decode","$dfaea7ed1bad598607417e5b75620ae8$export$compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","$2662bc95027c75c71c6c7401bd80f25d$export$search","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","sc","nullOnMissing","$dfaea7ed1bad598607417e5b75620ae8$export$urlParse","fileUriAbsPath","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","$c541c936866662f6d02b074208766006$export$SourceMapConsumer","$d54ed02a388d66b48745f1b163c30b63$export$SourceMapGenerator","REGEX_NEWLINE","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","prepend","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","$dfaea7ed1bad598607417e5b75620ae8$export$fromSetString","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","$c541c936866662f6d02b074208766006$export$SourceNode","factory","innerRegex","_innerRegex","getFrom","existsIn","removeFrom","insertBefore","amd","$2749aee3c3426585d87f09a89fe8dc72$exports","sourceMappingURL","numUrls","createElement","href","head","getElementsByTagName","firstChild","resolved","removeChild","$53617fe6e7b04c69faddee1ff4dc1d4d$exports","resolveUrl","$be6fbbded5ed8216c390f22db7cbd2dc$exports","$2749aee3c3426585d87f09a89fe8dc72$init","$53617fe6e7b04c69faddee1ff4dc1d4d$init","sourceMapResolve","callbackAsync","callback","setImmediate","parseMapToJSON","sourceMapData","readSync","read","readUrl","resolveSourceMap","codeUrl","mapData","resolveSourceMapHelper","resolveSourceMapSync","dataUriRegex","jsonMimeTypeRegex","decodeBase64String","b64","TextDecoder","atob","buf","binStr","base64ToBuf","fatal","decode","dataUri","mimeType","lastParameter","sourcesRelativeTo","decodeURIComponent","mapUrl","resolveSources","pending","sourcesResolved","done","resolveSourcesHelper","fullUrl","resolveSourcesSync","endingSlash","_resolveSources","resolveSync","$ce77edf39098082c808c625552f5b78d$exports","SourceMap","$ce77edf39098082c808c625552f5b78d$export$SourceMap","$ce77edf39098082c808c625552f5b78d$export$sourceMapResolve","fp","$ce77edf39098082c808c625552f5b78d$export$unixify","$ce77edf39098082c808c625552f5b78d$export$isString","$ce77edf39098082c808c625552f5b78d$export$arrayify","$ce77edf39098082c808c625552f5b78d$export$last","utils","$ce77edf39098082c808c625552f5b78d$init","Compiler","__filename","compilers","files","$744493b57816294017898a0e802579db$exports","lines","updatePosition","$744493b57816294017898a0e802579db$export$updatePosition","addContent","addFile","$744493b57816294017898a0e802579db$export$emit","$744493b57816294017898a0e802579db$export$addFile","$744493b57816294017898a0e802579db$export$addContent","inputSourcemaps","originalMap","readFileSync","relativeTo","applySourceMaps","$744493b57816294017898a0e802579db$export$applySourceMaps","_comment","$744493b57816294017898a0e802579db$export$comment","reason","silent","errors","compile","parsingErrors","sourcemap","$744493b57816294017898a0e802579db$init","sourcemaps","$c9414040d780aed25e62d0a002eb3910$exports","MapCache","__data__","$f720455cebf4caa76c14f7121e736e3c$exports","$5656faca8deb88a3e865ce47991e47c0$exports","Parser","visited","hasDelims","parsers","sets","currentType","bos","setCount","token","capturePair","openRegex","closeRegex","specialChars","suffix","eos","$99ea49481c3e2ac102d3221bbb0c625d$exports","Snapdragon","Braces","compiled","$0de510e2c62ac3fc80785979abaab470$exports","isInitialized","snapdragon","addParent","$bbde2a82901957113f1aa5f3f6ddb4ab$exports","disabled","nodupes","clearCache","noempty","$2c986431e15fba1dbec2f9d013ccb6a6$exports","win32","POSIX_CHARS","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","START_ANCHOR","WINDOWS_CHARS","$6ea4e9565576a4a968bbf64860e1e2fa$exports","MAX_LENGTH","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","***","**/**","**/**/**","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SEP","extglobChars","globChars","windows","char","lastIdx","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$escapeLast","isPathSeparator","isPrefix","isGlobstar","$caaf37a2ac0ecd885d732680ccd9eb82$exports","scanToEnd","slashes","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","finished","advance","noparen","glob","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$removeBackslashes","maxDepth","prevIndex","expandRange","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$escapeRegex","syntaxError","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$isWindows","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$removePrefix","extglobs","peek","increment","decrement","extglob","extglobOpen","conditions","extglobClose","extglobStar","includes","negatedExtglob","fastpaths","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$wrapOutput","strictBrackets","nobracket","prevValue","literalBrackets","outputIndex","tokensIndex","dots","comma","out","toks","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$supportsLookbehinds","prior","isStart","afterStar","strictSlashes","slashDot","$517ae04aa1ed02e470b678ad175d1ffa$exports","picomatch","returnState","isState","compileRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","returnObject","onIgnore","$5f7a51d6e338a8a2bdd69ce18a1cd1c1$export$toPosixSlashes","basename","scan","returnOutput","$ffd551b7b6f4391aa21c387217f8cb31$exports","isEmptyString","micromatch","keep","matched","delete","matches","failglob","nullglob","any","matchKeys","all","$4b7e43b90d359077162fbaf429126a07$exports","COMMON_GLOB_SYMBOLS_RE","REGEX_CHARACTER_CLASS_SYMBOLS_RE","REGEX_GROUP_SYMBOLS_RE","GLOB_EXTENSION_SYMBOLS_RE","BRACE_EXPANSIONS_SYMBOLS_RE","caseSensitiveMatch","braceExpansion","patternsRe","patternRe","$fdfcc355a4dc3f103f98f46f99904176$exports","$fdfcc355a4dc3f103f98f46f99904176$export$merge","PassThrough","_stream","pauseStreams","streams","_readableState","pipe","pause","propagateCloseEventToSources","$dd22b152e968cf17d12a6fba53475559$exports","streamsQueue","merging","doEnd","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","mergeStream","nextTick","endStream","pipesCount","onend","onerror","endEmitted","resume","setMaxListeners","$e59011f83779ec4e0f78c28a99183dcd$exports","$e59011f83779ec4e0f78c28a99183dcd$export$isString","$e59011f83779ec4e0f78c28a99183dcd$export$isEmpty","positivePatterns","negativePatterns","staticPatterns","dynamicPatterns","staticTasks","dynamicTasks","positive","negative","dynamic","positivePatternsGroup","$7bcc3f65be013f0365874bb7ee025c7b$exports","$6be30e5a546cea3b5e34e045d27f25eb$exports","stream_1","$f87bc5f3f53e2325f238dbff1d67df18$exports","Settings","$f87bc5f3f53e2325f238dbff1d67df18$export$Settings","$f87bc5f3f53e2325f238dbff1d67df18$export$stat","statSync","$f87bc5f3f53e2325f238dbff1d67df18$export$statSync","$e5109137885dbfea7f9fb2b97ecb746d$exports","callFailureCallback","callSuccessCallback","$e5109137885dbfea7f9fb2b97ecb746d$export$read","lstat","lstatError","followSymbolicLink","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","$e677765df604f77f87fd479f1f278495$exports","$e677765df604f77f87fd479f1f278495$export$read","lstatSync","$59f260f325a7610b23b670e78646c748$exports","$95f3793d6d4ea79e1c819a28c4b5e878$exports","FILE_SYSTEM_ADAPTER","$95f3793d6d4ea79e1c819a28c4b5e878$export$FILE_SYSTEM_ADAPTER","createFileSystemAdapter","$95f3793d6d4ea79e1c819a28c4b5e878$export$createFileSystemAdapter","fsMethods","_options","_getValue","option","$59f260f325a7610b23b670e78646c748$export$default","optionsOrSettingsOrCallback","getSettings","settingsOrOptions","optionsOrSettings","$371da76d9d6a3f43999a630ee24ae2e1$exports","$371da76d9d6a3f43999a630ee24ae2e1$export$walk","walkSync","$371da76d9d6a3f43999a630ee24ae2e1$export$walkSync","walkStream","$371da76d9d6a3f43999a630ee24ae2e1$export$walkStream","$371da76d9d6a3f43999a630ee24ae2e1$export$Settings","$a3c71edfb7500b000df8d30c61ffc38e$exports","$31d7b6c5d9838992206b58447ebe90e2$exports","events_1","$900aa4c3b533905c6a89a5869506647e$exports","scandir","$900aa4c3b533905c6a89a5869506647e$export$scandir","scandirSync","$900aa4c3b533905c6a89a5869506647e$export$scandirSync","$900aa4c3b533905c6a89a5869506647e$export$Settings","$c57054c6e3e549342982c1fd8ef1bee5$exports","$c57054c6e3e549342982c1fd8ef1bee5$export$read","readdirWithFileTypes","$c57054c6e3e549342982c1fd8ef1bee5$export$readdirWithFileTypes","readdir","$c57054c6e3e549342982c1fd8ef1bee5$export$readdir","$ef46851515b4c949088bc23a4b7d5824$exports","tasks","isSync","$7d856a9163de738b80cea8f92b602312$exports","task","promise","queueMicrotask","Promise","then","catch","$b2004388b2e8c364bc02dd0d9acd0d07$exports","IS_SUPPORT_READDIR_WITH_FILE_TYPES","$b2004388b2e8c364bc02dd0d9acd0d07$export$IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","versions","MAJOR_VERSION","MINOR_VERSION","$7dde6eccca13abbc6d2ea594fe87eec2$exports","$7dde6eccca13abbc6d2ea594fe87eec2$export$fs","$e7763352566199cde11f1b24e3eb47fa$exports","$e7763352566199cde11f1b24e3eb47fa$export$createDirentFromStats","$01d6985ab0186faa164624f32667ccb8$exports","joinPathSegments","$01d6985ab0186faa164624f32667ccb8$export$joinPathSegments","separator","directory","withFileTypes","readdirError","dirents","entries","dirent","pathSegmentSeparator","followSymbolicLinks","makeRplTaskEntry","rplError","rplEntries","filepaths","fsStatSettings","$5c47f16f424d99f85d9677350cd95814$exports","$5c47f16f424d99f85d9677350cd95814$export$read","$5c47f16f424d99f85d9677350cd95814$export$readdirWithFileTypes","$5c47f16f424d99f85d9677350cd95814$export$readdir","readdirSync","entryPath","$049ef204572a146f6a7ec986acf84b59$exports","$25b48f0f8c24dfe6d11362d18d21f731$exports","$25b48f0f8c24dfe6d11362d18d21f731$export$FILE_SYSTEM_ADAPTER","$25b48f0f8c24dfe6d11362d18d21f731$export$createFileSystemAdapter","$049ef204572a146f6a7ec986acf84b59$export$default","fastqueue","worker","concurrency","$99f2094e871c50f83c19f931f0e54518$exports","Task","queueHead","queueTail","_running","errorHandler","release","paused","saturated","worked","drain","running","idle","counter","getQueue","kill","killAndDrain","handler","holder","Constructor","pushCb","unshiftCb","$1d4507b17549176e0ad9bb5205b0e1ce$exports","$1d4507b17549176e0ad9bb5205b0e1ce$export$promise","$8b92529c51508d7ec3c0df93a5afc8c9$exports","isFatalError","$8b92529c51508d7ec3c0df93a5afc8c9$export$isFatalError","isAppliedFilter","$8b92529c51508d7ec3c0df93a5afc8c9$export$isAppliedFilter","replacePathSegmentSeparator","$8b92529c51508d7ec3c0df93a5afc8c9$export$replacePathSegmentSeparator","$8b92529c51508d7ec3c0df93a5afc8c9$export$joinPathSegments","errorFilter","$6a2824e469fa2f214c2c9ce87da85a2b$exports","_root","_settings","$6a2824e469fa2f214c2c9ce87da85a2b$export$default","AsyncReader","super","_scandir","_emitter","EventEmitter","_queue","_worker","_isFatalError","_isDestroyed","_pushToQueue","basePath","isDestroyed","onEntry","onError","onEnd","queueItem","_handleError","fsScandirSettings","_handleEntry","fullpath","entryFilter","_emitEntry","deepFilter","$31d7b6c5d9838992206b58447ebe90e2$export$default","_reader","_storage","$a3c71edfb7500b000df8d30c61ffc38e$export$default","$690e822f2bbae4aad40cc3ce94069478$exports","Readable","$690e822f2bbae4aad40cc3ce94069478$export$default","$a021d515b10016263720c1e2a15e2aa8$exports","$31a6c90c162edeb2f0a39edda1c834de$exports","SyncReader","_handleQueue","_handleDirectory","_pushToStorage","$31a6c90c162edeb2f0a39edda1c834de$export$default","$a021d515b10016263720c1e2a15e2aa8$export$default","$8b5bc5918395f8c6a420cb350fa0f953$exports","$8b5bc5918395f8c6a420cb350fa0f953$export$default","$d2e9196a27fbb886274b5910ef723b92$exports","_fsStatSettings","_getFullEntryPath","_makeEntry","suppressErrors","$d2e9196a27fbb886274b5910ef723b92$export$default","ReaderStream","_walkStream","_stat","static","_write","_enc","_getEntry","write","_getStat","$6be30e5a546cea3b5e34e045d27f25eb$export$default","$9e7d5e6d8719acccce69a4b5c0c902c5$exports","$744f0d616ce9960c02ecab64c978c05d$exports","$0206f143b49da10ae43328cbeafa65d6$exports","$e465f9876e609c2c7d2011ab3d383ed8$exports","_patterns","_micromatchOptions","_fillStorage","segments","_getPatternSegments","_splitSegmentsIntoSections","complete","$e465f9876e609c2c7d2011ab3d383ed8$export$default","PartialMatcher","levels","info","$0206f143b49da10ae43328cbeafa65d6$export$default","getFilter","_getMatcher","negativeRe","_getNegativePatternsRe","_filter","affectDepthOfReadingPatterns","_isSkippedByDeep","_isSkippedSymbolicLink","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","deep","_getEntryLevel","entryPathDepth","baseNameMatch","$744f0d616ce9960c02ecab64c978c05d$export$default","$7ed332ac5b46c32e72babd6e4edfe735$exports","positiveRe","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","_isSkippedByAbsoluteNegativePatterns","isMatched","_isMatchToPatterns","_createIndexRecord","onlyFiles","onlyDirectories","absolute","$7ed332ac5b46c32e72babd6e4edfe735$export$default","$7b7751bf936b31c75664c1bf93cacfe6$exports","_isNonFatalError","$7b7751bf936b31c75664c1bf93cacfe6$export$default","$2a20e445515a95aa8a3adc81b012e3df$exports","getTransformer","_transform","markDirectories","$2a20e445515a95aa8a3adc81b012e3df$export$default","_getMicromatchOptions","entryTransformer","_getRootDirectory","_getReaderOptions","$9e7d5e6d8719acccce69a4b5c0c902c5$export$default","ProviderAsync","api","$7bcc3f65be013f0365874bb7ee025c7b$export$default","$1e99787610b68e71ab831a3974dd2b32$exports","ProviderStream","destination","$1e99787610b68e71ab831a3974dd2b32$export$default","$256302041aa949819ac7070b45cde1f6$exports","$52fae3ebdc494bf5e5902f1a03cc7be0$exports","ReaderSync","_walkSync","_statSync","$52fae3ebdc494bf5e5902f1a03cc7be0$export$default","ProviderSync","$256302041aa949819ac7070b45cde1f6$export$default","$802b01f4ff5a0b9a00348c186121c33b$exports","DEFAULT_FILE_SYSTEM_ADAPTER","$802b01f4ff5a0b9a00348c186121c33b$export$DEFAULT_FILE_SYSTEM_ADAPTER","os","CPU_COUNT","cpus","FastGlob","_getFileSystemMethods","assertPatternsInput","works","getWorks","_Provider","$802b01f4ff5a0b9a00348c186121c33b$export$default","sync","generateTasks","escapePath","$dccaa55fe1b259c4af227f27e10562d0$var$_fastGlob","PathsCache","rebuildCacheBound","_projectChangeWatcher","project","onDidChangePaths","_onDidChangeFilesBound","_onDidChangeFiles","_projectWatcher","onDidChangeFiles","_repositories","_filePathsByProjectDirectory","_filePathsByDirectory","_fileWatchersByDirectory","excludeVcsIgnoredPaths","shouldIgnoredNames","[object Object]","_cancelled","_buildInitialCacheWithGlob","_buildInitialCacheWithAtom","getFilePathsForProjectDirectory","projectDirectory","relativeToPath","filePaths","filePath","isPackageDispose","watcher","_isPathIgnored","ignored","repository","isIgnoredSubmodule","isSubmodule","isPathIgnored","ignoredName","ignoredPattern","_projectDirectories","getDirectories","projectNum","repositoriesP","repositoryForDirectory","repositories","_onDirectoryChanged","_removeFilePathsForDirectory","_cleanWatchersForDirectory","_populateCacheWithGlob","_populateCacheWithAtom","otherDirectory","_getDirectoryEntries","getEntries","action","oldPath","directoryPath","_cacheProjectPathsAndRepositories","patternsNum","$7e1a045830e8ea74d310ca1505ac9555$exports","globifyPath","globifyGitIgnoreFile","directoryGlob","globifyDirectory","gitignoreGlob","_getGitIgnoreGlob","ignoredPatternsGlob","_getIgnoredPatternsGlob","onDidChange","directories","File","Directory","filePathsArray","notifications","addError","dismissable","$a721ad2560afc34d0811795f07a7a883$var$_pathsCache","$a721ad2560afc34d0811795f07a7a883$var$_zadeh","_zadeh","javascriptPrefixes","javascriptExtensions","javascriptReplaceOnInsert","includeCurrentDirectory","PathsProvider","_isReady","_onRebuildCache","_onRebuildCacheDone","_scopes","DefaultScopes","_scopeMatchesRequest","request","sourceScopes","$956626ba65eda41c8b81a44454eb99c6$export$default","scopeDescriptor","getScopesArray","_getLineTextForRequest","lineMatch","editor","bufferPosition","getTextInRange","row","_getSuggestionsForScope","pathPrefix","trailingSlashPresent","directoryGiven","parsedPathPrefix","_getProjectDirectory","currentDirectory","getPath","requestedDirectoryPath","fuzzyMatcher","maxResults","suggestions","pathName","projectRelativePath","relativizePath","displayText","relativePath","distanceToFile","replacementPrefix","iconHTML","score","suggestionsCount","maxDistance","$f767988fbbc54a2f2ac1ec425bf7e5df$export$default","getBuffer","isReady","fileCount","accumulated","selector","inclusionPriority","$aec4afc29d561b54656e28ab7c85dc79$var$_pathsProvider","$a721ad2560afc34d0811795f07a7a883$exports","_statusBarElement","CompositeDisposable","innerHTML","addRightTile","priority","getProvider","setInterval"],"version":3,"file":"autocomplete-paths.js.map"} \ No newline at end of file +{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./lib/autocomplete-paths.js","./lib/config/option-scopes.js","./lib/config/index.js","./lib/paths-provider.js","./node_modules/underscore/modules/_setup.js","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index-default.js","./node_modules/slash/index.js","./lib/paths-cache.js","./node_modules/minimatch/minimatch.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./lib/utils.js","./lib/path-utils.js","./node_modules/is-invalid-path/node_modules/is-extglob/index.js","./node_modules/is-invalid-path/node_modules/is-glob/index.js","./node_modules/is-invalid-path/index.js","./node_modules/is-valid-path/index.js","./node_modules/fast-glob/out/managers/tasks.js","./node_modules/fast-glob/out/utils/index.js","./node_modules/fast-glob/out/utils/array.js","./node_modules/fast-glob/out/utils/errno.js","./node_modules/fast-glob/out/utils/fs.js","./node_modules/fast-glob/out/utils/path.js","./node_modules/fast-glob/out/utils/pattern.js","./node_modules/is-extglob/index.js","./node_modules/is-glob/index.js","./node_modules/glob-parent/index.js","./node_modules/micromatch/index.js","./node_modules/braces/lib/utils.js","./node_modules/braces/lib/stringify.js","./node_modules/fill-range/index.js","./node_modules/is-number/index.js","./node_modules/to-regex-range/index.js","./node_modules/braces/lib/compile.js","./node_modules/braces/lib/expand.js","./node_modules/braces/lib/constants.js","./node_modules/braces/lib/parse.js","./node_modules/braces/index.js","./node_modules/picomatch/lib/picomatch.js","./node_modules/picomatch/lib/utils.js","./node_modules/picomatch/lib/constants.js","./node_modules/picomatch/lib/scan.js","./node_modules/picomatch/lib/parse.js","./node_modules/picomatch/index.js","./node_modules/fast-glob/out/utils/stream.js","./node_modules/merge2/index.js","./node_modules/fast-glob/out/utils/string.js","./node_modules/fast-glob/out/providers/async.js","./node_modules/fast-glob/out/readers/stream.js","./node_modules/@nodelib/fs.stat/out/index.js","./node_modules/@nodelib/fs.stat/out/providers/async.js","./node_modules/@nodelib/fs.stat/out/providers/sync.js","./node_modules/@nodelib/fs.stat/out/settings.js","./node_modules/@nodelib/fs.stat/out/adapters/fs.js","./node_modules/@nodelib/fs.walk/out/index.js","./node_modules/@nodelib/fs.walk/out/providers/async.js","./node_modules/@nodelib/fs.walk/out/readers/async.js","./node_modules/@nodelib/fs.scandir/out/index.js","./node_modules/@nodelib/fs.scandir/out/providers/async.js","./node_modules/run-parallel/index.js","./node_modules/queue-microtask/index.js","./node_modules/@nodelib/fs.scandir/out/constants.js","./node_modules/@nodelib/fs.scandir/out/utils/index.js","./node_modules/@nodelib/fs.scandir/out/utils/fs.js","./node_modules/@nodelib/fs.scandir/out/providers/common.js","./node_modules/@nodelib/fs.scandir/out/providers/sync.js","./node_modules/@nodelib/fs.scandir/out/settings.js","./node_modules/@nodelib/fs.scandir/out/adapters/fs.js","./node_modules/fastq/queue.js","./node_modules/reusify/reusify.js","./node_modules/@nodelib/fs.walk/out/readers/common.js","./node_modules/@nodelib/fs.walk/out/readers/reader.js","./node_modules/@nodelib/fs.walk/out/providers/stream.js","./node_modules/@nodelib/fs.walk/out/providers/sync.js","./node_modules/@nodelib/fs.walk/out/readers/sync.js","./node_modules/@nodelib/fs.walk/out/settings.js","./node_modules/fast-glob/out/readers/reader.js","./node_modules/fast-glob/out/providers/provider.js","./node_modules/fast-glob/out/providers/filters/deep.js","./node_modules/fast-glob/out/providers/matchers/partial.js","./node_modules/fast-glob/out/providers/matchers/matcher.js","./node_modules/fast-glob/out/providers/filters/entry.js","./node_modules/fast-glob/out/providers/filters/error.js","./node_modules/fast-glob/out/providers/transformers/entry.js","./node_modules/fast-glob/out/providers/stream.js","./node_modules/fast-glob/out/providers/sync.js","./node_modules/fast-glob/out/readers/sync.js","./node_modules/fast-glob/out/settings.js","./node_modules/fast-glob/out/index.js","./node_modules/chokidar/index.js","./node_modules/readdirp/index.js","./node_modules/anymatch/index.js","./node_modules/normalize-path/index.js","./node_modules/chokidar/lib/nodefs-handler.js","./node_modules/is-binary-path/index.js","./node_modules/binary-extensions/binary-extensions.json","./node_modules/chokidar/lib/constants.js","./node_modules/chokidar/lib/fsevents-handler.js","./lib/config/default-scopes.js"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","\"use babel\"\nexport { config } from \"./config\"\nimport PathsProvider from \"./paths-provider\"\nimport { CompositeDisposable } from \"atom\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nconst subscriptions = new CompositeDisposable()\nlet _provider\nlet _statusBar\nlet _statusBarInterval\nlet _statusBarTile\nlet _statusBarElement\nlet _displayStatusBarItemOnConsumption\n\nexport function activate() {\n subscriptions.add(\n atom.commands.add(\"atom-workspace\", {\n \"autocomplete-paths:rebuild-cache\": () => {\n _provider.rebuildCache()\n },\n })\n )\n\n const cacheOptions = [\n \"core.ignoredNames\",\n \"core.excludeVcsIgnoredPaths\",\n \"autocomplete-paths.ignoreSubmodules\",\n \"autocomplete-paths.ignoredNames\",\n \"autocomplete-paths.ignoredPatterns\",\n \"autocomplete-paths.maxFileCount\",\n ]\n cacheOptions.forEach((cacheOption) => {\n subscriptions.add(\n atom.config.observe(cacheOption, () => {\n if (!_provider) {\n return\n }\n _provider._pathsCache.updateConfig()\n _provider.rebuildCache()\n })\n )\n })\n\n const scopeOptions = [\"autocomplete-paths.scopes\"]\n for (const key in OptionScopes) {\n scopeOptions.push(`autocomplete-paths.${key}`)\n }\n scopeOptions.forEach((scopeOption) => {\n subscriptions.add(\n atom.config.observe(scopeOption, () => {\n if (!_provider) {\n return\n }\n _provider.reloadScopes()\n })\n )\n })\n}\n\nexport function deactivate() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n subscriptions.dispose()\n if (_provider) {\n _provider.dispose(true)\n _provider = null\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n _statusBarTile = null\n }\n}\n\n/**\n * Invoked when the status bar becomes available\n * @param {StatusBar} statusBar\n */\nexport function consumeStatusBar(statusBar) {\n _statusBar = statusBar\n if (_displayStatusBarItemOnConsumption) {\n _displayStatusBarTile()\n }\n}\n\n/**\n * Displays the status bar tile\n */\nfunction _displayStatusBarTile() {\n if (!_statusBar) {\n _displayStatusBarItemOnConsumption = true\n return\n }\n if (_statusBarTile) {\n return\n }\n\n _statusBarElement = document.createElement(\"autocomplete-paths-status-bar\")\n _statusBarElement.innerHTML = \"Rebuilding paths cache...\"\n _statusBarTile = _statusBar.addRightTile({\n item: _statusBarElement,\n priority: 100,\n })\n if (!_provider) {\n // TODO check why we need this check\n getProvider()\n if (!_provider) {\n return\n }\n }\n _statusBarInterval = setInterval(() => {\n const fileCount = _provider.fileCount\n if (fileCount > 0) {\n _statusBarElement.innerHTML = `Rebuilding paths cache... ${fileCount} files`\n }\n }, 500)\n}\n\n/**\n * Hides the status bar tile\n */\nfunction _hideStatusBarTile() {\n if (_statusBarInterval) {\n clearInterval(_statusBarInterval)\n }\n if (_statusBarTile) {\n _statusBarTile.destroy()\n }\n _statusBarTile = null\n _statusBarElement = null\n}\n\nexport function getProvider() {\n if (!_provider) {\n _provider = new PathsProvider()\n _provider.on(\"rebuild-cache\", () => {\n _displayStatusBarTile()\n })\n _provider.on(\"rebuild-cache-done\", () => {\n _hideStatusBarTile()\n })\n _provider.rebuildCache()\n }\n return _provider\n}\n","\"use babel\"\n\nexport const OptionScopes = {\n enableHtmlSupport: [\n {\n scopes: [\"text.html.basic\"],\n prefixes: [\"src=['\\\"]\", \"href=['\\\"]\", \"name=['\\\"]\"],\n extensions: [\"js\", \"png\", \"gif\", \"jpeg\", \"jpg\", \"tiff\", \"html\", \"json\", \"svg\"],\n relative: true,\n },\n ],\n}\n","\"use babel\"\n\nimport { OptionScopes } from \"./option-scopes\"\n\nexport const config = {\n normalizeSlashes: {\n type: \"boolean\",\n description: \"Replaces backward slashes with forward slashes on windows (if possible)\",\n default: true,\n },\n maxFileCount: {\n type: \"number\",\n description: \"The maximum amount of files to be handled\",\n default: 2000,\n },\n suggestionPriority: {\n type: \"number\",\n description:\n \"Suggestion priority of this provider. If set to a number larger than or equal to 1, suggestions will be displayed on top of default suggestions.\",\n default: 2,\n },\n ignoredNames: {\n type: \"boolean\",\n default: true,\n description: \"Ignore items matched by the `Ignore Names` core option.\",\n },\n ignoreSubmodules: {\n type: \"boolean\",\n default: false,\n description: \"Ignore submodule directories.\",\n },\n ignoredPatterns: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"Ignore additional **glob** or file path patterns.\",\n },\n ignoreBuiltinScopes: {\n type: \"boolean\",\n default: false,\n description: \"Ignore built-in scopes and use only scopes from user configuration.\",\n },\n scopes: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n properties: {\n scopes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n prefixes: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n extensions: {\n type: [\"array\"],\n items: {\n type: \"string\",\n },\n },\n relative: {\n type: \"boolean\",\n default: true,\n },\n replaceOnInsert: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: [\"string\", \"string\"],\n },\n },\n },\n },\n },\n },\n}\n\nconst keys = Object.keys(OptionScopes)\nfor (let i = 0, len = keys.length; i < len; i++) {\n config[keys[i]] = {\n type: \"boolean\",\n default: false,\n }\n}\n","\"use babel\"\n\nimport { EventEmitter } from \"events\"\nimport path from \"path\"\nimport { intersection, flatten, max } from \"underscore\"\nimport slash from \"slash\"\nimport PathsCache from \"./paths-cache\"\nimport { score, filter } from \"zadeh\"\nimport { DefaultScopes } from \"./config/default-scopes\"\nimport { OptionScopes } from \"./config/option-scopes\"\n\nexport default class PathsProvider extends EventEmitter {\n constructor() {\n super()\n this.reloadScopes()\n\n this._pathsCache = new PathsCache()\n this._isReady = false\n\n this._onRebuildCache = this._onRebuildCache.bind(this)\n this._onRebuildCacheDone = this._onRebuildCacheDone.bind(this)\n\n this._pathsCache.on(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.on(\"rebuild-cache-done\", this._onRebuildCacheDone)\n }\n\n /**\n * Reloads the scopes\n */\n reloadScopes() {\n this._scopes = atom.config.get(\"autocomplete-paths.scopes\").slice(0) || []\n\n if (!atom.config.get(\"autocomplete-paths.ignoreBuiltinScopes\")) {\n this._scopes = this._scopes.concat(DefaultScopes)\n }\n\n for (const key in OptionScopes) {\n if (atom.config.get(`autocomplete-paths.${key}`)) {\n this._scopes = this._scopes.slice(0).concat(OptionScopes[key])\n }\n }\n }\n\n /**\n * Gets called when the PathsCache is starting to rebuild the cache\n * @private\n */\n _onRebuildCache() {\n this.emit(\"rebuild-cache\")\n }\n\n /**\n * Gets called when the PathsCache is done rebuilding the cache\n * @private\n */\n _onRebuildCacheDone() {\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Returns the suggestions for the given scope and the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Promise}\n * @private\n */\n _getSuggestionsForScope(scope, request, match) {\n const line = _getLineTextForRequest(request)\n const pathPrefix = line.substr(match.index + match[0].length)\n const trailingSlashPresent = pathPrefix.match(/[/\\\\|]$/)\n const directoryGiven = pathPrefix.indexOf(\"./\") === 0 || pathPrefix.indexOf(\"../\") === 0\n const parsedPathPrefix = path.parse(pathPrefix)\n\n // path.parse ignores trailing slashes, so we handle this manually\n if (trailingSlashPresent) {\n parsedPathPrefix.dir = path.join(parsedPathPrefix.dir, parsedPathPrefix.base)\n parsedPathPrefix.base = \"\"\n parsedPathPrefix.name = \"\"\n }\n\n const projectDirectory = _getProjectDirectory(request.editor)\n if (!projectDirectory) {\n return Promise.resolve([])\n }\n const currentDirectory = path.dirname(request.editor.getPath())\n\n const requestedDirectoryPath = path.resolve(currentDirectory, parsedPathPrefix.dir)\n\n let files = directoryGiven\n ? this._pathsCache.getFilePathsForProjectDirectory(projectDirectory, requestedDirectoryPath)\n : this._pathsCache.getFilePathsForProjectDirectory(projectDirectory)\n\n const fuzzyMatcher = directoryGiven ? parsedPathPrefix.base : pathPrefix\n\n const { extensions } = scope\n if (extensions) {\n const regex = new RegExp(`.(${extensions.join(\"|\")})$`)\n files = files.filter((pth) => regex.test(pth))\n }\n\n if (fuzzyMatcher) {\n files = filter(files, fuzzyMatcher, {\n maxResults: 10,\n })\n }\n\n const suggestions = files.map((pathName) => {\n const normalizeSlashes = atom.config.get(\"autocomplete-paths.normalizeSlashes\")\n\n const projectRelativePath = atom.project.relativizePath(pathName)[1]\n let displayText = projectRelativePath\n if (directoryGiven) {\n displayText = path.relative(requestedDirectoryPath, pathName)\n }\n if (normalizeSlashes) {\n displayText = slash(displayText)\n }\n\n // Relativize path to current file if necessary\n let relativePath = path.relative(path.dirname(request.editor.getPath()), pathName)\n if (normalizeSlashes) {\n relativePath = slash(relativePath)\n }\n if (scope.relative !== false) {\n pathName = relativePath\n if (scope.includeCurrentDirectory !== false) {\n if (pathName[0] !== \".\") {\n pathName = `./${pathName}`\n }\n }\n }\n\n if (scope.projectRelativePath) {\n pathName = slash(projectRelativePath)\n }\n\n // Replace stuff if necessary\n if (scope.replaceOnInsert) {\n // let originalPathName = pathName\n scope.replaceOnInsert.forEach(([from, to]) => {\n const regex = new RegExp(from)\n if (regex.test(pathName)) {\n pathName = pathName.replace(regex, to)\n }\n })\n }\n\n // Calculate distance to file\n const distanceToFile = relativePath.split(path.sep).length\n return {\n text: pathName,\n replacementPrefix: pathPrefix,\n displayText,\n type: \"import\",\n iconHTML: '',\n score: score(displayText, request.prefix),\n distanceToFile,\n }\n })\n\n // Modify score to incorporate distance\n const suggestionsCount = suggestions.length\n if (suggestions.length) {\n const maxDistance = max(suggestions, (s) => s.distanceToFile).distanceToFile\n suggestions.forEach((s, i) => {\n s.score = suggestionsCount - i + (maxDistance - s.distanceToFile)\n })\n\n // Sort again\n suggestions.sort((a, b) => b.score - a.score)\n }\n\n return Promise.resolve(suggestions)\n }\n\n /**\n * Returns the suggestions for the given request\n * @param {Object} request\n * @return {Promise}\n */\n async getSuggestions(request) {\n const matches = this._scopes\n .map((scope) => [scope, _scopeMatchesRequest(scope, request)])\n .filter((result) => result[1]) // Filter scopes that match\n const promises = matches.map(([scope, match]) => this._getSuggestionsForScope(scope, request, match))\n\n const suggestions = flatten(await Promise.all(promises))\n if (!suggestions.length) {\n return false\n }\n return suggestions\n }\n\n /**\n * Rebuilds the cache\n * @return {Promise}\n */\n async rebuildCache() {\n const result = await this._pathsCache.rebuildCache()\n this._isReady = true\n return result\n }\n\n isReady() {\n return this._isReady\n }\n\n get suggestionPriority() {\n return atom.config.get(\"autocomplete-paths.suggestionPriority\")\n }\n\n get fileCount() {\n return atom.project.getDirectories().reduce((accumulated, directory) => {\n const filePaths = this._pathsCache.getFilePathsForProjectDirectory(directory)\n return accumulated + filePaths.length\n }, 0)\n }\n\n /**\n * Disposes this provider\n */\n dispose() {\n this._pathsCache.removeListener(\"rebuild-cache\", this._onRebuildCache)\n this._pathsCache.removeListener(\"rebuild-cache-done\", this._onRebuildCacheDone)\n this._pathsCache.dispose(true)\n }\n}\n\nPathsProvider.prototype.selector = \"*\"\nPathsProvider.prototype.inclusionPriority = 1\n\n/**\n * Checks if the given scope config matches the given request\n * @param {Object} scope\n * @param {Object} request\n * @return {Array} The match object\n * @private\n */\nfunction _scopeMatchesRequest(scope, request) {\n const sourceScopes = Array.isArray(scope.scopes) ? scope.scopes : [scope.scopes]\n\n // Check if the scope descriptors match\n const scopeMatches = intersection(request.scopeDescriptor.getScopesArray(), sourceScopes).length > 0\n if (!scopeMatches) {\n return false\n }\n\n // Check if the line matches the prefixes\n const line = _getLineTextForRequest(request)\n\n let lineMatch = null\n const scopePrefixes = Array.isArray(scope.prefixes) ? scope.prefixes : [scope.prefixes]\n scopePrefixes.forEach((prefix) => {\n const regex = new RegExp(prefix, \"i\")\n lineMatch = lineMatch || line.match(regex)\n })\n\n return lineMatch\n}\n\n/**\n * Returns the project directory that contains the file opened in the given editor\n * @param {TextEditor} editor\n * @return {Directory}\n * @private\n */\nfunction _getProjectDirectory(editor) {\n const filePath = editor.getBuffer().getPath()\n let projectDirectory = null\n atom.project.getDirectories().forEach((directory) => {\n if (directory.contains(filePath)) {\n projectDirectory = directory\n }\n })\n return projectDirectory\n}\n\n/**\n * Returns the whole line text for the given request\n * @param {Object} request\n * @return {String}\n * @private\n */\nfunction _getLineTextForRequest(request) {\n const { editor, bufferPosition } = request\n return editor.getTextInRange([[bufferPosition.row, 0], bufferPosition])\n}\n","// Current version.\nexport var VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","\"use babel\"\nimport { EventEmitter } from \"events\"\nimport minimatch from \"minimatch\"\nimport { Directory, File } from \"atom\"\nimport { union } from \"./utils\"\nimport { globifyPath, globifyDirectory, globifyGitIgnoreFile } from \"./path-utils\"\nimport glob from \"fast-glob\"\nimport * as chokidar from \"chokidar\"\n\nexport default class PathsCache extends EventEmitter {\n constructor() {\n super()\n\n const rebuildCacheBound = this.rebuildCache.bind(this)\n this._projectChangeWatcher = atom.project.onDidChangePaths(rebuildCacheBound)\n\n const _onDidChangeFilesBound = this._onDidChangeFiles.bind(this)\n this._projectWatcher = atom.project.onDidChangeFiles(_onDidChangeFilesBound)\n\n this._repositories = []\n this._filePathsByProjectDirectory = new Map()\n this._filePathsByDirectory = new Map()\n this._fileWatchersByDirectory = new Map()\n\n this.updateConfig()\n }\n\n updateConfig() {\n this.config = {\n excludeVcsIgnoredPaths: atom.config.get(\"core.excludeVcsIgnoredPaths\"),\n ignoreSubmodules: atom.config.get(\"autocomplete-paths.ignoreSubmodules\"),\n shouldIgnoredNames: atom.config.get(\"autocomplete-paths.ignoredNames\"),\n ignoredNames: atom.config.get(\"core.ignoredNames\"),\n ignoredPatterns: atom.config.get(\"autocomplete-paths.ignoredPatterns\"),\n maxFileCount: atom.config.get(\"autocomplete-paths.maxFileCount\"),\n }\n }\n\n /**\n * Rebuilds the paths cache\n * @returns {Promise>>}\n */\n async rebuildCache() {\n this.dispose()\n\n this._cancelled = false\n this.emit(\"rebuild-cache\")\n\n await this._cacheProjectPathsAndRepositories()\n const results = await this._cachePaths()\n\n await this._addWatchers()\n\n this.emit(\"rebuild-cache-done\")\n return results\n }\n\n /**\n * Returns the file paths for the given project directory with the given (optional) relative path\n * @param {Directory} projectDirectory\n * @param {string | null} [relativeToPath=null]\n * @return {string[]}\n */\n getFilePathsForProjectDirectory(projectDirectory, relativeToPath = null) {\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n if (relativeToPath) {\n return filePaths.filter((filePath) => filePath.indexOf(relativeToPath) === 0)\n }\n return filePaths\n }\n\n /**\n * Disposes this PathsCache\n * @param {boolean} isPackageDispose\n */\n dispose(isPackageDispose) {\n this._fileWatchersByDirectory.forEach(async (watcher) => {\n await watcher.close()\n })\n this._fileWatchersByDirectory.clear()\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._repositories = []\n if (this._projectWatcher) {\n this._projectWatcher.dispose()\n this._projectWatcher = null\n }\n if (isPackageDispose && this._projectChangeWatcher) {\n this._projectChangeWatcher.dispose()\n this._projectChangeWatcher = null\n }\n }\n\n /**\n * Checks if the given path is ignored\n * @param {string} path\n * @return {boolean}\n * @private\n */\n _isPathIgnored(path) {\n let ignored = false\n if (this.config.excludeVcsIgnoredPaths) {\n this._repositories.forEach((repository) => {\n if (ignored) {\n return\n }\n const isIgnoredSubmodule = this.config.ignoreSubmodules && repository.isSubmodule(path)\n if (repository.isPathIgnored(path) || isIgnoredSubmodule) {\n ignored = true\n }\n })\n }\n\n if (this.config.shouldIgnoredNames) {\n this.config.ignoredNames.forEach((ignoredName) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredName, { matchBase: true, dot: true })\n })\n }\n\n if (this.config.ignoredPatterns) {\n this.config.ignoredPatterns.forEach((ignoredPattern) => {\n if (ignored) {\n return\n }\n ignored = ignored || minimatch(path, ignoredPattern, { dot: true })\n })\n }\n\n return ignored\n }\n\n /**\n * Caches the project paths and repositories\n * @private\n */\n async _cacheProjectPathsAndRepositories() {\n this._projectDirectories = atom.project.getDirectories()\n\n // get the repositories asynchronously\n const projectNum = this._projectDirectories.length\n const repositoriesP = new Array(projectNum)\n for (let i = 0; i < projectNum; i++) {\n repositoriesP[i] = atom.project.repositoryForDirectory(this._projectDirectories[i])\n }\n const repositories = await Promise.all(repositoriesP)\n this._repositories = repositories.filter((r) => r !== null) // filter out non-repository directories\n }\n\n /**\n * Add watchers for all the projectDirectories\n * @return {Promise}\n * @private\n */\n async _addWatchers() {\n await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._addWatcherForDirectory(projectDirectory))\n )\n }\n\n /**\n * Add a watcher for the projectDirectory\n * @param {Directory} projectDirectory\n * @private\n */\n async _addWatcherForDirectory(projectDirectory) {\n // close if already added\n let watcher = this._fileWatchersByDirectory.get(projectDirectory)\n if (watcher !== undefined && typeof watcher.close === \"function\") {\n await watcher.close()\n }\n // add a watcher to run `this._onDirectoryChanged`\n const projectPath = projectDirectory.getPath()\n const ignored = await this._getAllIgnoredGlob(projectPath)\n // TODO smarter handling of directory changes\n // TODO get paths from the watcher itself\n // TODO track gitignore file\n watcher = chokidar\n .watch([projectPath, ...ignored], {\n persistent: true,\n })\n .on(\"add\", (addedFile) => {\n this.onAddFile(projectDirectory, addedFile)\n })\n .on(\"unlink\", (removedFile) => {\n this.onRemoveFile(projectDirectory, removedFile)\n })\n .on(\"addDir\", (addedDir) => {\n this.onAddDir(projectDirectory, addedDir)\n })\n .on(\"unlinkDir\", (removedDir) => {\n this.onRemoveDir(projectDirectory, removedDir)\n })\n this._fileWatchersByDirectory.set(projectDirectory, watcher)\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param addedFile {string}\n */\n onAddFile(projectDirectory, addedFile) {\n this.emit(\"rebuild-cache\")\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n filePaths.push(addedFile)\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedFile {string}\n */\n onRemoveFile(projectDirectory, removedFile) {\n this.emit(\"rebuild-cache\")\n /** @type {string[]} */\n const filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n\n // delete the removed file\n for (let iFile = 0; iFile < filePaths.length; iFile++) {\n const file = filePaths[iFile]\n if (file === removedFile) {\n delete filePaths[iFile]\n }\n }\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param addedDir {string}\n */\n async onAddDir(projectDirectory, addedDir) {\n this.emit(\"rebuild-cache\")\n const directory = new Directory(addedDir)\n await this._cachePathsForDirectory(projectDirectory, directory)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * @param projectDirectory {Directory}\n * @param removedDir {string}\n */\n onRemoveDir(projectDirectory, removedDir) {\n this.emit(\"rebuild-cache\")\n const directory = new Directory(removedDir)\n this._removeFilePathsForDirectory(projectDirectory, directory)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Invoked when the content of the given `directory` has changed\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @returns {Promise}\n * @private\n */\n async _onDirectoryChanged(projectDirectory, directory) {\n this.emit(\"rebuild-cache\")\n this._removeFilePathsForDirectory(projectDirectory, directory)\n this._cleanWatchersForDirectory(directory)\n await this._cachePathsForDirectory(projectDirectory, directory)\n this.emit(\"rebuild-cache-done\")\n }\n\n /**\n * Removes all watchers inside the given directory\n * @param {Directory} directory\n * @private\n */\n _cleanWatchersForDirectory(directory) {\n // TODO promise all\n this._fileWatchersByDirectory.forEach(async (watcher, otherDirectory) => {\n if (directory.contains(otherDirectory.path)) {\n await await watcher.close()\n this._fileWatchersByDirectory.delete(otherDirectory)\n }\n })\n }\n\n /**\n * Removes all cached file paths in the given directory\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @private\n */\n _removeFilePathsForDirectory(projectDirectory, directory) {\n let filePaths = this._filePathsByProjectDirectory.get(projectDirectory.path)\n if (!filePaths) {\n return\n }\n\n filePaths = filePaths.filter((path) => !directory.contains(path))\n this._filePathsByProjectDirectory.set(projectDirectory.path, filePaths)\n\n this._filePathsByDirectory.delete(directory.path)\n }\n\n _onDidChangeFiles(events) {\n events\n .filter((event) => event.action !== \"modified\")\n .forEach((event) => {\n if (!this._projectDirectories) {\n return\n }\n\n const { action, path, oldPath } = event\n\n const projectDirectory = this._projectDirectories.find((pd) => path.indexOf(pd.path) === 0)\n\n if (!projectDirectory) {\n return\n }\n const directoryPath = projectDirectory.path\n const ignored = this._isPathIgnored(path)\n\n if (ignored) {\n return\n }\n\n const files = this._filePathsByProjectDirectory.get(directoryPath) || []\n\n switch (action) {\n case \"created\":\n files.push(path)\n break\n\n case \"deleted\": {\n const i = files.indexOf(path)\n if (i > -1) {\n files.splice(i, 1)\n }\n break\n }\n case \"renamed\": {\n const j = files.indexOf(oldPath)\n if (j > -1) {\n files[j] = path\n }\n break\n }\n default: {\n console.error(`unkown _onDidChangeFiles action: ${action}`)\n break\n }\n }\n\n if (!this._filePathsByProjectDirectory.has(directoryPath)) {\n this._filePathsByProjectDirectory.set(directoryPath, files)\n }\n })\n }\n\n /**\n * Caches file paths with Glob or Atom\n * @return {Promise>}\n * @private\n */\n _cachePaths() {\n try {\n return this._cachePathsWithGlob()\n } catch (e) {\n console.error(e)\n return this._cachePathsWithAtom()\n }\n }\n\n /**\n * Caches file paths for the given directory with Glob or Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise}\n * @private\n */\n _cachePathsForDirectory(projectDirectory, directory) {\n try {\n return this._cachePathsForDirectoryWithGlob(directory.path)\n } catch (e) {\n // fallback to Atom\n console.error(e)\n return this._cachePathsForDirectoryWithAtom(projectDirectory, directory)\n }\n }\n\n /*\n ██████ ██ ██████ ██████\n ██ ██ ██ ██ ██ ██\n ██ ███ ██ ██ ██ ██████\n ██ ██ ██ ██ ██ ██ ██\n ██████ ███████ ██████ ██████\n */\n\n /**\n * Builds the file cache with `glob`\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithGlob() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => this._cachePathsForDirectoryWithGlob(projectDirectory.path))\n )\n return result\n }\n\n /**\n * Returns a list of ignore patterns for a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getIgnoredPatternsGlob(directoryPath) {\n const patterns = []\n\n if (this.config.shouldIgnoredNames) {\n patterns.push(...this.config.ignoredNames)\n }\n\n if (this.config.ignoredPatterns) {\n patterns.push(...this.config.ignoredPatterns)\n }\n\n const patternsNum = patterns.length\n\n const globEntries = new Array(patternsNum)\n\n for (let iEntry = 0; iEntry < patternsNum; iEntry++) {\n const globifyOutput = await globifyPath(patterns[iEntry], directoryPath)\n\n // Check if `globifyPath` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n return globEntries\n }\n\n /**\n * Returns the glob pattern of a gitignore of a directory\n * @param {string} directoryPath\n * @returns {Promise>} an array of glob patterns\n * @private\n */\n async _getGitIgnoreGlob(directoryPath) {\n if (this.config.excludeVcsIgnoredPaths) {\n try {\n return await globifyGitIgnoreFile(directoryPath)\n } catch (err) {\n // .gitignore does not exist for this directory, ignoring\n }\n }\n return []\n }\n\n /**\n * Get all ignored glob using `this._getGitIgnoreGlob` and `this._getIgnoredPatternsGlob`\n * @param {string} directoryPath the given directory path\n * @returns {Promise}\n */\n async _getAllIgnoredGlob(directoryPath) {\n const gitignoreGlob = await this._getGitIgnoreGlob(directoryPath)\n const ignoredPatternsGlob = await this._getIgnoredPatternsGlob(directoryPath)\n return [...gitignoreGlob, ...ignoredPatternsGlob]\n }\n\n /**\n * Populates cache for the given directory\n * @param {string} directoryPath the given directory path\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithGlob(directoryPath) {\n const directoryGlob = globifyDirectory(directoryPath)\n const files = await glob(\n [directoryGlob, ...(await this._getAllIgnoredGlob(directoryPath))],\n // glob options\n {\n dot: true,\n cwd: directoryPath,\n onlyFiles: true,\n }\n )\n this._filePathsByProjectDirectory.set(directoryPath, files)\n return files\n }\n\n /*\n ███████ █████ ██ ██ ██████ █████ ██████ ██ ██\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n █████ ███████ ██ ██ ██████ ███████ ██ █████\n ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n ██ ██ ██ ███████ ███████ ██████ ██ ██ ██████ ██ ██\n */\n\n /**\n * Builds the file cache using Atom\n * @return {Promise>>}\n * @private\n */\n async _cachePathsWithAtom() {\n const result = await Promise.all(\n this._projectDirectories.map((projectDirectory) => {\n return this._cachePathsForDirectoryWithAtom(projectDirectory, projectDirectory)\n })\n )\n return result\n }\n\n /**\n * Caches file paths for the given directory with Atom\n * @param {Directory} projectDirectory\n * @param {Directory} directory\n * @return {Promise>}\n * @private\n */\n async _cachePathsForDirectoryWithAtom(projectDirectory, directory) {\n if (this._cancelled) {\n return []\n }\n\n const entries = await this._getDirectoryEntries(directory)\n if (this._cancelled) {\n return []\n }\n\n // Filter: Files and Directories that are not ignored\n const filePaths = []\n const directories = []\n for (let i = 0, len = entries.length; i < len; i++) {\n const entry = entries[i]\n if (entry instanceof File && !this._isPathIgnored(entry.path)) {\n filePaths.push(entry.path)\n } else if (entry instanceof Directory && !this._isPathIgnored(entry.path)) {\n directories.push(entry)\n }\n }\n\n // Merge file paths into existing array (which contains *all* file paths)\n let filePathsArray = this._filePathsByProjectDirectory.get(projectDirectory.path) || []\n const newPathsCount = filePathsArray.length + filePaths.length\n\n if (newPathsCount > this.config.maxFileCount && !this._cancelled) {\n atom.notifications.addError(\"autocomplete-paths\", {\n description: `Maximum file count of ${this.config.maxFileCount} has been exceeded. Path autocompletion will not work in this project.

Click here to learn more.`,\n dismissable: true,\n })\n\n this._filePathsByProjectDirectory.clear()\n this._filePathsByDirectory.clear()\n this._cancelled = true\n return\n }\n\n this._filePathsByProjectDirectory.set(projectDirectory.path, union(filePathsArray, filePaths))\n\n // Merge file paths into existing array (which contains file paths for a specific directory)\n filePathsArray = this._filePathsByDirectory.get(directory.path) || []\n this._filePathsByDirectory.set(directory.path, union(filePathsArray, filePaths))\n\n return Promise.all(directories.map((dir) => this._cachePathsForDirectoryWithAtom(projectDirectory, dir)))\n }\n}\n","module.exports = minimatch\nminimatch.Minimatch = Minimatch\n\nvar path = { sep: '/' }\ntry {\n path = require('path')\n} catch (er) {}\n\nvar GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}\nvar expand = require('brace-expansion')\n\nvar plTypes = {\n '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n '?': { open: '(?:', close: ')?' },\n '+': { open: '(?:', close: ')+' },\n '*': { open: '(?:', close: ')*' },\n '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nvar qmark = '[^/]'\n\n// * => any number of characters\nvar star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nvar twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nvar twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// characters that need to be escaped in RegExp.\nvar reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// \"abc\" -> { a:true, b:true, c:true }\nfunction charSet (s) {\n return s.split('').reduce(function (set, c) {\n set[c] = true\n return set\n }, {})\n}\n\n// normalizes slashes.\nvar slashSplit = /\\/+/\n\nminimatch.filter = filter\nfunction filter (pattern, options) {\n options = options || {}\n return function (p, i, list) {\n return minimatch(p, pattern, options)\n }\n}\n\nfunction ext (a, b) {\n a = a || {}\n b = b || {}\n var t = {}\n Object.keys(b).forEach(function (k) {\n t[k] = b[k]\n })\n Object.keys(a).forEach(function (k) {\n t[k] = a[k]\n })\n return t\n}\n\nminimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return minimatch\n\n var orig = minimatch\n\n var m = function minimatch (p, pattern, options) {\n return orig.minimatch(p, pattern, ext(def, options))\n }\n\n m.Minimatch = function Minimatch (pattern, options) {\n return new orig.Minimatch(pattern, ext(def, options))\n }\n\n return m\n}\n\nMinimatch.defaults = function (def) {\n if (!def || !Object.keys(def).length) return Minimatch\n return minimatch.defaults(def).Minimatch\n}\n\nfunction minimatch (p, pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n // \"\" only matches \"\"\n if (pattern.trim() === '') return p === ''\n\n return new Minimatch(pattern, options).match(p)\n}\n\nfunction Minimatch (pattern, options) {\n if (!(this instanceof Minimatch)) {\n return new Minimatch(pattern, options)\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError('glob pattern string required')\n }\n\n if (!options) options = {}\n pattern = pattern.trim()\n\n // windows support: need to use /, not \\\n if (path.sep !== '/') {\n pattern = pattern.split(path.sep).join('/')\n }\n\n this.options = options\n this.set = []\n this.pattern = pattern\n this.regexp = null\n this.negate = false\n this.comment = false\n this.empty = false\n\n // make the set of regexps etc.\n this.make()\n}\n\nMinimatch.prototype.debug = function () {}\n\nMinimatch.prototype.make = make\nfunction make () {\n // don't do it more than once.\n if (this._made) return\n\n var pattern = this.pattern\n var options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n var set = this.globSet = this.braceExpand()\n\n if (options.debug) this.debug = console.error\n\n this.debug(this.pattern, set)\n\n // step 3: now we have a set, so turn each one into a series of path-portion\n // matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n set = this.globParts = set.map(function (s) {\n return s.split(slashSplit)\n })\n\n this.debug(this.pattern, set)\n\n // glob --> regexps\n set = set.map(function (s, si, set) {\n return s.map(this.parse, this)\n }, this)\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n set = set.filter(function (s) {\n return s.indexOf(false) === -1\n })\n\n this.debug(this.pattern, set)\n\n this.set = set\n}\n\nMinimatch.prototype.parseNegate = parseNegate\nfunction parseNegate () {\n var pattern = this.pattern\n var negate = false\n var options = this.options\n var negateOffset = 0\n\n if (options.nonegate) return\n\n for (var i = 0, l = pattern.length\n ; i < l && pattern.charAt(i) === '!'\n ; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.substr(negateOffset)\n this.negate = negate\n}\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = function (pattern, options) {\n return braceExpand(pattern, options)\n}\n\nMinimatch.prototype.braceExpand = braceExpand\n\nfunction braceExpand (pattern, options) {\n if (!options) {\n if (this instanceof Minimatch) {\n options = this.options\n } else {\n options = {}\n }\n }\n\n pattern = typeof pattern === 'undefined'\n ? this.pattern : pattern\n\n if (typeof pattern === 'undefined') {\n throw new TypeError('undefined pattern')\n }\n\n if (options.nobrace ||\n !pattern.match(/\\{.*\\}/)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nMinimatch.prototype.parse = parse\nvar SUBPARSE = {}\nfunction parse (pattern, isSub) {\n if (pattern.length > 1024 * 64) {\n throw new TypeError('pattern is too long')\n }\n\n var options = this.options\n\n // shortcuts\n if (!options.noglobstar && pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n var re = ''\n var hasMagic = !!options.nocase\n var escaping = false\n // ? => one single character\n var patternListStack = []\n var negativeLists = []\n var stateChar\n var inClass = false\n var reClassStart = -1\n var classStart = -1\n // . and .. never match anything that doesn't start with .,\n // even when options.dot is set.\n var patternStart = pattern.charAt(0) === '.' ? '' // anything\n // not (start or / followed by . or .. followed by / or end)\n : options.dot ? '(?!(?:^|\\\\\\/)\\\\.{1,2}(?:$|\\\\\\/))'\n : '(?!\\\\.)'\n var self = this\n\n function clearStateChar () {\n if (stateChar) {\n // we had some state-tracking character\n // that wasn't consumed by this pass.\n switch (stateChar) {\n case '*':\n re += star\n hasMagic = true\n break\n case '?':\n re += qmark\n hasMagic = true\n break\n default:\n re += '\\\\' + stateChar\n break\n }\n self.debug('clearStateChar %j %j', stateChar, re)\n stateChar = false\n }\n }\n\n for (var i = 0, len = pattern.length, c\n ; (i < len) && (c = pattern.charAt(i))\n ; i++) {\n this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n // skip over any that are escaped.\n if (escaping && reSpecials[c]) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n switch (c) {\n case '/':\n // completely not allowed, even escaped.\n // Should already be path-split by now.\n return false\n\n case '\\\\':\n clearStateChar()\n escaping = true\n continue\n\n // the various stateChar values\n // for the \"extglob\" stuff.\n case '?':\n case '*':\n case '+':\n case '@':\n case '!':\n this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n // all of those are literals inside a class, except that\n // the glob [!a] means [^a] in regexp\n if (inClass) {\n this.debug(' in class')\n if (c === '!' && i === classStart + 1) c = '^'\n re += c\n continue\n }\n\n // if we already have a stateChar, then it means\n // that there was something like ** or +? in there.\n // Handle the stateChar, then proceed with this one.\n self.debug('call clearStateChar %j', stateChar)\n clearStateChar()\n stateChar = c\n // if extglob is disabled, then +(asdf|foo) isn't a thing.\n // just clear the statechar *now*, rather than even diving into\n // the patternList stuff.\n if (options.noext) clearStateChar()\n continue\n\n case '(':\n if (inClass) {\n re += '('\n continue\n }\n\n if (!stateChar) {\n re += '\\\\('\n continue\n }\n\n patternListStack.push({\n type: stateChar,\n start: i - 1,\n reStart: re.length,\n open: plTypes[stateChar].open,\n close: plTypes[stateChar].close\n })\n // negation is (?:(?!js)[^/]*)\n re += stateChar === '!' ? '(?:(?!(?:' : '(?:'\n this.debug('plType %j %j', stateChar, re)\n stateChar = false\n continue\n\n case ')':\n if (inClass || !patternListStack.length) {\n re += '\\\\)'\n continue\n }\n\n clearStateChar()\n hasMagic = true\n var pl = patternListStack.pop()\n // negation is (?:(?!js)[^/]*)\n // The others are (?:)\n re += pl.close\n if (pl.type === '!') {\n negativeLists.push(pl)\n }\n pl.reEnd = re.length\n continue\n\n case '|':\n if (inClass || !patternListStack.length || escaping) {\n re += '\\\\|'\n escaping = false\n continue\n }\n\n clearStateChar()\n re += '|'\n continue\n\n // these are mostly the same in regexp and glob\n case '[':\n // swallow any state-tracking char before the [\n clearStateChar()\n\n if (inClass) {\n re += '\\\\' + c\n continue\n }\n\n inClass = true\n classStart = i\n reClassStart = re.length\n re += c\n continue\n\n case ']':\n // a right bracket shall lose its special\n // meaning and represent itself in\n // a bracket expression if it occurs\n // first in the list. -- POSIX.2 2.8.3.2\n if (i === classStart + 1 || !inClass) {\n re += '\\\\' + c\n escaping = false\n continue\n }\n\n // handle the case where we left a class open.\n // \"[z-a]\" is valid, equivalent to \"\\[z-a\\]\"\n if (inClass) {\n // split where the last [ was, make sure we don't have\n // an invalid re. if so, re-walk the contents of the\n // would-be class to re-translate any characters that\n // were passed through as-is\n // TODO: It would probably be faster to determine this\n // without a try/catch and a new RegExp, but it's tricky\n // to do safely. For now, this is safe and works.\n var cs = pattern.substring(classStart + 1, i)\n try {\n RegExp('[' + cs + ']')\n } catch (er) {\n // not a valid class!\n var sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0] + '\\\\]'\n hasMagic = hasMagic || sp[1]\n inClass = false\n continue\n }\n }\n\n // finish up the class.\n hasMagic = true\n inClass = false\n re += c\n continue\n\n default:\n // swallow any state char that wasn't consumed\n clearStateChar()\n\n if (escaping) {\n // no need\n escaping = false\n } else if (reSpecials[c]\n && !(c === '^' && inClass)) {\n re += '\\\\'\n }\n\n re += c\n\n } // switch\n } // for\n\n // handle the case where we left a class open.\n // \"[abc\" is valid, equivalent to \"\\[abc\"\n if (inClass) {\n // split where the last [ was, and escape it\n // this is a huge pita. We now have to re-walk\n // the contents of the would-be class to re-translate\n // any characters that were passed through as-is\n cs = pattern.substr(classStart + 1)\n sp = this.parse(cs, SUBPARSE)\n re = re.substr(0, reClassStart) + '\\\\[' + sp[0]\n hasMagic = hasMagic || sp[1]\n }\n\n // handle the case where we had a +( thing at the *end*\n // of the pattern.\n // each pattern list stack adds 3 chars, and we need to go through\n // and escape any | chars that were passed through as-is for the regexp.\n // Go through and escape them, taking care not to double-escape any\n // | chars that were already escaped.\n for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n var tail = re.slice(pl.reStart + pl.open.length)\n this.debug('setting tail', re, pl)\n // maybe some even number of \\, then maybe 1 \\, followed by a |\n tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, function (_, $1, $2) {\n if (!$2) {\n // the | isn't already escaped, so escape it.\n $2 = '\\\\'\n }\n\n // need to escape all those slashes *again*, without escaping the\n // one that we need for escaping the | character. As it works out,\n // escaping an even number of slashes can be done by simply repeating\n // it exactly after itself. That's why this trick works.\n //\n // I am sorry that you have to see this.\n return $1 + $1 + $2 + '|'\n })\n\n this.debug('tail=%j\\n %s', tail, tail, pl, re)\n var t = pl.type === '*' ? star\n : pl.type === '?' ? qmark\n : '\\\\' + pl.type\n\n hasMagic = true\n re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n }\n\n // handle trailing things that only matter at the very end.\n clearStateChar()\n if (escaping) {\n // trailing \\\\\n re += '\\\\\\\\'\n }\n\n // only need to apply the nodot start if the re starts with\n // something that could conceivably capture a dot\n var addPatternStart = false\n switch (re.charAt(0)) {\n case '.':\n case '[':\n case '(': addPatternStart = true\n }\n\n // Hack to work around lack of negative lookbehind in JS\n // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n // like 'a.xyz.yz' doesn't match. So, the first negative\n // lookahead, has to look ALL the way ahead, to the end of\n // the pattern.\n for (var n = negativeLists.length - 1; n > -1; n--) {\n var nl = negativeLists[n]\n\n var nlBefore = re.slice(0, nl.reStart)\n var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)\n var nlAfter = re.slice(nl.reEnd)\n\n nlLast += nlAfter\n\n // Handle nested stuff like *(*.js|!(*.json)), where open parens\n // mean that we should *not* include the ) in the bit that is considered\n // \"after\" the negated section.\n var openParensBefore = nlBefore.split('(').length - 1\n var cleanAfter = nlAfter\n for (i = 0; i < openParensBefore; i++) {\n cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n }\n nlAfter = cleanAfter\n\n var dollar = ''\n if (nlAfter === '' && isSub !== SUBPARSE) {\n dollar = '$'\n }\n var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast\n re = newRe\n }\n\n // if the re is not \"\" at this point, then we need to make sure\n // it doesn't match against an empty path part.\n // Otherwise a/* will match a/, which it should not.\n if (re !== '' && hasMagic) {\n re = '(?=.)' + re\n }\n\n if (addPatternStart) {\n re = patternStart + re\n }\n\n // parsing just a piece of a larger pattern.\n if (isSub === SUBPARSE) {\n return [re, hasMagic]\n }\n\n // skip the regexp for non-magical patterns\n // unescape anything in it, though, so that it'll be\n // an exact match against a file etc.\n if (!hasMagic) {\n return globUnescape(pattern)\n }\n\n var flags = options.nocase ? 'i' : ''\n try {\n var regExp = new RegExp('^' + re + '$', flags)\n } catch (er) {\n // If it was an invalid regular expression, then it can't match\n // anything. This trick looks for a character after the end of\n // the string, which is of course impossible, except in multi-line\n // mode, but it's not a /m regex.\n return new RegExp('$.')\n }\n\n regExp._glob = pattern\n regExp._src = re\n\n return regExp\n}\n\nminimatch.makeRe = function (pattern, options) {\n return new Minimatch(pattern, options || {}).makeRe()\n}\n\nMinimatch.prototype.makeRe = makeRe\nfunction makeRe () {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n var set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n var options = this.options\n\n var twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot\n var flags = options.nocase ? 'i' : ''\n\n var re = set.map(function (pattern) {\n return pattern.map(function (p) {\n return (p === GLOBSTAR) ? twoStar\n : (typeof p === 'string') ? regExpEscape(p)\n : p._src\n }).join('\\\\\\/')\n }).join('|')\n\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^(?:' + re + ')$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').*$'\n\n try {\n this.regexp = new RegExp(re, flags)\n } catch (ex) {\n this.regexp = false\n }\n return this.regexp\n}\n\nminimatch.match = function (list, pattern, options) {\n options = options || {}\n var mm = new Minimatch(pattern, options)\n list = list.filter(function (f) {\n return mm.match(f)\n })\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\n\nMinimatch.prototype.match = match\nfunction match (f, partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) return false\n if (this.empty) return f === ''\n\n if (f === '/' && partial) return true\n\n var options = this.options\n\n // windows: need to use /, not \\\n if (path.sep !== '/') {\n f = f.split(path.sep).join('/')\n }\n\n // treat the test path as a set of pathparts.\n f = f.split(slashSplit)\n this.debug(this.pattern, 'split', f)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n var set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n var filename\n var i\n for (i = f.length - 1; i >= 0; i--) {\n filename = f[i]\n if (filename) break\n }\n\n for (i = 0; i < set.length; i++) {\n var pattern = set[i]\n var file = f\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n var hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) return true\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) return false\n return this.negate\n}\n\n// set partial to true to test if, for example,\n// \"/a/b\" matches the start of \"/*/b/*/d\"\n// Partial means, if you run out of file before you run\n// out of pattern, then that's fine, as long as all\n// the parts match.\nMinimatch.prototype.matchOne = function (file, pattern, partial) {\n var options = this.options\n\n this.debug('matchOne',\n { 'this': this, file: file, pattern: pattern })\n\n this.debug('matchOne', file.length, pattern.length)\n\n for (var fi = 0,\n pi = 0,\n fl = file.length,\n pl = pattern.length\n ; (fi < fl) && (pi < pl)\n ; fi++, pi++) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n if (p === false) return false\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (file[fi] === '.' || file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')) return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (swallowee === '.' || swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n // If there's more *pattern* left, then\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) return true\n }\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n var hit\n if (typeof p === 'string') {\n if (options.nocase) {\n hit = f.toLowerCase() === p.toLowerCase()\n } else {\n hit = f === p\n }\n this.debug('string match', p, f, hit)\n } else {\n hit = f.match(p)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')\n return emptyFileEnd\n }\n\n // should be unreachable.\n throw new Error('wtf?')\n}\n\n// replace stuff like \\* with *\nfunction globUnescape (s) {\n return s.replace(/\\\\(.)/g, '$1')\n}\n\nfunction regExpEscape (s) {\n return s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","\"use babel\"\n\n// exec\nimport { exec as execRaw } from \"child_process\"\nimport { promisify } from \"util\"\nexport const exec = promisify(execRaw)\nimport { constants } from \"buffer\"\nexport const MAX_STRING_LENGTH = constants.MAX_STRING_LENGTH\n\n// fast merge function\n// https://uilicious.com/blog/javascript-array-push-is-945x-faster-than-array-concat/\nexport function merge(arr1: Array, arr2: Array) {\n if (!arr2.length) {\n return\n }\n Array.prototype.push.apply(arr1, arr2)\n}\n\n// get unique entries of an array\nexport function unique(arr: Array) {\n return [...new Set(arr)]\n}\n\n// fast union function (replacement for _.union)\nexport function union(arr1: Array, arr2: Array) {\n merge(arr1, arr2)\n return unique(arr1)\n}\n","import path from \"path\"\nimport { promises } from \"fs\"\nconst { readFile, stat } = promises\n\nimport isPath from \"is-valid-path\"\n\nimport { unique } from \"./utils\"\n\n/** Converts given path to Posix (replacing \\\\ with /)\n * @param {string} givenPath Path to convert\n * @returns {string} Converted filepath\n */\nexport function posixifyPath(givenPath) {\n return path.normalize(givenPath).replace(/\\\\/g, \"/\")\n}\n\n/** Converts given path to Posix (replacing \\\\ with /) and removing ending slashes\n * @param {string} givenPath Path to convert\n * @returns {string} Converted filepath\n */\nexport function posixifyPathNormalized(givenPath) {\n return posixifyPath(givenPath).replace(/\\/$/, \"\")\n}\n\n/**\n * @param {string} givenPath The given path to be globified\n * @param {string} givenDirectory [process.cwd()] The cwd to use to resolve relative pathnames\n * @returns {Promise} The glob path or the file path itself\n */\nexport function globifyPath(givenPath, givenDirectory = process.cwd()) {\n return globifyGitIgnoreEntry(posixifyPath(givenPath), givenDirectory)\n}\n\n/**\n * Globifies a directory\n * @param {string} givenDirectory The given directory to be globified\n */\nexport function globifyDirectory(givenDirectory) {\n return `${posixifyPathNormalized(givenDirectory)}/**`\n}\n\n/**\n * Parse and globy the `.gitingore` file that exists in a directry\n * @param {string} gitIgnoreDirectory The given directory that has the `.gitignore` file\n * @returns {Promise>} an array of glob patterns\n */\nexport async function globifyGitIgnoreFile(gitIgnoreDirectory) {\n return globifyGitIgnore(await readFile(path.join(gitIgnoreDirectory, \".gitignore\"), \"utf-8\"), gitIgnoreDirectory)\n}\n\n/**\n * Read `.gitingore` file from a directry\n * @param {string} gitIgnoreContent the content of the gitignore file\n * @param {string | undefined} gitIgnoreDirectory the directory of gitignore\n * @returns {Promise>} an array of glob patterns\n */\nexport async function globifyGitIgnore(gitIgnoreContent, gitIgnoreDirectory = undefined) {\n const gitIgnoreEntries = gitIgnoreContent\n .split(\"\\n\")\n // Remove empty lines and comments.\n .filter((entry) => !(isWhitespace(entry) || isGitIgnoreComment(entry, \"#\")))\n // Remove surrounding whitespace\n .map((entry) => trimWhiteSpace(entry))\n\n const gitIgnoreEntriesNum = gitIgnoreEntries.length\n\n const globEntries = new Array(gitIgnoreEntriesNum)\n\n for (let iEntry = 0; iEntry < gitIgnoreEntriesNum; iEntry++) {\n const globifyOutput = await globifyGitIgnoreEntry(gitIgnoreEntries[iEntry], gitIgnoreDirectory)\n\n // Check if `globifyGitIgnoreEntry` returns a pair or a string\n if (typeof globifyOutput === \"string\") {\n // string\n globEntries[iEntry] = globifyOutput // Place the entry in the output array\n } else {\n // pair\n globEntries[iEntry] = globifyOutput[0] // Place the entry in the output array\n globEntries.push(globifyOutput[1]) // Push the additional entry\n }\n }\n\n // unique in the end\n return unique(globEntries)\n}\n\n/**\n * @param {string} gitIgnoreEntry one git ignore entry (it expects a valid non-comment gitignore entry with no surrounding whitespace)\n * @param {string | undefined} gitIgnoreDirectory the directory of gitignore\n * @returns {Promise} the equivilant glob\n */\nasync function globifyGitIgnoreEntry(gitIgnoreEntry, gitIgnoreDirectory) {\n // output glob entry\n let entry = gitIgnoreEntry\n\n // Process the entry beginning\n\n // '!' in .gitignore means to force include the pattern\n // remove \"!\" to allow the processing of the pattern and swap ! in the end of the loop\n let forceInclude = false\n if (entry[0] === \"!\") {\n entry = entry.substring(1)\n forceInclude = true\n }\n\n // If there is a separator at the beginning or middle (or both) of the pattern,\n // then the pattern is relative to the directory level of the particular .gitignore file itself\n\n // Process slash\n\n /** @type {PATH_TYPE.OTHER | PATH_TYPE.DIRECTORY | PATH_TYPE.FILE} */\n let pathType = PATH_TYPE.OTHER\n\n if (entry[0] === \"/\") {\n // Patterns starting with '/' in gitignore are considred relative to the project directory while glob\n // treats them as relative to the OS root directory.\n // So we trim the slash to make it relative to project folder from glob perspective.\n entry = entry.substring(1)\n // Check if it is a directory or file\n if (await isPath(entry)) {\n pathType = await getPathType(gitIgnoreDirectory ? path.join(gitIgnoreDirectory, entry) : entry)\n }\n } else {\n const slashPlacement = entry.indexOf(\"/\")\n if (slashPlacement === -1) {\n // Patterns that don't have `/` are '**/' from glob perspective (can match at any level)\n if (!entry.startsWith(\"**/\")) {\n entry = `**/${entry}`\n }\n } else if (slashPlacement === entry.length - 1) {\n // If there is a separator at the end of the pattern then it only matches directories\n // slash is in the end\n pathType = PATH_TYPE.DIRECTORY\n } else {\n // has `/` in the middle so it is a relative path\n // Check if it is a directory or file\n if (await isPath(entry)) {\n pathType = await getPathType(gitIgnoreDirectory ? path.join(gitIgnoreDirectory, entry) : entry)\n }\n }\n }\n\n // prepend the absolute root directory\n if (gitIgnoreDirectory) {\n entry = `${posixifyPath(gitIgnoreDirectory)}/${entry}`\n }\n\n // swap !\n entry = forceInclude ? entry : `!${entry}`\n\n // Process the entry ending\n if (pathType === PATH_TYPE.DIRECTORY) {\n // in glob this is equal to `directry/**`\n if (entry.endsWith(\"/\")) {\n return `${entry}**`\n } else {\n return `${entry}/**`\n }\n } else if (pathType === PATH_TYPE.FILE) {\n // return as is for file\n return entry\n } else if (!entry.endsWith(\"/**\")) {\n // the pattern can match both files and directories\n // so we should include both `entry` and `entry/**`\n return [entry, `${entry}/**`]\n } else {\n return entry\n }\n}\n\nfunction isWhitespace(str) {\n return /^\\s*$/.test(str)\n}\n\n/**\n * A line starting with # serves as a comment.\n * Put a backslash (\"\\\") in front of the first hash for patterns that begin with a hash.\n */\nfunction isGitIgnoreComment(pattern) {\n return pattern[0] === \"#\"\n}\n\n/**\n * Trailing spaces should be removed unless they are quoted with backslash (\"\\ \").\n */\nfunction trimTrailingWhitespace(str) {\n if (!/\\\\\\s+$/.test(str)) {\n // No escaped trailing whitespace, remove\n return str.replace(/\\s+$/, \"\")\n } else {\n // Trailing whitespace detected, remove only the backslash\n return str.replace(/\\\\(\\s+)$/, \"$1\")\n }\n}\n\n/** Remove leading whitespace */\nfunction trimLeadingWhiteSpace(str) {\n return str.replace(/^\\s+/, \"\")\n}\n\n/** Remove whitespace from a gitignore entry */\nfunction trimWhiteSpace(str) {\n return trimLeadingWhiteSpace(trimTrailingWhitespace(str))\n}\n\n/** Enum that specifies the path type. 1 for directory, 2 for file, 0 for others */\nconst PATH_TYPE = {\n OTHER: 0,\n DIRECTORY: 1,\n FILE: 2,\n}\n\n/** Get the type of the given path\n * @param {string} givenPath absolute path\n * @returns {Promise}\n */\nasync function getPathType(filepath) {\n let pathStat\n try {\n pathStat = await stat(filepath)\n } catch (error) {\n return PATH_TYPE.OTHER\n }\n if (pathStat.isDirectory()) {\n return PATH_TYPE.DIRECTORY\n } else if (pathStat.isFile()) {\n return PATH_TYPE.FILE\n }\n return PATH_TYPE.OTHER\n}\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n return typeof str === 'string'\n && /[@?!+*]\\(/.test(str);\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\n\nmodule.exports = function isGlob(str) {\n return typeof str === 'string'\n && (/[*!?{}(|)[\\]]/.test(str)\n || isExtglob(str));\n};","/*!\n * is-invalid-path \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isGlob = require('is-glob');\nvar re = /[‘“!#$%&+^<=>`]/;\n\nmodule.exports = function (str) {\n return (typeof str !== 'string') || isGlob(str) || re.test(str);\n};\n","/*!\n * is-valid-path \n *\n * Copyright (c) 2015 Jon Schlinkert, contributors.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nvar isInvalidPath = require('is-invalid-path');\n\nmodule.exports = function (str) {\n return isInvalidPath(str) === false;\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\r\nconst utils = require(\"../utils\");\r\nfunction generate(patterns, settings) {\r\n const positivePatterns = getPositivePatterns(patterns);\r\n const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);\r\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\r\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\r\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\r\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\r\n return staticTasks.concat(dynamicTasks);\r\n}\r\nexports.generate = generate;\r\nfunction convertPatternsToTasks(positive, negative, dynamic) {\r\n const positivePatternsGroup = groupPatternsByBaseDirectory(positive);\r\n // When we have a global group – there is no reason to divide the patterns into independent tasks.\r\n // In this case, the global task covers the rest.\r\n if ('.' in positivePatternsGroup) {\r\n const task = convertPatternGroupToTask('.', positive, negative, dynamic);\r\n return [task];\r\n }\r\n return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic);\r\n}\r\nexports.convertPatternsToTasks = convertPatternsToTasks;\r\nfunction getPositivePatterns(patterns) {\r\n return utils.pattern.getPositivePatterns(patterns);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getNegativePatternsAsPositive(patterns, ignore) {\r\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\r\n const positive = negative.map(utils.pattern.convertToPositivePattern);\r\n return positive;\r\n}\r\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\r\nfunction groupPatternsByBaseDirectory(patterns) {\r\n const group = {};\r\n return patterns.reduce((collection, pattern) => {\r\n const base = utils.pattern.getBaseDirectory(pattern);\r\n if (base in collection) {\r\n collection[base].push(pattern);\r\n }\r\n else {\r\n collection[base] = [pattern];\r\n }\r\n return collection;\r\n }, group);\r\n}\r\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\r\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\r\n return Object.keys(positive).map((base) => {\r\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\r\n });\r\n}\r\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\r\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\r\n return {\r\n dynamic,\r\n positive,\r\n negative,\r\n base,\r\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\r\n };\r\n}\r\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\r\nconst array = require(\"./array\");\r\nexports.array = array;\r\nconst errno = require(\"./errno\");\r\nexports.errno = errno;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\nconst path = require(\"./path\");\r\nexports.path = path;\r\nconst pattern = require(\"./pattern\");\r\nexports.pattern = pattern;\r\nconst stream = require(\"./stream\");\r\nexports.stream = stream;\r\nconst string = require(\"./string\");\r\nexports.string = string;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.splitWhen = exports.flatten = void 0;\r\nfunction flatten(items) {\r\n return items.reduce((collection, item) => [].concat(collection, item), []);\r\n}\r\nexports.flatten = flatten;\r\nfunction splitWhen(items, predicate) {\r\n const result = [[]];\r\n let groupIndex = 0;\r\n for (const item of items) {\r\n if (predicate(item)) {\r\n groupIndex++;\r\n result[groupIndex] = [];\r\n }\r\n else {\r\n result[groupIndex].push(item);\r\n }\r\n }\r\n return result;\r\n}\r\nexports.splitWhen = splitWhen;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEnoentCodeError = void 0;\r\nfunction isEnoentCodeError(error) {\r\n return error.code === 'ENOENT';\r\n}\r\nexports.isEnoentCodeError = isEnoentCodeError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\r\nconst path = require(\"path\");\r\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\r\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\r\n/**\r\n * Designed to work only with simple paths: `dir\\\\file`.\r\n */\r\nfunction unixify(filepath) {\r\n return filepath.replace(/\\\\/g, '/');\r\n}\r\nexports.unixify = unixify;\r\nfunction makeAbsolute(cwd, filepath) {\r\n return path.resolve(cwd, filepath);\r\n}\r\nexports.makeAbsolute = makeAbsolute;\r\nfunction escape(pattern) {\r\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\r\n}\r\nexports.escape = escape;\r\nfunction removeLeadingDotSegment(entry) {\r\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\r\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\r\n if (entry.charAt(0) === '.') {\r\n const secondCharactery = entry.charAt(1);\r\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\r\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\r\n }\r\n }\r\n return entry;\r\n}\r\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\r\nconst path = require(\"path\");\r\nconst globParent = require(\"glob-parent\");\r\nconst micromatch = require(\"micromatch\");\r\nconst picomatch = require(\"picomatch\");\r\nconst GLOBSTAR = '**';\r\nconst ESCAPE_SYMBOL = '\\\\';\r\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\r\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[.*]/;\r\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\(.*\\|.*\\)/;\r\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\(.*\\)/;\r\nconst BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\\.\\.).*}/;\r\nfunction isStaticPattern(pattern, options = {}) {\r\n return !isDynamicPattern(pattern, options);\r\n}\r\nexports.isStaticPattern = isStaticPattern;\r\nfunction isDynamicPattern(pattern, options = {}) {\r\n /**\r\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\r\n * An empty string cannot be a dynamic pattern.\r\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\r\n */\r\n if (pattern === '') {\r\n return false;\r\n }\r\n /**\r\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\r\n * filepath directly (without read directory).\r\n */\r\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\r\n return true;\r\n }\r\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isDynamicPattern = isDynamicPattern;\r\nfunction convertToPositivePattern(pattern) {\r\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\r\n}\r\nexports.convertToPositivePattern = convertToPositivePattern;\r\nfunction convertToNegativePattern(pattern) {\r\n return '!' + pattern;\r\n}\r\nexports.convertToNegativePattern = convertToNegativePattern;\r\nfunction isNegativePattern(pattern) {\r\n return pattern.startsWith('!') && pattern[1] !== '(';\r\n}\r\nexports.isNegativePattern = isNegativePattern;\r\nfunction isPositivePattern(pattern) {\r\n return !isNegativePattern(pattern);\r\n}\r\nexports.isPositivePattern = isPositivePattern;\r\nfunction getNegativePatterns(patterns) {\r\n return patterns.filter(isNegativePattern);\r\n}\r\nexports.getNegativePatterns = getNegativePatterns;\r\nfunction getPositivePatterns(patterns) {\r\n return patterns.filter(isPositivePattern);\r\n}\r\nexports.getPositivePatterns = getPositivePatterns;\r\nfunction getBaseDirectory(pattern) {\r\n return globParent(pattern, { flipBackslashes: false });\r\n}\r\nexports.getBaseDirectory = getBaseDirectory;\r\nfunction hasGlobStar(pattern) {\r\n return pattern.includes(GLOBSTAR);\r\n}\r\nexports.hasGlobStar = hasGlobStar;\r\nfunction endsWithSlashGlobStar(pattern) {\r\n return pattern.endsWith('/' + GLOBSTAR);\r\n}\r\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\r\nfunction isAffectDepthOfReadingPattern(pattern) {\r\n const basename = path.basename(pattern);\r\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\r\n}\r\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\r\nfunction expandPatternsWithBraceExpansion(patterns) {\r\n return patterns.reduce((collection, pattern) => {\r\n return collection.concat(expandBraceExpansion(pattern));\r\n }, []);\r\n}\r\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\r\nfunction expandBraceExpansion(pattern) {\r\n return micromatch.braces(pattern, {\r\n expand: true,\r\n nodupes: true\r\n });\r\n}\r\nexports.expandBraceExpansion = expandBraceExpansion;\r\nfunction getPatternParts(pattern, options) {\r\n let { parts } = picomatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\r\n /**\r\n * The scan method returns an empty array in some cases.\r\n * See micromatch/picomatch#58 for more details.\r\n */\r\n if (parts.length === 0) {\r\n parts = [pattern];\r\n }\r\n /**\r\n * The scan method does not return an empty part for the pattern with a forward slash.\r\n * This is another part of micromatch/picomatch#58.\r\n */\r\n if (parts[0].startsWith('/')) {\r\n parts[0] = parts[0].slice(1);\r\n parts.unshift('');\r\n }\r\n return parts;\r\n}\r\nexports.getPatternParts = getPatternParts;\r\nfunction makeRe(pattern, options) {\r\n return micromatch.makeRe(pattern, options);\r\n}\r\nexports.makeRe = makeRe;\r\nfunction convertPatternsToRe(patterns, options) {\r\n return patterns.map((pattern) => makeRe(pattern, options));\r\n}\r\nexports.convertPatternsToRe = convertPatternsToRe;\r\nfunction matchAny(entry, patternsRe) {\r\n return patternsRe.some((patternRe) => patternRe.test(entry));\r\n}\r\nexports.matchAny = matchAny;\r\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictRegex = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/;\nvar relaxedRegex = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var regex = strictRegex;\n var match;\n\n // optionally relax regex\n if (options && options.strict === false) {\n regex = relaxedRegex;\n }\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n var idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n var open = match[1];\n var close = open ? chars[open] : null;\n if (open && close) {\n var n = str.indexOf(close, idx);\n if (n !== -1) {\n idx = n + 1;\n }\n }\n\n str = str.slice(idx);\n }\n return false;\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return parsed.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${parsed.output})${append}`;\n if (parsed && parsed.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = parsed;\n }\n\n return regex;\n};\n\npicomatch.makeRe = (input, options, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n const opts = options || {};\n let parsed = { negated: false, fastpaths: true };\n let prefix = '';\n let output;\n\n if (input.startsWith('./')) {\n input = input.slice(2);\n prefix = parsed.prefix = './';\n }\n\n if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n output = parse.fastpaths(input, options);\n }\n\n if (output === undefined) {\n parsed = parse(input, options);\n parsed.prefix = prefix + (parsed.prefix || '');\n } else {\n parsed.output = output;\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), and `negated` (true if the path starts with `!`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = (opts) => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index];\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance() || '';\n } else {\n value += advance() || '';\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = (opts) => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.merge = void 0;\r\nconst merge2 = require(\"merge2\");\r\nfunction merge(streams) {\r\n const mergedStream = merge2(streams);\r\n streams.forEach((stream) => {\r\n stream.once('error', (error) => mergedStream.emit('error', error));\r\n });\r\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\r\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\r\n return mergedStream;\r\n}\r\nexports.merge = merge;\r\nfunction propagateCloseEventToSources(streams) {\r\n streams.forEach((stream) => stream.emit('close'));\r\n}\r\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isEmpty = exports.isString = void 0;\r\nfunction isString(input) {\r\n return typeof input === 'string';\r\n}\r\nexports.isString = isString;\r\nfunction isEmpty(input) {\r\n return input === '';\r\n}\r\nexports.isEmpty = isEmpty;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderAsync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = [];\r\n return new Promise((resolve, reject) => {\r\n const stream = this.api(root, task, options);\r\n stream.once('error', reject);\r\n stream.on('data', (entry) => entries.push(options.transform(entry)));\r\n stream.once('end', () => resolve(entries));\r\n });\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderAsync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderStream extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkStream = fsWalk.walkStream;\r\n this._stat = fsStat.stat;\r\n }\r\n dynamic(root, options) {\r\n return this._walkStream(root, options);\r\n }\r\n static(patterns, options) {\r\n const filepaths = patterns.map(this._getFullEntryPath, this);\r\n const stream = new stream_1.PassThrough({ objectMode: true });\r\n stream._write = (index, _enc, done) => {\r\n return this._getEntry(filepaths[index], patterns[index], options)\r\n .then((entry) => {\r\n if (entry !== null && options.entryFilter(entry)) {\r\n stream.push(entry);\r\n }\r\n if (index === filepaths.length - 1) {\r\n stream.end();\r\n }\r\n done();\r\n })\r\n .catch(done);\r\n };\r\n for (let i = 0; i < filepaths.length; i++) {\r\n stream.write(i);\r\n }\r\n return stream;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n return this._getStat(filepath)\r\n .then((stats) => this._makeEntry(stats, pattern))\r\n .catch((error) => {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n });\r\n }\r\n _getStat(filepath) {\r\n return new Promise((resolve, reject) => {\r\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\r\n return error === null ? resolve(stats) : reject(error);\r\n });\r\n });\r\n }\r\n}\r\nexports.default = ReaderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.statSync = exports.stat = exports.Settings = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.stat = stat;\r\nfunction statSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.statSync = statSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings, callback) {\r\n settings.fs.lstat(path, (lstatError, lstat) => {\r\n if (lstatError !== null) {\r\n return callFailureCallback(callback, lstatError);\r\n }\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n settings.fs.stat(path, (statError, stat) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return callFailureCallback(callback, statError);\r\n }\r\n return callSuccessCallback(callback, lstat);\r\n }\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n callSuccessCallback(callback, stat);\r\n });\r\n });\r\n}\r\nexports.read = read;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.read = void 0;\r\nfunction read(path, settings) {\r\n const lstat = settings.fs.lstatSync(path);\r\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\r\n return lstat;\r\n }\r\n try {\r\n const stat = settings.fs.statSync(path);\r\n if (settings.markSymbolicLink) {\r\n stat.isSymbolicLink = () => true;\r\n }\r\n return stat;\r\n }\r\n catch (error) {\r\n if (!settings.throwErrorOnBrokenSymbolicLink) {\r\n return lstat;\r\n }\r\n throw error;\r\n }\r\n}\r\nexports.read = read;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\r\n }\r\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\r\n}\r\nexports.walk = walk;\r\nfunction walkSync(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new sync_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkSync = walkSync;\r\nfunction walkStream(directory, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n const provider = new stream_1.default(directory, settings);\r\n return provider.read();\r\n}\r\nexports.walkStream = walkStream;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst async_1 = require(\"../readers/async\");\r\nclass AsyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._storage = new Set();\r\n }\r\n read(callback) {\r\n this._reader.onError((error) => {\r\n callFailureCallback(callback, error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._storage.add(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n callSuccessCallback(callback, [...this._storage]);\r\n });\r\n this._reader.read();\r\n }\r\n}\r\nexports.default = AsyncProvider;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, entries) {\r\n callback(null, entries);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst events_1 = require(\"events\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst fastq = require(\"fastq\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass AsyncReader extends reader_1.default {\r\n constructor(_root, _settings) {\r\n super(_root, _settings);\r\n this._settings = _settings;\r\n this._scandir = fsScandir.scandir;\r\n this._emitter = new events_1.EventEmitter();\r\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n this._queue.drain = () => {\r\n if (!this._isFatalError) {\r\n this._emitter.emit('end');\r\n }\r\n };\r\n }\r\n read() {\r\n this._isFatalError = false;\r\n this._isDestroyed = false;\r\n setImmediate(() => {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n });\r\n return this._emitter;\r\n }\r\n get isDestroyed() {\r\n return this._isDestroyed;\r\n }\r\n destroy() {\r\n if (this._isDestroyed) {\r\n throw new Error('The reader is already destroyed');\r\n }\r\n this._isDestroyed = true;\r\n this._queue.killAndDrain();\r\n }\r\n onEntry(callback) {\r\n this._emitter.on('entry', callback);\r\n }\r\n onError(callback) {\r\n this._emitter.once('error', callback);\r\n }\r\n onEnd(callback) {\r\n this._emitter.once('end', callback);\r\n }\r\n _pushToQueue(directory, base) {\r\n const queueItem = { directory, base };\r\n this._queue.push(queueItem, (error) => {\r\n if (error !== null) {\r\n this._handleError(error);\r\n }\r\n });\r\n }\r\n _worker(item, done) {\r\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\r\n if (error !== null) {\r\n return done(error, undefined);\r\n }\r\n for (const entry of entries) {\r\n this._handleEntry(entry, item.base);\r\n }\r\n done(null, undefined);\r\n });\r\n }\r\n _handleError(error) {\r\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n this._isFatalError = true;\r\n this._isDestroyed = true;\r\n this._emitter.emit('error', error);\r\n }\r\n _handleEntry(entry, base) {\r\n if (this._isDestroyed || this._isFatalError) {\r\n return;\r\n }\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._emitEntry(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _emitEntry(entry) {\r\n this._emitter.emit('entry', entry);\r\n }\r\n}\r\nexports.default = AsyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\r\nconst async = require(\"./providers/async\");\r\nconst sync = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nexports.Settings = settings_1.default;\r\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\r\n if (typeof optionsOrSettingsOrCallback === 'function') {\r\n return async.read(path, getSettings(), optionsOrSettingsOrCallback);\r\n }\r\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\r\n}\r\nexports.scandir = scandir;\r\nfunction scandirSync(path, optionsOrSettings) {\r\n const settings = getSettings(optionsOrSettings);\r\n return sync.read(path, settings);\r\n}\r\nexports.scandirSync = scandirSync;\r\nfunction getSettings(settingsOrOptions = {}) {\r\n if (settingsOrOptions instanceof settings_1.default) {\r\n return settingsOrOptions;\r\n }\r\n return new settings_1.default(settingsOrOptions);\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst rpl = require(\"run-parallel\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings, callback) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings, callback);\r\n }\r\n return readdir(directory, settings, callback);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings, callback) {\r\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const entries = dirents.map((dirent) => ({\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n }));\r\n if (!settings.followSymbolicLinks) {\r\n return callSuccessCallback(callback, entries);\r\n }\r\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\r\n rpl(tasks, (rplError, rplEntries) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n callSuccessCallback(callback, rplEntries);\r\n });\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction makeRplTaskEntry(entry, settings) {\r\n return (done) => {\r\n if (!entry.dirent.isSymbolicLink()) {\r\n return done(null, entry);\r\n }\r\n settings.fs.stat(entry.path, (statError, stats) => {\r\n if (statError !== null) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n return done(statError);\r\n }\r\n return done(null, entry);\r\n }\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n return done(null, entry);\r\n });\r\n };\r\n}\r\nfunction readdir(directory, settings, callback) {\r\n settings.fs.readdir(directory, (readdirError, names) => {\r\n if (readdirError !== null) {\r\n return callFailureCallback(callback, readdirError);\r\n }\r\n const filepaths = names.map((name) => common.joinPathSegments(directory, name, settings.pathSegmentSeparator));\r\n const tasks = filepaths.map((filepath) => {\r\n return (done) => fsStat.stat(filepath, settings.fsStatSettings, done);\r\n });\r\n rpl(tasks, (rplError, results) => {\r\n if (rplError !== null) {\r\n return callFailureCallback(callback, rplError);\r\n }\r\n const entries = [];\r\n names.forEach((name, index) => {\r\n const stats = results[index];\r\n const entry = {\r\n name,\r\n path: filepaths[index],\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n entries.push(entry);\r\n });\r\n callSuccessCallback(callback, entries);\r\n });\r\n });\r\n}\r\nexports.readdir = readdir;\r\nfunction callFailureCallback(callback, error) {\r\n callback(error);\r\n}\r\nfunction callSuccessCallback(callback, result) {\r\n callback(null, result);\r\n}\r\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\r\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\r\nconst MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\r\nconst MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\r\nconst SUPPORTED_MAJOR_VERSION = 10;\r\nconst SUPPORTED_MINOR_VERSION = 10;\r\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\r\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\r\n/**\r\n * IS `true` for Node.js 10.10 and greater.\r\n */\r\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fs = void 0;\r\nconst fs = require(\"./fs\");\r\nexports.fs = fs;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createDirentFromStats = void 0;\r\nclass DirentFromStats {\r\n constructor(name, stats) {\r\n this.name = name;\r\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\r\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\r\n this.isDirectory = stats.isDirectory.bind(stats);\r\n this.isFIFO = stats.isFIFO.bind(stats);\r\n this.isFile = stats.isFile.bind(stats);\r\n this.isSocket = stats.isSocket.bind(stats);\r\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\r\n }\r\n}\r\nfunction createDirentFromStats(name, stats) {\r\n return new DirentFromStats(name, stats);\r\n}\r\nexports.createDirentFromStats = createDirentFromStats;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = void 0;\r\nfunction joinPathSegments(a, b, separator) {\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst constants_1 = require(\"../constants\");\r\nconst utils = require(\"../utils\");\r\nconst common = require(\"./common\");\r\nfunction read(directory, settings) {\r\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\r\n return readdirWithFileTypes(directory, settings);\r\n }\r\n return readdir(directory, settings);\r\n}\r\nexports.read = read;\r\nfunction readdirWithFileTypes(directory, settings) {\r\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\r\n return dirents.map((dirent) => {\r\n const entry = {\r\n dirent,\r\n name: dirent.name,\r\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\r\n };\r\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\r\n try {\r\n const stats = settings.fs.statSync(entry.path);\r\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\r\n }\r\n catch (error) {\r\n if (settings.throwErrorOnBrokenSymbolicLink) {\r\n throw error;\r\n }\r\n }\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdirWithFileTypes = readdirWithFileTypes;\r\nfunction readdir(directory, settings) {\r\n const names = settings.fs.readdirSync(directory);\r\n return names.map((name) => {\r\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\r\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\r\n const entry = {\r\n name,\r\n path: entryPath,\r\n dirent: utils.fs.createDirentFromStats(name, stats)\r\n };\r\n if (settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n });\r\n}\r\nexports.readdir = readdir;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fs = require(\"./adapters/fs\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\r\n this.fs = fs.createFileSystemAdapter(this._options.fs);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\r\n this.fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this.followSymbolicLinks,\r\n fs: this.fs,\r\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nexports.FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n stat: fs.stat,\r\n lstatSync: fs.lstatSync,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nfunction createFileSystemAdapter(fsMethods) {\r\n if (fsMethods === undefined) {\r\n return exports.FILE_SYSTEM_ADAPTER;\r\n }\r\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\r\n}\r\nexports.createFileSystemAdapter = createFileSystemAdapter;\r\n","'use strict'\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n\n return queue\n\n function push (value) {\n return new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n\n function unshift (value) {\n return new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\r\nfunction isFatalError(settings, error) {\r\n if (settings.errorFilter === null) {\r\n return true;\r\n }\r\n return !settings.errorFilter(error);\r\n}\r\nexports.isFatalError = isFatalError;\r\nfunction isAppliedFilter(filter, value) {\r\n return filter === null || filter(value);\r\n}\r\nexports.isAppliedFilter = isAppliedFilter;\r\nfunction replacePathSegmentSeparator(filepath, separator) {\r\n return filepath.split(/[/\\\\]/).join(separator);\r\n}\r\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\r\nfunction joinPathSegments(a, b, separator) {\r\n if (a === '') {\r\n return b;\r\n }\r\n /**\r\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\r\n */\r\n if (a.endsWith(separator)) {\r\n return a + b;\r\n }\r\n return a + separator + b;\r\n}\r\nexports.joinPathSegments = joinPathSegments;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst common = require(\"./common\");\r\nclass Reader {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst async_1 = require(\"../readers/async\");\r\nclass StreamProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new async_1.default(this._root, this._settings);\r\n this._stream = new stream_1.Readable({\r\n objectMode: true,\r\n read: () => { },\r\n destroy: () => {\r\n if (!this._reader.isDestroyed) {\r\n this._reader.destroy();\r\n }\r\n }\r\n });\r\n }\r\n read() {\r\n this._reader.onError((error) => {\r\n this._stream.emit('error', error);\r\n });\r\n this._reader.onEntry((entry) => {\r\n this._stream.push(entry);\r\n });\r\n this._reader.onEnd(() => {\r\n this._stream.push(null);\r\n });\r\n this._reader.read();\r\n return this._stream;\r\n }\r\n}\r\nexports.default = StreamProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nclass SyncProvider {\r\n constructor(_root, _settings) {\r\n this._root = _root;\r\n this._settings = _settings;\r\n this._reader = new sync_1.default(this._root, this._settings);\r\n }\r\n read() {\r\n return this._reader.read();\r\n }\r\n}\r\nexports.default = SyncProvider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nconst common = require(\"./common\");\r\nconst reader_1 = require(\"./reader\");\r\nclass SyncReader extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._scandir = fsScandir.scandirSync;\r\n this._storage = new Set();\r\n this._queue = new Set();\r\n }\r\n read() {\r\n this._pushToQueue(this._root, this._settings.basePath);\r\n this._handleQueue();\r\n return [...this._storage];\r\n }\r\n _pushToQueue(directory, base) {\r\n this._queue.add({ directory, base });\r\n }\r\n _handleQueue() {\r\n for (const item of this._queue.values()) {\r\n this._handleDirectory(item.directory, item.base);\r\n }\r\n }\r\n _handleDirectory(directory, base) {\r\n try {\r\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\r\n for (const entry of entries) {\r\n this._handleEntry(entry, base);\r\n }\r\n }\r\n catch (error) {\r\n this._handleError(error);\r\n }\r\n }\r\n _handleError(error) {\r\n if (!common.isFatalError(this._settings, error)) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n _handleEntry(entry, base) {\r\n const fullpath = entry.path;\r\n if (base !== undefined) {\r\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\r\n }\r\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\r\n this._pushToStorage(entry);\r\n }\r\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\r\n this._pushToQueue(fullpath, entry.path);\r\n }\r\n }\r\n _pushToStorage(entry) {\r\n this._storage.add(entry);\r\n }\r\n}\r\nexports.default = SyncReader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsScandir = require(\"@nodelib/fs.scandir\");\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.basePath = this._getValue(this._options.basePath, undefined);\r\n this.concurrency = this._getValue(this._options.concurrency, Infinity);\r\n this.deepFilter = this._getValue(this._options.deepFilter, null);\r\n this.entryFilter = this._getValue(this._options.entryFilter, null);\r\n this.errorFilter = this._getValue(this._options.errorFilter, null);\r\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\r\n this.fsScandirSettings = new fsScandir.Settings({\r\n followSymbolicLinks: this._options.followSymbolicLinks,\r\n fs: this._options.fs,\r\n pathSegmentSeparator: this._options.pathSegmentSeparator,\r\n stats: this._options.stats,\r\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\r\n });\r\n }\r\n _getValue(option, value) {\r\n return option !== null && option !== void 0 ? option : value;\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst utils = require(\"../utils\");\r\nclass Reader {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this._fsStatSettings = new fsStat.Settings({\r\n followSymbolicLink: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\r\n });\r\n }\r\n _getFullEntryPath(filepath) {\r\n return path.resolve(this._settings.cwd, filepath);\r\n }\r\n _makeEntry(stats, pattern) {\r\n const entry = {\r\n name: pattern,\r\n path: pattern,\r\n dirent: utils.fs.createDirentFromStats(pattern, stats)\r\n };\r\n if (this._settings.stats) {\r\n entry.stats = stats;\r\n }\r\n return entry;\r\n }\r\n _isFatalError(error) {\r\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = Reader;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst path = require(\"path\");\r\nconst deep_1 = require(\"./filters/deep\");\r\nconst entry_1 = require(\"./filters/entry\");\r\nconst error_1 = require(\"./filters/error\");\r\nconst entry_2 = require(\"./transformers/entry\");\r\nclass Provider {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n this.errorFilter = new error_1.default(this._settings);\r\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\r\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\r\n this.entryTransformer = new entry_2.default(this._settings);\r\n }\r\n _getRootDirectory(task) {\r\n return path.resolve(this._settings.cwd, task.base);\r\n }\r\n _getReaderOptions(task) {\r\n const basePath = task.base === '.' ? '' : task.base;\r\n return {\r\n basePath,\r\n pathSegmentSeparator: '/',\r\n concurrency: this._settings.concurrency,\r\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\r\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\r\n errorFilter: this.errorFilter.getFilter(),\r\n followSymbolicLinks: this._settings.followSymbolicLinks,\r\n fs: this._settings.fs,\r\n stats: this._settings.stats,\r\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\r\n transform: this.entryTransformer.getTransformer()\r\n };\r\n }\r\n _getMicromatchOptions() {\r\n return {\r\n dot: this._settings.dot,\r\n matchBase: this._settings.baseNameMatch,\r\n nobrace: !this._settings.braceExpansion,\r\n nocase: !this._settings.caseSensitiveMatch,\r\n noext: !this._settings.extglob,\r\n noglobstar: !this._settings.globstar,\r\n posix: true,\r\n strictSlashes: false\r\n };\r\n }\r\n}\r\nexports.default = Provider;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nconst partial_1 = require(\"../matchers/partial\");\r\nclass DeepFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n }\r\n getFilter(basePath, positive, negative) {\r\n const matcher = this._getMatcher(positive);\r\n const negativeRe = this._getNegativePatternsRe(negative);\r\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\r\n }\r\n _getMatcher(patterns) {\r\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\r\n }\r\n _getNegativePatternsRe(patterns) {\r\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\r\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\r\n }\r\n _filter(basePath, entry, matcher, negativeRe) {\r\n if (this._isSkippedByDeep(basePath, entry.path)) {\r\n return false;\r\n }\r\n if (this._isSkippedSymbolicLink(entry)) {\r\n return false;\r\n }\r\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\r\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\r\n return false;\r\n }\r\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\r\n }\r\n _isSkippedByDeep(basePath, entryPath) {\r\n /**\r\n * Avoid unnecessary depth calculations when it doesn't matter.\r\n */\r\n if (this._settings.deep === Infinity) {\r\n return false;\r\n }\r\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\r\n }\r\n _getEntryLevel(basePath, entryPath) {\r\n const entryPathDepth = entryPath.split('/').length;\r\n if (basePath === '') {\r\n return entryPathDepth;\r\n }\r\n const basePathDepth = basePath.split('/').length;\r\n return entryPathDepth - basePathDepth;\r\n }\r\n _isSkippedSymbolicLink(entry) {\r\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\r\n }\r\n _isSkippedByPositivePatterns(entryPath, matcher) {\r\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\r\n }\r\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\r\n return !utils.pattern.matchAny(entryPath, patternsRe);\r\n }\r\n}\r\nexports.default = DeepFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst matcher_1 = require(\"./matcher\");\r\nclass PartialMatcher extends matcher_1.default {\r\n match(filepath) {\r\n const parts = filepath.split('/');\r\n const levels = parts.length;\r\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\r\n for (const pattern of patterns) {\r\n const section = pattern.sections[0];\r\n /**\r\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\r\n * but only if the level has reached the end of the first group.\r\n *\r\n * fixtures/{a,b}/**\r\n * ^ true/false ^ always true\r\n */\r\n if (!pattern.complete && levels > section.length) {\r\n return true;\r\n }\r\n const match = parts.every((part, index) => {\r\n const segment = pattern.segments[index];\r\n if (segment.dynamic && segment.patternRe.test(part)) {\r\n return true;\r\n }\r\n if (!segment.dynamic && segment.pattern === part) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexports.default = PartialMatcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass Matcher {\r\n constructor(_patterns, _settings, _micromatchOptions) {\r\n this._patterns = _patterns;\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this._storage = [];\r\n this._fillStorage();\r\n }\r\n _fillStorage() {\r\n /**\r\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\r\n * So, before expand patterns with brace expansion into separated patterns.\r\n */\r\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\r\n for (const pattern of patterns) {\r\n const segments = this._getPatternSegments(pattern);\r\n const sections = this._splitSegmentsIntoSections(segments);\r\n this._storage.push({\r\n complete: sections.length <= 1,\r\n pattern,\r\n segments,\r\n sections\r\n });\r\n }\r\n }\r\n _getPatternSegments(pattern) {\r\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\r\n return parts.map((part) => {\r\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\r\n if (!dynamic) {\r\n return {\r\n dynamic: false,\r\n pattern: part\r\n };\r\n }\r\n return {\r\n dynamic: true,\r\n pattern: part,\r\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\r\n };\r\n });\r\n }\r\n _splitSegmentsIntoSections(segments) {\r\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\r\n }\r\n}\r\nexports.default = Matcher;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryFilter {\r\n constructor(_settings, _micromatchOptions) {\r\n this._settings = _settings;\r\n this._micromatchOptions = _micromatchOptions;\r\n this.index = new Map();\r\n }\r\n getFilter(positive, negative) {\r\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\r\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\r\n return (entry) => this._filter(entry, positiveRe, negativeRe);\r\n }\r\n _filter(entry, positiveRe, negativeRe) {\r\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\r\n return false;\r\n }\r\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\r\n return false;\r\n }\r\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\r\n return false;\r\n }\r\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\r\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\r\n if (this._settings.unique && isMatched) {\r\n this._createIndexRecord(entry);\r\n }\r\n return isMatched;\r\n }\r\n _isDuplicateEntry(entry) {\r\n return this.index.has(entry.path);\r\n }\r\n _createIndexRecord(entry) {\r\n this.index.set(entry.path, undefined);\r\n }\r\n _onlyFileFilter(entry) {\r\n return this._settings.onlyFiles && !entry.dirent.isFile();\r\n }\r\n _onlyDirectoryFilter(entry) {\r\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\r\n }\r\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\r\n if (!this._settings.absolute) {\r\n return false;\r\n }\r\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\r\n return utils.pattern.matchAny(fullpath, patternsRe);\r\n }\r\n _isMatchToPatterns(entryPath, patternsRe) {\r\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\r\n return utils.pattern.matchAny(filepath, patternsRe);\r\n }\r\n}\r\nexports.default = EntryFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass ErrorFilter {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getFilter() {\r\n return (error) => this._isNonFatalError(error);\r\n }\r\n _isNonFatalError(error) {\r\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\r\n }\r\n}\r\nexports.default = ErrorFilter;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils = require(\"../../utils\");\r\nclass EntryTransformer {\r\n constructor(_settings) {\r\n this._settings = _settings;\r\n }\r\n getTransformer() {\r\n return (entry) => this._transform(entry);\r\n }\r\n _transform(entry) {\r\n let filepath = entry.path;\r\n if (this._settings.absolute) {\r\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\r\n filepath = utils.path.unixify(filepath);\r\n }\r\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\r\n filepath += '/';\r\n }\r\n if (!this._settings.objectMode) {\r\n return filepath;\r\n }\r\n return Object.assign(Object.assign({}, entry), { path: filepath });\r\n }\r\n}\r\nexports.default = EntryTransformer;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst stream_1 = require(\"stream\");\r\nconst stream_2 = require(\"../readers/stream\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderStream extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new stream_2.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const source = this.api(root, task, options);\r\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\r\n source\r\n .once('error', (error) => destination.emit('error', error))\r\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\r\n .once('end', () => destination.emit('end'));\r\n destination\r\n .once('close', () => source.destroy());\r\n return destination;\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderStream;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sync_1 = require(\"../readers/sync\");\r\nconst provider_1 = require(\"./provider\");\r\nclass ProviderSync extends provider_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._reader = new sync_1.default(this._settings);\r\n }\r\n read(task) {\r\n const root = this._getRootDirectory(task);\r\n const options = this._getReaderOptions(task);\r\n const entries = this.api(root, task, options);\r\n return entries.map(options.transform);\r\n }\r\n api(root, task, options) {\r\n if (task.dynamic) {\r\n return this._reader.dynamic(root, options);\r\n }\r\n return this._reader.static(task.patterns, options);\r\n }\r\n}\r\nexports.default = ProviderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst fsStat = require(\"@nodelib/fs.stat\");\r\nconst fsWalk = require(\"@nodelib/fs.walk\");\r\nconst reader_1 = require(\"./reader\");\r\nclass ReaderSync extends reader_1.default {\r\n constructor() {\r\n super(...arguments);\r\n this._walkSync = fsWalk.walkSync;\r\n this._statSync = fsStat.statSync;\r\n }\r\n dynamic(root, options) {\r\n return this._walkSync(root, options);\r\n }\r\n static(patterns, options) {\r\n const entries = [];\r\n for (const pattern of patterns) {\r\n const filepath = this._getFullEntryPath(pattern);\r\n const entry = this._getEntry(filepath, pattern, options);\r\n if (entry === null || !options.entryFilter(entry)) {\r\n continue;\r\n }\r\n entries.push(entry);\r\n }\r\n return entries;\r\n }\r\n _getEntry(filepath, pattern, options) {\r\n try {\r\n const stats = this._getStat(filepath);\r\n return this._makeEntry(stats, pattern);\r\n }\r\n catch (error) {\r\n if (options.errorFilter(error)) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n _getStat(filepath) {\r\n return this._statSync(filepath, this._fsStatSettings);\r\n }\r\n}\r\nexports.default = ReaderSync;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\r\nconst fs = require(\"fs\");\r\nconst os = require(\"os\");\r\n/**\r\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\r\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\r\n */\r\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\r\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\r\n lstat: fs.lstat,\r\n lstatSync: fs.lstatSync,\r\n stat: fs.stat,\r\n statSync: fs.statSync,\r\n readdir: fs.readdir,\r\n readdirSync: fs.readdirSync\r\n};\r\nclass Settings {\r\n constructor(_options = {}) {\r\n this._options = _options;\r\n this.absolute = this._getValue(this._options.absolute, false);\r\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\r\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\r\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\r\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\r\n this.cwd = this._getValue(this._options.cwd, process.cwd());\r\n this.deep = this._getValue(this._options.deep, Infinity);\r\n this.dot = this._getValue(this._options.dot, false);\r\n this.extglob = this._getValue(this._options.extglob, true);\r\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\r\n this.fs = this._getFileSystemMethods(this._options.fs);\r\n this.globstar = this._getValue(this._options.globstar, true);\r\n this.ignore = this._getValue(this._options.ignore, []);\r\n this.markDirectories = this._getValue(this._options.markDirectories, false);\r\n this.objectMode = this._getValue(this._options.objectMode, false);\r\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\r\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\r\n this.stats = this._getValue(this._options.stats, false);\r\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\r\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\r\n this.unique = this._getValue(this._options.unique, true);\r\n if (this.onlyDirectories) {\r\n this.onlyFiles = false;\r\n }\r\n if (this.stats) {\r\n this.objectMode = true;\r\n }\r\n }\r\n _getValue(option, value) {\r\n return option === undefined ? value : option;\r\n }\r\n _getFileSystemMethods(methods = {}) {\r\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\r\n }\r\n}\r\nexports.default = Settings;\r\n","\"use strict\";\r\nconst taskManager = require(\"./managers/tasks\");\r\nconst async_1 = require(\"./providers/async\");\r\nconst stream_1 = require(\"./providers/stream\");\r\nconst sync_1 = require(\"./providers/sync\");\r\nconst settings_1 = require(\"./settings\");\r\nconst utils = require(\"./utils\");\r\nasync function FastGlob(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, async_1.default, options);\r\n const result = await Promise.all(works);\r\n return utils.array.flatten(result);\r\n}\r\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\r\n// eslint-disable-next-line no-redeclare\r\n(function (FastGlob) {\r\n function sync(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, sync_1.default, options);\r\n return utils.array.flatten(works);\r\n }\r\n FastGlob.sync = sync;\r\n function stream(source, options) {\r\n assertPatternsInput(source);\r\n const works = getWorks(source, stream_1.default, options);\r\n /**\r\n * The stream returned by the provider cannot work with an asynchronous iterator.\r\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\r\n * This affects performance (+25%). I don't see best solution right now.\r\n */\r\n return utils.stream.merge(works);\r\n }\r\n FastGlob.stream = stream;\r\n function generateTasks(source, options) {\r\n assertPatternsInput(source);\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n return taskManager.generate(patterns, settings);\r\n }\r\n FastGlob.generateTasks = generateTasks;\r\n function isDynamicPattern(source, options) {\r\n assertPatternsInput(source);\r\n const settings = new settings_1.default(options);\r\n return utils.pattern.isDynamicPattern(source, settings);\r\n }\r\n FastGlob.isDynamicPattern = isDynamicPattern;\r\n function escapePath(source) {\r\n assertPatternsInput(source);\r\n return utils.path.escape(source);\r\n }\r\n FastGlob.escapePath = escapePath;\r\n})(FastGlob || (FastGlob = {}));\r\nfunction getWorks(source, _Provider, options) {\r\n const patterns = [].concat(source);\r\n const settings = new settings_1.default(options);\r\n const tasks = taskManager.generate(patterns, settings);\r\n const provider = new _Provider(settings);\r\n return tasks.map(provider.read, provider);\r\n}\r\nfunction assertPatternsInput(input) {\r\n const source = [].concat(input);\r\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\r\n if (!isValidSource) {\r\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\r\n }\r\n}\r\nmodule.exports = FastGlob;\r\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map} */\n this._watched = new Map();\n /** @type {Map} */\n this._closers = new Map();\n /** @type {Set} */\n this._ignoredPaths = new Set();\n\n /** @type {Map} */\n this._throttled = new Map();\n\n /** @type {Map} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount *= 2;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (process.platform === 'win32' && stat.length === 3) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return {files, depth, path};\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = {path: sysPath.relative(this._root, fullPath), fullPath, basename};\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n return this._onError(new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n ));\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array} patterns\n * @param {Array} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","/*!\n * normalize-path \n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n const linkPath = await fsrealpath(path);\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","[\n\t\"3dm\",\n\t\"3ds\",\n\t\"3g2\",\n\t\"3gp\",\n\t\"7z\",\n\t\"a\",\n\t\"aac\",\n\t\"adp\",\n\t\"ai\",\n\t\"aif\",\n\t\"aiff\",\n\t\"alz\",\n\t\"ape\",\n\t\"apk\",\n\t\"appimage\",\n\t\"ar\",\n\t\"arj\",\n\t\"asf\",\n\t\"au\",\n\t\"avi\",\n\t\"bak\",\n\t\"baml\",\n\t\"bh\",\n\t\"bin\",\n\t\"bk\",\n\t\"bmp\",\n\t\"btif\",\n\t\"bz2\",\n\t\"bzip2\",\n\t\"cab\",\n\t\"caf\",\n\t\"cgm\",\n\t\"class\",\n\t\"cmx\",\n\t\"cpio\",\n\t\"cr2\",\n\t\"cur\",\n\t\"dat\",\n\t\"dcm\",\n\t\"deb\",\n\t\"dex\",\n\t\"djvu\",\n\t\"dll\",\n\t\"dmg\",\n\t\"dng\",\n\t\"doc\",\n\t\"docm\",\n\t\"docx\",\n\t\"dot\",\n\t\"dotm\",\n\t\"dra\",\n\t\"DS_Store\",\n\t\"dsk\",\n\t\"dts\",\n\t\"dtshd\",\n\t\"dvb\",\n\t\"dwg\",\n\t\"dxf\",\n\t\"ecelp4800\",\n\t\"ecelp7470\",\n\t\"ecelp9600\",\n\t\"egg\",\n\t\"eol\",\n\t\"eot\",\n\t\"epub\",\n\t\"exe\",\n\t\"f4v\",\n\t\"fbs\",\n\t\"fh\",\n\t\"fla\",\n\t\"flac\",\n\t\"flatpak\",\n\t\"fli\",\n\t\"flv\",\n\t\"fpx\",\n\t\"fst\",\n\t\"fvt\",\n\t\"g3\",\n\t\"gh\",\n\t\"gif\",\n\t\"graffle\",\n\t\"gz\",\n\t\"gzip\",\n\t\"h261\",\n\t\"h263\",\n\t\"h264\",\n\t\"icns\",\n\t\"ico\",\n\t\"ief\",\n\t\"img\",\n\t\"ipa\",\n\t\"iso\",\n\t\"jar\",\n\t\"jpeg\",\n\t\"jpg\",\n\t\"jpgv\",\n\t\"jpm\",\n\t\"jxr\",\n\t\"key\",\n\t\"ktx\",\n\t\"lha\",\n\t\"lib\",\n\t\"lvp\",\n\t\"lz\",\n\t\"lzh\",\n\t\"lzma\",\n\t\"lzo\",\n\t\"m3u\",\n\t\"m4a\",\n\t\"m4v\",\n\t\"mar\",\n\t\"mdi\",\n\t\"mht\",\n\t\"mid\",\n\t\"midi\",\n\t\"mj2\",\n\t\"mka\",\n\t\"mkv\",\n\t\"mmr\",\n\t\"mng\",\n\t\"mobi\",\n\t\"mov\",\n\t\"movie\",\n\t\"mp3\",\n\t\"mp4\",\n\t\"mp4a\",\n\t\"mpeg\",\n\t\"mpg\",\n\t\"mpga\",\n\t\"mxu\",\n\t\"nef\",\n\t\"npx\",\n\t\"numbers\",\n\t\"nupkg\",\n\t\"o\",\n\t\"odp\",\n\t\"ods\",\n\t\"odt\",\n\t\"oga\",\n\t\"ogg\",\n\t\"ogv\",\n\t\"otf\",\n\t\"ott\",\n\t\"pages\",\n\t\"pbm\",\n\t\"pcx\",\n\t\"pdb\",\n\t\"pdf\",\n\t\"pea\",\n\t\"pgm\",\n\t\"pic\",\n\t\"png\",\n\t\"pnm\",\n\t\"pot\",\n\t\"potm\",\n\t\"potx\",\n\t\"ppa\",\n\t\"ppam\",\n\t\"ppm\",\n\t\"pps\",\n\t\"ppsm\",\n\t\"ppsx\",\n\t\"ppt\",\n\t\"pptm\",\n\t\"pptx\",\n\t\"psd\",\n\t\"pya\",\n\t\"pyc\",\n\t\"pyo\",\n\t\"pyv\",\n\t\"qt\",\n\t\"rar\",\n\t\"ras\",\n\t\"raw\",\n\t\"resources\",\n\t\"rgb\",\n\t\"rip\",\n\t\"rlc\",\n\t\"rmf\",\n\t\"rmvb\",\n\t\"rpm\",\n\t\"rtf\",\n\t\"rz\",\n\t\"s3m\",\n\t\"s7z\",\n\t\"scpt\",\n\t\"sgi\",\n\t\"shar\",\n\t\"snap\",\n\t\"sil\",\n\t\"sketch\",\n\t\"slk\",\n\t\"smv\",\n\t\"snk\",\n\t\"so\",\n\t\"stl\",\n\t\"suo\",\n\t\"sub\",\n\t\"swf\",\n\t\"tar\",\n\t\"tbz\",\n\t\"tbz2\",\n\t\"tga\",\n\t\"tgz\",\n\t\"thmx\",\n\t\"tif\",\n\t\"tiff\",\n\t\"tlz\",\n\t\"ttc\",\n\t\"ttf\",\n\t\"txz\",\n\t\"udf\",\n\t\"uvh\",\n\t\"uvi\",\n\t\"uvm\",\n\t\"uvp\",\n\t\"uvs\",\n\t\"uvu\",\n\t\"viv\",\n\t\"vob\",\n\t\"war\",\n\t\"wav\",\n\t\"wax\",\n\t\"wbmp\",\n\t\"wdp\",\n\t\"weba\",\n\t\"webm\",\n\t\"webp\",\n\t\"whl\",\n\t\"wim\",\n\t\"wm\",\n\t\"wma\",\n\t\"wmv\",\n\t\"wmx\",\n\t\"woff\",\n\t\"woff2\",\n\t\"wrm\",\n\t\"wvx\",\n\t\"xbm\",\n\t\"xif\",\n\t\"xla\",\n\t\"xlam\",\n\t\"xls\",\n\t\"xlsb\",\n\t\"xlsm\",\n\t\"xlsx\",\n\t\"xlt\",\n\t\"xltm\",\n\t\"xltx\",\n\t\"xm\",\n\t\"xmind\",\n\t\"xpi\",\n\t\"xpm\",\n\t\"xwd\",\n\t\"xz\",\n\t\"z\",\n\t\"zip\",\n\t\"zipx\"\n]\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(path) ? sysPath.dirname(path) : path;\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","\"use babel\"\n\nconst javascriptPrefixes = [\n \"import\\\\s+.*?from\\\\s+['\\\"]\", // import foo from './foo'\n \"import\\\\s+['\\\"]\", // import './foo'\n \"require\\\\(['\\\"]\", // require('./foo')\n \"define\\\\(\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n]\n\nconst javascriptExtensions = [\"js\", \"jsx\", \"ts\", \"tsx\", \"coffee\", \"json\"]\n\n// no index replacement\nconst javascriptReplaceOnInsert = [\n [\"\\\\.jsx?$\", \"\"],\n [\"\\\\.ts$\", \"\"],\n [\"\\\\.coffee$\", \"\"],\n]\n\n// with index replacement\nconst javascriptWithIndexReplaceOnInsert = [\n [\"([\\\\/]?index)?\\\\.jsx?$\", \"\"],\n [\"([\\\\/]?index)?\\\\.ts$\", \"\"],\n [\"([\\\\/]?index)?\\\\.coffee$\", \"\"],\n]\n\nexport const DefaultScopes = [\n {\n scopes: [\n \"source.js\",\n \"source.js.jsx\",\n \"source.coffee\",\n \"source.coffee.jsx\",\n \"source.ts\",\n \"source.tsx\",\n \"javascript\",\n \"source.flow\",\n ],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptWithIndexReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: javascriptPrefixes,\n extensions: javascriptExtensions.concat(\"vue\"),\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"text.html.vue\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"css\", \"sass\", \"scss\", \"less\", \"styl\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.coffee\", \"source.coffee.jsx\"],\n prefixes: [\n \"require\\\\s+['\\\"]\", // require './foo'\n \"define\\\\s+\\\\[?['\\\"]\", // define(['./foo']) or define('./foo')\n ],\n extensions: javascriptExtensions,\n relative: true,\n replaceOnInsert: javascriptReplaceOnInsert,\n },\n {\n scopes: [\"source.php\"],\n prefixes: [\n \"require_once\\\\(['\\\"]\", // require_once('foo.php')\n \"include\\\\(['\\\"]\", // include('./foo.php')\n ],\n extensions: [\"php\"],\n relative: true,\n },\n {\n scopes: [\"source.sass\", \"source.css.scss\", \"source.css.less\", \"source.stylus\"],\n prefixes: [\n \"@import[\\\\(|\\\\s+]?['\\\"]\", // @import 'foo' or @import('foo')\n ],\n extensions: [\"sass\", \"scss\", \"css\"],\n relative: true,\n replaceOnInsert: [\n [\"(/)?_([^/]*?)$\", \"$1$2\"], // dir1/_dir2/_file.sass => dir1/_dir2/file.sass\n ],\n },\n {\n scopes: [\"source.css\"],\n prefixes: [\n \"@import\\\\s+['\\\"]?\", // @import 'foo.css'\n \"@import\\\\s+url\\\\(['\\\"]?\", // @import url('foo.css')\n ],\n extensions: [\"css\"],\n relative: true,\n },\n {\n scopes: [\"source.css\", \"source.sass\", \"source.css.less\", \"source.css.scss\", \"source.stylus\"],\n prefixes: [\"url\\\\(['\\\"]?\"],\n extensions: [\"png\", \"gif\", \"jpeg\", \"jpg\", \"woff\", \"woff2\", \"ttf\", \"svg\", \"otf\"],\n relative: true,\n },\n {\n scopes: [\"source.c\", \"source.cpp\"],\n prefixes: [\"^\\\\s*#include\\\\s+['\\\"]\"],\n extensions: [\"h\", \"hpp\"],\n relative: true,\n includeCurrentDirectory: false,\n },\n {\n scopes: [\"source.lua\"],\n prefixes: [\"require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"lua\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.lua$\", \"\"],\n ],\n },\n {\n scopes: [\"source.ruby\"],\n prefixes: [\"^\\\\s*require[\\\\s+|\\\\(]['\\\"]\"],\n extensions: [\"rb\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [[\"\\\\.rb$\", \"\"]],\n },\n {\n scopes: [\"source.python\"],\n prefixes: [\"^\\\\s*from\\\\s+\", \"^\\\\s*import\\\\s+\"],\n extensions: [\"py\"],\n relative: true,\n includeCurrentDirectory: false,\n replaceOnInsert: [\n [\"\\\\/\", \".\"],\n [\"\\\\\\\\\", \".\"],\n [\"\\\\.py$\", \"\"],\n ],\n },\n]\n"],"names":["$parcel$export","e","n","v","Object","defineProperty","get","enumerable","$parcel$missingModule","name","err","Error","code","$parcel$global","globalThis","self","window","global","subscriptions","add","atom","commands","autocomplete-paths:rebuild-cache","_provider","rebuildCache","forEach","cacheOption","config","observe","_pathsCache","updateConfig","scopeOptions","key","OptionScopes","push","scopeOption","reloadScopes","_statusBarInterval","clearInterval","dispose","_statusBarTile","destroy","statusBar","_statusBar","_displayStatusBarItemOnConsumption","_displayStatusBarTile","enableHtmlSupport","scopes","prefixes","extensions","relative","normalizeSlashes","type","description","default","maxFileCount","suggestionPriority","ignoredNames","ignoreSubmodules","ignoredPatterns","items","ignoreBuiltinScopes","properties","replaceOnInsert","keys","i","len","length","a","$4f98dcf3c1c9e6d326d487da110886a3$var$_events","_events","$4f98dcf3c1c9e6d326d487da110886a3$var$_path","$4f98dcf3c1c9e6d326d487da110886a3$var$_interopRequireDefault","_path2","value","root","Function","ArrayProto","Array","prototype","ObjProto","SymbolProto","Symbol","slice","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","restArguments","func","startIndex","max","arguments","rest","index","call","this","args","apply","isObject","obj","isNull","isUndefined","isBoolean","$4766d843fd37944fe6c40ebbaa7aaf5e$export$toString","isElement","nodeType","tagTester","tag","$530580268565aa9d3424fd2ef51901ea$export$default","isFunction","nodelist","$4766d843fd37944fe6c40ebbaa7aaf5e$export$root","document","childNodes","Int8Array","hasStringTagBug","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsDataView","$757eee250db3ce2336c60aa91cc78956$export$default","isIE11","Map","isDataView","$4d72093464ae2487da1a1b0e7fdf8340$export$hasStringTagBug","$c4e8fa99aa95727b16a1ee8bde743672$export$default","getInt8","$1e41bcd793e643e4734c6f6ee2b4e9d8$export$default","buffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsArray","has","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasOwnProperty","isArguments","$2f33ee2e9052562efdc3a1ced95b6675$export$default","$b42014b70606b5e7de8aa1c63831b7d4$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isFinite","parseFloat","$0751ff01da0b092ac4f23f0c2d71a871$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$_isNaN","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","$4766d843fd37944fe6c40ebbaa7aaf5e$export$MAX_ARRAY_INDEX","shallowProperty","$082c72be95656a779fbb5fe4e4e2d893$export$default","$ce21aa60db694058381b6f594885f095$export$default","$9dc8a679e9e58bead4d368991930ccfa$export$default","typedArrayPattern","$4766d843fd37944fe6c40ebbaa7aaf5e$export$supportsArrayBuffer","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeIsView","$6c17244ad683b04e8fe7911905aa629a$export$default","$4113367773109491f566fca99083a621$export$default","test","$965ec70e7f224c7d3cfeca678df8bf3e$export$default","collectNonEnumProps","hash","l","contains","emulatedSet","nonEnumIdx","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nonEnumerableProps","constructor","proto","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ObjProto","prop","$18c823376c5830042afa2859bd10a376$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeKeys","$4766d843fd37944fe6c40ebbaa7aaf5e$export$hasEnumBug","$83a1753c83f462cddba24ea36ce47496$export$default","isEmpty","$0d046df52324e1b31f2024707819811f$export$default","$4f93bbf2818679c73ac8dbfc977a7a07$export$default","$128563f5bdf8568546aad66b0e9169f2$export$default","$8ae27713e37a9c29d5e79c3d5918a77d$export$default","$3b05cdb343fae09a39046f51e776f0f0$export$default","isMatch","object","attrs","_keys","_","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","VERSION","valueOf","toJSON","String","eq","b","aStack","bStack","deepEq","$f779cc76c1a1d6ad15d73b1a79679140$export$default","className","$4766d843fd37944fe6c40ebbaa7aaf5e$export$SymbolProto","$971933d1c47513fb09b37a92d0a37dbd$export$default","areArrays","$018820d0be3c8c64b8cf72f8b1d41946$export$default","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","methods","$d18db0082fe578da6811f391a71bf9b3$export$default","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","$4d72093464ae2487da1a1b0e7fdf8340$export$isIE11","$4ea201dde15b569ef673f8a94185c9b5$export$ie11fingerprint","$4ea201dde15b569ef673f8a94185c9b5$export$mapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$weakMapMethods","$4ea201dde15b569ef673f8a94185c9b5$export$setMethods","values","pairs","invert","result","functions","names","sort","createAssigner","keysFunc","defaults","source","$104b4b6ceacd5903ac1c231fdc18e77a$export$default","baseCreate","$4766d843fd37944fe6c40ebbaa7aaf5e$export$nativeCreate","Ctor","props","$2d00069fd8855ccba361fc012741c4c3$export$default","$8902de5b7a4210ae0d0d775a026129d7$export$default","clone","$2540be424c2a69d381c5f70544f42e3b$export$default","tap","interceptor","toPath","path","deepGet","defaultValue","$8018f0169c896f324d83872c991189a8$export$default","$4697741704e109ca4281e66ccaaa7ae4$export$default","$4ee2499b95037586386133e246ec0fe0$export$default","identity","matcher","$9fccc268a09f4fec9ea6784b21d8dedf$export$default","property","optimizeCb","context","argCount","accumulator","baseIteratee","$ab4f4e78340911fc2a1a827c5a582123$export$default","$d61e122df0949dd2864622a1afa3353e$export$default","$d81d08287b5f54859f4a192b71e2f8c4$export$default","$625186f364fd8dc137aa7807e64a2598$export$default","iteratee","$56307bb362f4dd86a06da23445054ab2$export$default","Infinity","cb","$c4e069c32a82fd2a5c5d04e4bcea7338$export$default","mapObject","$b957eed69440ebd3c9b1d78a45604fbd$export$default","results","currentKey","noop","propertyOf","$a500a6f010799ff9a7df787fa369084d$export$default","$ef85fb07de2211bf1f69fdcf77142185$export$default","times","accum","random","min","floor","Date","now","getTime","createEscaper","map","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","replace","&","<",">","\"","'","`","$47064242fb35d600bf21bb30548f9a9a$export$default","$f6155021e9f5ee75ffc79bef4b5cc562$export$default","$0bda26bf29d027de42adeb7830ed6529$export$default","templateSettings","evaluate","interpolate","escape","noMatch","escapes","\\","\r","\n","
","
","escapeRegExp","escapeChar","bareIdentifier","template","text","settings","oldSettings","$6872dbda78546da4704142c0c1df0ab2$export$default","offset","render","argument","variable","data","fallback","idCounter","uniqueId","prefix","id","chain","instance","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","$35cdaa6c87f6f54da4099aed660c7c22$export$default","boundArgs","placeholder","bound","position","$3228f02b676421780262a9bad058fb4c$export$default","TypeError","callArgs","flatten","input","depth","strict","output","idx","$be963c66310a07e4f4a13bd72d66d422$export$default","j","$5376fd82b55f3d24b981e8133bb55b68$export$default","$29292758879b03a0a46ea42800ca319c$export$default","memoize","hasher","cache","address","wait","setTimeout","$c5adee6e70396da0cc5875e9971e75de$export$default","$bc8c6214d737143531239ad25c501ffa$export$default","throttle","options","timeout","previous","later","leading","$eac143eb91b5babdee1b370bb2c48eca$export$default","throttled","_now","remaining","clearTimeout","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","$e34233ca0155abee01d5ca703ca59f2b$export$default","findKey","createPredicateIndexFinder","dir","array","$fbeb2a8ea83484c4fd41059810f81f2e$export$default","sortedIndex","low","high","mid","createIndexFinder","predicateFind","item","$4766d843fd37944fe6c40ebbaa7aaf5e$export$slice","$befc48520aa876d23cbcdfac862f5e5d$export$default","$c34d2514ffaee6c8d94d7f90aefb6a79$export$default","$5f6e130ef32c78852d617a03558bf4de$export$default","$08e864e25049f3fbd1dd4da7573584a0$export$default","$1d68220bec29d2d07f4928f9efe9a21e$export$default","find","$f4841c265232f176f5b6412afdb2be28$export$default","findWhere","$4e5b5c936dd0a480756133fc91e7f7b7$export$default","each","createReduce","reducer","initial","$02726a623a56a34cef551b2a009d3655$export$default","filter","$7ed9d08b1d8a9f5c63b441713d41f49a$export$default","list","reject","$d6f5e572792112b325b6c053862c316e$export$default","$8b9856ac48da8f63d1bbbfe4a5ef3268$export$default","every","some","fromIndex","guard","$f681841d2b8e02af48e523aa580f5cfa$export$default","$8ccce14a819088ce821a57479a2bd5b9$export$default","contextPath","$78faf640e937a6e0770c1dd6466db445$export$default","method","pluck","where","computed","lastComputed","sample","$2ef5063b6781c2c4fb9e84a1bbfb26b7$export$default","$19545121514a4ceec6f88f1c8e50e575$export$default","last","rand","temp","shuffle","$bbdb4d1d845f834524cc934bb966533d$export$default","sortBy","$54b924e9241a3937b7bf2ca45bb7e807$export$default","criteria","left","right","group","behavior","partition","$e94ff483595449ce238a566adc2a9a37$export$default","pass","reStrSymbol","toArray","size","keyInObj","$76a0fa0ca02a03f593de412afa88dae2$export$default","$ab487a3703a4adc687138807f1fdbdbe$export$default","$9adde3d234d1237d4e95739371a10a23$export$default","first","$e99ab7c589dceb0edc58e310af54c882$export$default","$8c85ae5c50d0dc205834f4cc8454a8df$export$default","compact","Boolean","otherArrays","$46923c265235028bf503d20f975dc959$export$default","uniq","isSorted","$e3a08816e2c3cdac5a0514eaab1eeb4d$export$default","seen","arrays","$a2bc623c109ef8d6a885afe344c4b8c1$export$default","intersection","argsLength","unzip","$3bec954eabc457cb62116031cb235e37$export$default","$af75977507aff8933bffef565e4ee112$export$default","range","stop","step","ceil","chunk","count","chainResult","mixin","$fcebd106c8e4d33ef1435c1fa5d33be6$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$push","$0a2e0b4c3f16213b5041641f42b3644c$export$default","$4766d843fd37944fe6c40ebbaa7aaf5e$export$ArrayProto","dest","$b7eed12b70c12bb159736912ae43341b$export$default","$b41c17ef6dc9c02f08a4b1fcd727bea6$exports","$4f98dcf3c1c9e6d326d487da110886a3$var$_slash","isExtendedLengthPath","hasNonAscii","$fa15ed738edc607bff6e414ee1228faf$var$_events","$94f1d08a4a84a8c311c1f201dc9caab3$exports","minimatch","Minimatch","sep","er","GLOBSTAR","$5e1c6d569f37099081111fea8b1350af$exports","xs","fn","res","x","balanced","str","maybeMatch","r","end","pre","body","post","reg","m","begs","beg","ai","indexOf","bi","$d2ff992d4b3847eaa4295f2dce291d6e$exports","$c5ba3e561919a5724e211288e888a239$exports","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseInt","charCodeAt","parseCommaParts","parts","p","postParts","shift","embrace","isPadded","el","lte","y","gte","isTop","expansions","isNumericSequence","isAlphaSequence","isSequence","isOptions","N","width","incr","abs","pad","c","fromCharCode","need","z","k","expansion","plTypes","!","open","close","?","+","*","@","reSpecials","reduce","set","slashSplit","ext","t","pattern","nocomment","charAt","trim","regexp","comment","empty","make","braceExpand","nobrace","def","orig","debug","_made","parseNegate","globSet","console","error","globParts","s","si","parse","negateOffset","nonegate","isSub","noglobstar","stateChar","re","hasMagic","nocase","escaping","patternListStack","negativeLists","inClass","reClassStart","classStart","patternStart","dot","clearStateChar","qmark","noext","reStart","pl","reEnd","cs","substring","sp","SUBPARSE","tail","$1","$2","addPatternStart","nl","nlBefore","nlFirst","nlLast","nlAfter","openParensBefore","cleanAfter","dollar","globUnescape","flags","regExp","_glob","_src","makeRe","twoStar","regExpEscape","ex","mm","f","nonull","filename","file","matchBase","matchOne","flipNegate","fi","pi","fl","hit","fr","pr","swallowee","toLowerCase","$fa15ed738edc607bff6e414ee1228faf$var$_minimatch","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireDefault","$fa15ed738edc607bff6e414ee1228faf$var$_atom","_atom","arr1","arr2","merge","unique","$f4fbba484e338d4cc479dcb545e6ede1$var$_child_process","_child_process","$f4fbba484e338d4cc479dcb545e6ede1$var$_buffer","_buffer","_util","promisify","execRaw","arr","Set","constants","MAX_STRING_LENGTH","givenPath","givenDirectory","process","cwd","globifyGitIgnoreEntry","posixifyPath","posixifyPathNormalized","async","gitIgnoreDirectory","globifyGitIgnore","readFile","$4a0570ffb59508c94710a9a747410fe2$var$_path","$4a0570ffb59508c94710a9a747410fe2$var$_interopRequireDefault","$4a0570ffb59508c94710a9a747410fe2$var$_fs","_fs","$ca560b1b07b959600e569905955ed014$exports","$d84d6b637c7769402975c728f375b639$exports","$60c7e5d61437baa38000fc639789d10f$exports","$4a0570ffb59508c94710a9a747410fe2$var$_isValidPath","stat","promises","normalize","gitIgnoreContent","gitIgnoreEntries","entry","trimLeadingWhiteSpace","trimTrailingWhitespace","gitIgnoreEntriesNum","globEntries","iEntry","globifyOutput","$f4fbba484e338d4cc479dcb545e6ede1$exports","gitIgnoreEntry","forceInclude","pathType","PATH_TYPE","OTHER","getPathType","slashPlacement","startsWith","DIRECTORY","endsWith","FILE","filepath","pathStat","isDirectory","isFile","$b56ba0897d13f41cd51499a721c56b78$exports","generate","$b56ba0897d13f41cd51499a721c56b78$export$generate","convertPatternsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternsToTasks","getPositivePatterns","$b56ba0897d13f41cd51499a721c56b78$export$getPositivePatterns","getNegativePatternsAsPositive","$b56ba0897d13f41cd51499a721c56b78$export$getNegativePatternsAsPositive","groupPatternsByBaseDirectory","$b56ba0897d13f41cd51499a721c56b78$export$groupPatternsByBaseDirectory","convertPatternGroupsToTasks","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupsToTasks","convertPatternGroupToTask","$b56ba0897d13f41cd51499a721c56b78$export$convertPatternGroupToTask","$422804cb8a651aa6acba0ac7e3785dc6$exports","$422804cb8a651aa6acba0ac7e3785dc6$export$array","errno","$422804cb8a651aa6acba0ac7e3785dc6$export$errno","fs","$422804cb8a651aa6acba0ac7e3785dc6$export$fs","$422804cb8a651aa6acba0ac7e3785dc6$export$path","$422804cb8a651aa6acba0ac7e3785dc6$export$pattern","stream","$422804cb8a651aa6acba0ac7e3785dc6$export$stream","$422804cb8a651aa6acba0ac7e3785dc6$export$string","$91f583c15909e1ccdadbaf9bc51c6127$exports","$91f583c15909e1ccdadbaf9bc51c6127$export$flatten","splitWhen","$91f583c15909e1ccdadbaf9bc51c6127$export$splitWhen","groupIndex","$93874595d176bf29bfc3a9b922d2d4ff$exports","isEnoentCodeError","$93874595d176bf29bfc3a9b922d2d4ff$export$isEnoentCodeError","$455498c2b58a70fafa5a615bba0f0fb7$exports","createDirentFromStats","$455498c2b58a70fafa5a615bba0f0fb7$export$createDirentFromStats","DirentFromStats","stats","isBlockDevice","bind","isCharacterDevice","isFIFO","isSocket","isSymbolicLink","$f5f5eda539478a6d918ab7b348725789$exports","unixify","$f5f5eda539478a6d918ab7b348725789$export$unixify","makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$makeAbsolute","$f5f5eda539478a6d918ab7b348725789$export$escape","removeLeadingDotSegment","$f5f5eda539478a6d918ab7b348725789$export$removeLeadingDotSegment","UNESCAPED_GLOB_SYMBOLS_RE","resolve","secondCharactery","$f0f3d808071f63337f37da8160be0d3f$exports","isStaticPattern","$f0f3d808071f63337f37da8160be0d3f$export$isStaticPattern","isDynamicPattern","$f0f3d808071f63337f37da8160be0d3f$export$isDynamicPattern","convertToPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToPositivePattern","convertToNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$convertToNegativePattern","isNegativePattern","$f0f3d808071f63337f37da8160be0d3f$export$isNegativePattern","isPositivePattern","$f0f3d808071f63337f37da8160be0d3f$export$isPositivePattern","getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getNegativePatterns","$f0f3d808071f63337f37da8160be0d3f$export$getPositivePatterns","getBaseDirectory","$f0f3d808071f63337f37da8160be0d3f$export$getBaseDirectory","hasGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$hasGlobStar","endsWithSlashGlobStar","$f0f3d808071f63337f37da8160be0d3f$export$endsWithSlashGlobStar","isAffectDepthOfReadingPattern","$f0f3d808071f63337f37da8160be0d3f$export$isAffectDepthOfReadingPattern","expandPatternsWithBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandPatternsWithBraceExpansion","expandBraceExpansion","$f0f3d808071f63337f37da8160be0d3f$export$expandBraceExpansion","getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$getPatternParts","$f0f3d808071f63337f37da8160be0d3f$export$makeRe","convertPatternsToRe","$f0f3d808071f63337f37da8160be0d3f$export$convertPatternsToRe","matchAny","$f0f3d808071f63337f37da8160be0d3f$export$matchAny","$d2ddf728bc1d253a698155c4263853ec$exports","exec","chars","{","(","[","strictRegex","relaxedRegex","$5aad54ce2053ff01913dccb4f07fd55c$exports","regex","pathPosixDirname","posix","dirname","isWin32","_os","platform","backslash","enclosure","globby","escaped","$107d7de280ab69882848c42370ab9741$exports","opts","assign","flipBackslashes","util","num","Number","isInteger","block","invalid","commas","ranges","nodes","acc","node","flat","ele","$1e8b6070e1240c880554363b46d3fed7$exports","ast","stringify","parent","invalidBlock","escapeInvalid","$a60c24b13b89c4d0c490303e65b46fb5$export$isInvalidBrace","invalidNode","$a60c24b13b89c4d0c490303e65b46fb5$export$isOpenOrClose","child","$816bff67e45ad0133289504628da3d9a$exports","toRegexRange","relaxZeros","strictZeros","cacheKey","shorthand","capture","hasPadding","state","positives","negatives","maxLen","splitToPatterns","neg","pos","onlyNegative","filterPatterns","onlyPositive","intersected","collatePatterns","rangeToPattern","digits","zipped","zip","startDigit","stopDigit","toCharacterClass","tok","prev","nines","zeros","countNines","stops","countZeros","compare","splitToRanges","tokens","padZeros","toQuantifier","comparison","val","repeat","integer","diff","relax","clearCache","$6d6653f07a5df1bec4f49ea73e086fb7$exports","isValidValue","isNumber","maxLength","toNumber","dash","padStart","toMaxLen","negative","toRange","isNumbers","toRegex","rangeError","RangeError","inspect","invalidRange","strictRanges","fillNumbers","descending","startString","endString","stepString","padded","format","transform","toSequence","fill","fillLetters","invalidStep","$8a115514cdcc2d344e3c6e4194b9bce0$exports","$8fc16ef203be5a0514807a93b6777563$exports","walk","isOpen","isClose","$a60c24b13b89c4d0c490303e65b46fb5$export$reduce","append","queue","stash","enclose","$a60c24b13b89c4d0c490303e65b46fb5$export$flatten","$98c28db8c364ac8fc1a0f2f695f25755$exports","rangeLimit","q","limit","$a60c24b13b89c4d0c490303e65b46fb5$export$isInteger","$a60c24b13b89c4d0c490303e65b46fb5$export$exceedsLimit","$a60c24b13b89c4d0c490303e65b46fb5$export$encloseBrace","$22131639b2616d9722fac2c6e041c38d$exports","MAX_LENGTH","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_COMMA","CHAR_DOLLAR","CHAR_DOT","CHAR_DOUBLE_QUOTE","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LEFT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_LINE_FEED","CHAR_NO_BREAK_SPACE","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_RIGHT_CURLY_BRACE","CHAR_RIGHT_SQUARE_BRACKET","CHAR_SEMICOLON","CHAR_SINGLE_QUOTE","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","$10df006dd7c479e8b1fbaf07a5e6ef6d$exports","SyntaxError","stack","brackets","advance","siblings","next","keepQuotes","keepEscaping","splice","braces","nodupes","compile","noempty","$f7e75fe2d5891a3845c8cdcf400928b9$exports","win32","POSIX_CHARS","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","START_ANCHOR","WINDOWS_CHARS","$2aa45786d7b1a24460688dafa7cd10c1$exports","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit","REGEX_BACKSLASH","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REGEX_SPECIAL_CHARS_GLOBAL","REGEX_REMOVE_BACKSLASH","REPLACEMENTS","***","**/**","**/**/**","CHAR_BACKWARD_SLASH","CHAR_GRAVE_ACCENT","SEP","extglobChars","globChars","segs","version","windows","char","lastIdx","lastIndexOf","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeLast","isPathSeparator","token","isPrefix","isGlobstar","$792e04290caab34ee0f413c5302f1daa$exports","scanToEnd","slashes","lastIndex","isBrace","isBracket","isGlob","isExtglob","braceEscaped","backslashes","negated","finished","eos","noparen","base","glob","unescape","$ebaa6f4c338ac819d1935e6e1a148c35$export$removeBackslashes","maxDepth","prevIndex","expandRange","$ebaa6f4c338ac819d1935e6e1a148c35$export$escapeRegex","syntaxError","bos","prepend","$ebaa6f4c338ac819d1935e6e1a148c35$export$isWindows","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","nodot","qmarkNoDot","star","bash","noextglob","consumed","backtrack","parens","quotes","$ebaa6f4c338ac819d1935e6e1a148c35$export$removePrefix","extglobs","peek","consume","increment","decrement","extglob","inner","extglobOpen","conditions","extglobClose","extglobStar","includes","negatedExtglob","fastpaths","esc","$ebaa6f4c338ac819d1935e6e1a148c35$export$wrapOutput","strictBrackets","nobracket","prevValue","literalBrackets","outputIndex","tokensIndex","brace","dots","unshift","comma","out","toks","$ebaa6f4c338ac819d1935e6e1a148c35$export$supportsLookbehinds","prior","isStart","afterStar","strictSlashes","suffix","slashDot","$6e8d8166959b5ff3d661dc0055efdd9f$exports","picomatch","returnState","fns","isState","compileRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","returnObject","onIgnore","$ebaa6f4c338ac819d1935e6e1a148c35$export$toPosixSlashes","basename","patterns","scan","parsed","returnOutput","undefined","$fc5ef10ca8dd1fe38db1d11fc62fe19f$exports","isEmptyString","micromatch","omit","keep","matched","delete","matches","failglob","nullglob","any","not","matchKeys","all","$f2329f365247f210b8156a3719658264$exports","COMMON_GLOB_SYMBOLS_RE","REGEX_CHARACTER_CLASS_SYMBOLS_RE","REGEX_GROUP_SYMBOLS_RE","GLOB_EXTENSION_SYMBOLS_RE","BRACE_EXPANSIONS_SYMBOLS_RE","caseSensitiveMatch","braceExpansion","patternsRe","patternRe","$1c4725cc0eec0ba2a9cab82dca5d79b3$exports","$1c4725cc0eec0ba2a9cab82dca5d79b3$export$merge","PassThrough","_stream","pauseStreams","streams","_readableState","pipe","pause","propagateCloseEventToSources","emit","$1ba7229c5942e8d4c054a45f1010e685$exports","streamsQueue","merging","doEnd","doPipeError","pipeError","objectMode","highWaterMark","mergedStream","addStream","mergeStream","nextTick","endStream","pipesCount","onend","removeListener","onerror","endEmitted","on","resume","setMaxListeners","once","$8d649816915867a8dfedf6898a9b2196$exports","isString","$8d649816915867a8dfedf6898a9b2196$export$isString","$8d649816915867a8dfedf6898a9b2196$export$isEmpty","positivePatterns","negativePatterns","staticPatterns","dynamicPatterns","staticTasks","dynamicTasks","positive","dynamic","positivePatternsGroup","$677e1f9ecd1673837491374705f546dd$exports","$c3e3e08b60e55625cd4e631817b89d50$exports","stream_1","$8bc05361d389b6be72b3fadae5d2c556$exports","Settings","$8bc05361d389b6be72b3fadae5d2c556$export$Settings","$8bc05361d389b6be72b3fadae5d2c556$export$stat","statSync","$8bc05361d389b6be72b3fadae5d2c556$export$statSync","$c757a2be40f3f48082549c06e4547542$exports","callFailureCallback","callback","callSuccessCallback","read","$c757a2be40f3f48082549c06e4547542$export$read","lstat","lstatError","followSymbolicLink","statError","throwErrorOnBrokenSymbolicLink","markSymbolicLink","$97b5151977b7dc49adf88b0dc34f7308$exports","$97b5151977b7dc49adf88b0dc34f7308$export$read","lstatSync","$19677b2ad3509b94009ff08f0946ce90$exports","$b5f0fa6cf50d6601b5ee3d943652391c$exports","FILE_SYSTEM_ADAPTER","$b5f0fa6cf50d6601b5ee3d943652391c$export$FILE_SYSTEM_ADAPTER","createFileSystemAdapter","$b5f0fa6cf50d6601b5ee3d943652391c$export$createFileSystemAdapter","fsMethods","_options","_getValue","option","$19677b2ad3509b94009ff08f0946ce90$export$default","optionsOrSettingsOrCallback","getSettings","settingsOrOptions","optionsOrSettings","$eceae383f01b15ff1b6fce0fa9f8d97d$exports","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walk","walkSync","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkSync","walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$walkStream","$eceae383f01b15ff1b6fce0fa9f8d97d$export$Settings","$c6d3aff5b0a5966bf30792563b3a0384$exports","$2c1da33ebca0bd837fc7dcf17c42be81$exports","events_1","$e940d7682608bb6ab0d351114f165b6d$exports","scandir","$e940d7682608bb6ab0d351114f165b6d$export$scandir","scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$scandirSync","$e940d7682608bb6ab0d351114f165b6d$export$Settings","$314ec937a4d965a0890bab57635345d3$exports","$314ec937a4d965a0890bab57635345d3$export$read","readdirWithFileTypes","$314ec937a4d965a0890bab57635345d3$export$readdirWithFileTypes","readdir","$314ec937a4d965a0890bab57635345d3$export$readdir","$ee705190b72702064369939585ddf174$exports","tasks","pending","isSync","done","$9abdb09d41774389792d67d69b4fe3ff$exports","task","promise","queueMicrotask","Promise","then","catch","$dad7fc182206763d2004f78578778508$exports","IS_SUPPORT_READDIR_WITH_FILE_TYPES","$dad7fc182206763d2004f78578778508$export$IS_SUPPORT_READDIR_WITH_FILE_TYPES","NODE_PROCESS_VERSION_PARTS","versions","MAJOR_VERSION","MINOR_VERSION","$d544a5a010663f653d340b184986120a$exports","$d544a5a010663f653d340b184986120a$export$fs","$ccd93f79daa6be19a6748935356dbb79$exports","$ccd93f79daa6be19a6748935356dbb79$export$createDirentFromStats","$6658770e654f379eb538a3f81ba91751$exports","joinPathSegments","$6658770e654f379eb538a3f81ba91751$export$joinPathSegments","separator","directory","withFileTypes","readdirError","dirents","entries","dirent","pathSegmentSeparator","followSymbolicLinks","makeRplTaskEntry","rplError","rplEntries","filepaths","fsStatSettings","$01ea633ddab34ae6965f3c2bf6c0fdf7$exports","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$read","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdirWithFileTypes","$01ea633ddab34ae6965f3c2bf6c0fdf7$export$readdir","readdirSync","entryPath","$2178ef4714438fffd03a80cd32cc1efc$exports","$b473c9fa0fefad548831ab1e8171c472$exports","$b473c9fa0fefad548831ab1e8171c472$export$FILE_SYSTEM_ADAPTER","$b473c9fa0fefad548831ab1e8171c472$export$createFileSystemAdapter","$2178ef4714438fffd03a80cd32cc1efc$export$default","fastqueue","worker","concurrency","$2cb7890bd90df65b7917472cc3d070d2$exports","Task","queueHead","queueTail","_running","errorHandler","current","release","paused","saturated","worked","drain","running","idle","counter","getQueue","kill","killAndDrain","handler","holder","Constructor","head","arg","pushCb","unshiftCb","$553e79dfd0e4ab7c0f7f9af852602d0d$exports","$553e79dfd0e4ab7c0f7f9af852602d0d$export$promise","$28ccf74058ee42aa9a9cec32fb934bd7$exports","isFatalError","$28ccf74058ee42aa9a9cec32fb934bd7$export$isFatalError","isAppliedFilter","$28ccf74058ee42aa9a9cec32fb934bd7$export$isAppliedFilter","replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$replacePathSegmentSeparator","$28ccf74058ee42aa9a9cec32fb934bd7$export$joinPathSegments","errorFilter","$bc0bb7d1dd6380f5e8c286e7a6e9815d$exports","_root","_settings","$bc0bb7d1dd6380f5e8c286e7a6e9815d$export$default","AsyncReader","super","_scandir","_emitter","EventEmitter","_queue","_worker","_isFatalError","_isDestroyed","setImmediate","_pushToQueue","basePath","isDestroyed","onEntry","onError","onEnd","queueItem","_handleError","fsScandirSettings","_handleEntry","fullpath","entryFilter","_emitEntry","deepFilter","$2c1da33ebca0bd837fc7dcf17c42be81$export$default","_reader","_storage","$c6d3aff5b0a5966bf30792563b3a0384$export$default","$26be4b79794f6d80679cb8a25362498f$exports","Readable","$26be4b79794f6d80679cb8a25362498f$export$default","$e5f6e8e612b06ed892409b430c8501ee$exports","$862a344797f6c1c72b54b76336d38abc$exports","SyncReader","_handleQueue","_handleDirectory","_pushToStorage","$862a344797f6c1c72b54b76336d38abc$export$default","$e5f6e8e612b06ed892409b430c8501ee$export$default","$3c25873d4160a8eacbf3af0cf040b718$exports","$3c25873d4160a8eacbf3af0cf040b718$export$default","$da952f7f027e09e1d041fa364119e728$exports","_fsStatSettings","_getFullEntryPath","_makeEntry","suppressErrors","$da952f7f027e09e1d041fa364119e728$export$default","ReaderStream","_walkStream","_stat","static","_write","_enc","_getEntry","write","_getStat","$c3e3e08b60e55625cd4e631817b89d50$export$default","$d315fb9167b993f8afd07ce80b5b4d50$exports","$6fb777a4248090afc927d654da80432d$exports","$f52404b5656f6ca38bf54f7e0d7562ff$exports","$a84da9eb5f7db2806540bcfd25d29295$exports","_patterns","_micromatchOptions","_fillStorage","segments","_getPatternSegments","sections","_splitSegmentsIntoSections","complete","part","segment","$a84da9eb5f7db2806540bcfd25d29295$export$default","PartialMatcher","levels","info","section","$f52404b5656f6ca38bf54f7e0d7562ff$export$default","getFilter","_getMatcher","negativeRe","_getNegativePatternsRe","_filter","affectDepthOfReadingPatterns","_isSkippedByDeep","_isSkippedSymbolicLink","_isSkippedByPositivePatterns","_isSkippedByNegativePatterns","deep","_getEntryLevel","entryPathDepth","baseNameMatch","$6fb777a4248090afc927d654da80432d$export$default","$b3e746e92b1737cb08f1292865d58230$exports","positiveRe","_isDuplicateEntry","_onlyFileFilter","_onlyDirectoryFilter","_isSkippedByAbsoluteNegativePatterns","isMatched","_isMatchToPatterns","_createIndexRecord","onlyFiles","onlyDirectories","absolute","$b3e746e92b1737cb08f1292865d58230$export$default","$368d0b7e1e0205e704c7318f9975b611$exports","_isNonFatalError","$368d0b7e1e0205e704c7318f9975b611$export$default","$18cfe2da09606ed5942660f61e639ba3$exports","getTransformer","_transform","markDirectories","$18cfe2da09606ed5942660f61e639ba3$export$default","_getMicromatchOptions","entryTransformer","_getRootDirectory","_getReaderOptions","$d315fb9167b993f8afd07ce80b5b4d50$export$default","ProviderAsync","api","$677e1f9ecd1673837491374705f546dd$export$default","$830d12722898172b5cedb0edbe76ea36$exports","ProviderStream","destination","$830d12722898172b5cedb0edbe76ea36$export$default","$27ad7a9b24a00373e965e24243868ccf$exports","$664d9e7b85bb79c5eccce16646452ba6$exports","ReaderSync","_walkSync","_statSync","$664d9e7b85bb79c5eccce16646452ba6$export$default","ProviderSync","$27ad7a9b24a00373e965e24243868ccf$export$default","$806ac1c6f72abd60a35a06af79845a5d$exports","DEFAULT_FILE_SYSTEM_ADAPTER","$806ac1c6f72abd60a35a06af79845a5d$export$DEFAULT_FILE_SYSTEM_ADAPTER","os","CPU_COUNT","cpus","FastGlob","_getFileSystemMethods","assertPatternsInput","works","getWorks","_Provider","provider","$806ac1c6f72abd60a35a06af79845a5d$export$default","sync","generateTasks","escapePath","$fa15ed738edc607bff6e414ee1228faf$var$_fastGlob","sysPath","realpath","NORMAL_FLOW_ERRORS","FILE_TYPE","DIR_TYPE","FILE_DIR_TYPE","EVERYTHING_TYPE","ALL_TYPES","normalizeFilter","trimmed","ReaddirpStream","defaultOptions","fileFilter","directoryFilter","alwaysStat","autoDestroy","_fileFilter","_directoryFilter","statMethod","bigint","_maxDepth","_wantsDir","_wantsFile","_wantsEverything","_isDirent","_statsProp","_rdOptions","encoding","parents","_exploreDir","reading","[object Object]","batch","destroyed","files","_formatEntry","entryType","_getEntryType","fullPath","_includeAsFile","_onError","full","entryRealPath","entryRealPathStats","readdirp","$ca2f5dac767861320668accf6d4b1e70$exports","$bf37ad29abbcf103c358641a77b0e0f6$exports","$ad5394e8af4b9d7be86d4aaa529d2093$exports","stripTrailing","ch","DEFAULT_OPTIONS","returnIndex","matchPatterns","negPatterns","isList","_path","nglob","applied","anymatch","matchers","testString","mtchers","negatedGlobs","createPattern","ri","$9a6725cc51f237c59bd2dde101a7e043$exports","JSON","$f679af930e9349262225e182daa7fd86$exports","filePath","extname","fsrealpath","statMethods","foreach","addAndConvert","main","container","delFromSet","isEmptySet","FsWatchInstances","createFsWatchInstance","listener","errHandler","emitRaw","handleEvent","rawEvent","evPath","watchedPath","fsWatchBroadcast","watch","val1","val2","val3","cont","setFsWatchListener","handlers","rawEmitter","watcher","persistent","broadcastErr","watcherUnusable","$8cbc3845e0a0b879f092531808396835$export$isWindows","fd","listeners","errHandlers","rawEmitters","$8cbc3845e0a0b879f092531808396835$export$HANDLER_KEYS","clear","clearItem","freeze","FsWatchFileInstances","$9ee9127d63637f961c4ff451ce8a7aa4$exports","fsW","fsw","_boundHandleError","_watchWithNodeFs","_getWatchedDir","absolutePath","closer","$8cbc3845e0a0b879f092531808396835$export$EMPTY_FN","usePolling","interval","enableBinaryInterval","binaryInterval","copts","unwatchFile","watchFile","curr","currmtime","mtimeMs","setFsWatchFileListener","_emitRaw","_handleFile","initialAdd","closed","prevStats","newStats","_throttle","at","atimeMs","mt","_emit","$8cbc3845e0a0b879f092531808396835$export$isLinux","ino","_closeFile","_addPathCloser","_remove","ignoreInitial","_isntIgnored","followSymlinks","_incrReadyCount","linkPath","_symlinkPaths","_emitReady","_handleRead","wh","target","throttler","hasGlob","_readdirp","filterPath","filterDir","_handleSymlink","_addToNodeFs","wasThrottled","getChildren","parentDir","tracked","globFilter","oDepth","dirPath","priorWh","ready","_isIgnored","_getWatchHelpers","watchPath","follow","absPath","targetPath","_handleDir","fsevents","env","CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR","mtch","maj","FSEventsWatchers","wrongEventFlags","createFSEventsInstance","couldConsolidate","calcDepth","sameTypes","$ac251d5e34947b0caba198911f769a5d$exports","checkIgnored","ipaths","_ignoredPaths","addOrChange","realPath","watchedDir","event","curDepth","_addToFsEvents","eventName","_watchWithFsEvents","parentPath","resolvedPath","hasSymlink","filteredListener","watchedParent","getInfo","lst","setFSEventsListener","ignored","checkExists","linkTarget","aliasedPath","$8cbc3845e0a0b879f092531808396835$export$DOT_SLASH","emitAdd","newPath","processPath","forceAdd","pp","isDir","dirObj","initWatch","priorDepth","$8cbc3845e0a0b879f092531808396835$export$IDENTITY_FN","joinedPath","_handleFsEventsSymlink","canUse","$ac251d5e34947b0caba198911f769a5d$export$canUse","arrify","unifyPaths","paths_","paths","normalizePathToUnix","toUnix","$8cbc3845e0a0b879f092531808396835$export$BACK_SLASH_RE","$8cbc3845e0a0b879f092531808396835$export$DOUBLE_SLASH_RE","normalizeIgnored","isAbsolute","undef","DirEntry","removeWatcher","_removeWatcher","WatchHelper","$8cbc3845e0a0b879f092531808396835$export$REPLACER_RE","fullWatchPath","globSymlink","$8cbc3845e0a0b879f092531808396835$export$ANYMATCH_OPTS","dirParts","getDirParts","checkGlobSymlink","fullParentDir","_hasReadPermissions","$8cbc3845e0a0b879f092531808396835$export$SLASH_OR_BACK_SLASH_RE","entryParts","unmatchedGlob","FSWatcher","_opts","_watched","_closers","_throttled","_streams","ignorePermissionErrors","disableGlobbing","useFsEvents","$8cbc3845e0a0b879f092531808396835$export$isMacos","envPoll","CHOKIDAR_USEPOLLING","envLower","envInterval","CHOKIDAR_INTERVAL","atomic","_pendingUnlinks","awaitWriteFinish","awf","stabilityThreshold","pollInterval","_pendingWrites","readyCalls","_readyCount","_readyEmitted","_fsEventsHandler","_nodeFsHandler","_origAdd","_internal","getAbsolutePath","_userIgnored","unwatch","_closePath","_closePromise","removeAllListeners","closers","closerList","getWatched","watchList","emitWithAll","pw","lastChange","awfEmit","_awaitWriteFinish","actionType","action","actionPath","timeoutObject","thr","threshold","timeoutHandler","prevStat","curStat","cancelWait","_getGlobIgnored","$8cbc3845e0a0b879f092531808396835$export$DOT_RE","ign","_boundRemove","st","mode","it","nested","wasTracked","remove","relPath","$5fc730f58802e221fd46116902978493$exports","$5fc730f58802e221fd46116902978493$export$FSWatcher","$5fc730f58802e221fd46116902978493$export$watch","$fa15ed738edc607bff6e414ee1228faf$var$chokidar","$fa15ed738edc607bff6e414ee1228faf$var$_interopRequireWildcard","PathsCache","rebuildCacheBound","_projectChangeWatcher","project","onDidChangePaths","_onDidChangeFilesBound","_onDidChangeFiles","_projectWatcher","onDidChangeFiles","_repositories","_filePathsByProjectDirectory","_filePathsByDirectory","_fileWatchersByDirectory","excludeVcsIgnoredPaths","shouldIgnoredNames","_cancelled","_cacheProjectPathsAndRepositories","_cachePaths","_addWatchers","getFilePathsForProjectDirectory","projectDirectory","relativeToPath","filePaths","isPackageDispose","_isPathIgnored","repository","isIgnoredSubmodule","isSubmodule","isPathIgnored","ignoredName","ignoredPattern","_projectDirectories","getDirectories","projectNum","repositoriesP","repositoryForDirectory","repositories","_addWatcherForDirectory","projectPath","getPath","_getAllIgnoredGlob","chokidar","addedFile","onAddFile","removedFile","onRemoveFile","addedDir","onAddDir","removedDir","onRemoveDir","iFile","Directory","_cachePathsForDirectory","_removeFilePathsForDirectory","_cleanWatchersForDirectory","otherDirectory","events","oldPath","pd","directoryPath","_cachePathsWithGlob","_cachePathsWithAtom","_cachePathsForDirectoryWithGlob","_cachePathsForDirectoryWithAtom","patternsNum","$4a0570ffb59508c94710a9a747410fe2$exports","globifyPath","globifyGitIgnoreFile","_getGitIgnoreGlob","_getIgnoredPatternsGlob","directoryGlob","globifyDirectory","_getDirectoryEntries","directories","File","filePathsArray","notifications","addError","dismissable","union","$4f98dcf3c1c9e6d326d487da110886a3$var$_pathsCache","$4f98dcf3c1c9e6d326d487da110886a3$var$_zadeh","_zadeh","javascriptPrefixes","javascriptExtensions","javascriptReplaceOnInsert","includeCurrentDirectory","PathsProvider","_isReady","_onRebuildCache","_onRebuildCacheDone","_scopes","DefaultScopes","_getSuggestionsForScope","scope","request","pathPrefix","_getLineTextForRequest","trailingSlashPresent","directoryGiven","parsedPathPrefix","editor","getBuffer","_getProjectDirectory","currentDirectory","requestedDirectoryPath","fuzzyMatcher","pth","maxResults","suggestions","pathName","projectRelativePath","relativizePath","displayText","relativePath","from","to","distanceToFile","replacementPrefix","iconHTML","score","suggestionsCount","maxDistance","_scopeMatchesRequest","$f9e106c2e1e1ccc57480ff8b927bda19$export$default","isReady","fileCount","accumulated","sourceScopes","$228fb12415c5bb7e75d32ba8bde9e7be$export$default","scopeDescriptor","getScopesArray","line","lineMatch","bufferPosition","getTextInRange","row","selector","inclusionPriority","$03598ba88244fec3d8d0cb2db73afc9c$var$_pathsProvider","$4f98dcf3c1c9e6d326d487da110886a3$exports","CompositeDisposable","_statusBarElement","createElement","innerHTML","addRightTile","priority","getProvider","setInterval"],"version":3,"file":"autocomplete-paths.js.map"} \ No newline at end of file diff --git a/package.json b/package.json index 47d1121..db26c77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "autocomplete-paths", "main": "./dist/autocomplete-paths.js", - "version": "2.13.0", + "version": "2.14.0", "description": "Adds path autocompletion to autocomplete+", "repository": "https://github.com/atom-community/autocomplete-paths", "license": "MIT",