From 33d9dae29743ddefa2406936fa414913fcbbcc2c Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Mon, 15 Feb 2021 22:09:01 -0800 Subject: [PATCH] fix --- bin/git-peek | 24 ++++++++++++------------ bin/git-peek.map | 4 ++-- src/index.ts | 6 +++--- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/bin/git-peek b/bin/git-peek index d8b142b..2555778 100755 --- a/bin/git-peek +++ b/bin/git-peek @@ -1,9 +1,9 @@ #!/usr/bin/env node -var H2=Object.create,Ts=Object.defineProperty,W2=Object.getPrototypeOf,V2=Object.prototype.hasOwnProperty,Y2=Object.getOwnPropertyNames,X2=Object.getOwnPropertyDescriptor;var Zf=t=>Ts(t,"__esModule",{value:!0});var d=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports),K2=(t,e)=>{for(var r in e)Ts(t,r,{get:e[r],enumerable:!0})},Z2=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Y2(e))!V2.call(t,i)&&i!=="default"&&Ts(t,i,{get:()=>e[i],enumerable:!(r=X2(e,i))||r.enumerable});return t},Te=t=>t&&t.__esModule?t:Z2(Zf(Ts(t!=null?H2(W2(t)):{},"default",{value:t,enumerable:!0})),t);var Ta=d((XD,Jf)=>{"use strict";Jf.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var La=d((KD,Qf)=>{"use strict";var J2=Ta();function eh(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=J2(t);return t=t.substring(t.indexOf("://")+3),eh(e)?!0:t.indexOf("@"){"use strict";th.exports=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)});var ah=d((JD,ih)=>{"use strict";var nh="%[a-f0-9]{2}",sh=new RegExp(nh,"gi"),oh=new RegExp("("+nh+")+","gi");function xa(t,e){try{return decodeURIComponent(t.join(""))}catch(n){}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],xa(r),xa(i))}function Q2(t){try{return decodeURIComponent(t)}catch(i){for(var e=t.match(sh),r=1;r{"use strict";uh.exports=(t,e)=>{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];let r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]}});var fh=d((e5,lh)=>{"use strict";lh.exports=function(t,e){for(var r={},i=Object.keys(t),n=Array.isArray(e),s=0;s{"use strict";var tO=rh(),rO=ah(),hh=ch(),iO=fh(),nO=t=>t==null;function sO(t){switch(t.arrayFormat){case"index":return e=>(r,i)=>{let n=r.length;return i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,[Le(e,t),"[",n,"]"].join("")]:[...r,[Le(e,t),"[",Le(n,t),"]=",Le(i,t)].join("")]};case"bracket":return e=>(r,i)=>i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,[Le(e,t),"[]"].join("")]:[...r,[Le(e,t),"[]=",Le(i,t)].join("")];case"comma":case"separator":return e=>(r,i)=>i==null||i.length===0?r:r.length===0?[[Le(e,t),"=",Le(i,t)].join("")]:[[r,Le(i,t)].join(t.arrayFormatSeparator)];default:return e=>(r,i)=>i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,Le(e,t)]:[...r,[Le(e,t),"=",Le(i,t)].join("")]}}function oO(t){let e;switch(t.arrayFormat){case"index":return(r,i,n)=>{if(e=/\[(\d*)\]$/.exec(r),r=r.replace(/\[\d*\]$/,""),!e){n[r]=i;return}n[r]===void 0&&(n[r]={}),n[r][e[1]]=i};case"bracket":return(r,i,n)=>{if(e=/(\[\])$/.exec(r),r=r.replace(/\[\]$/,""),!e){n[r]=i;return}if(n[r]===void 0){n[r]=[i];return}n[r]=[].concat(n[r],i)};case"comma":case"separator":return(r,i,n)=>{let s=typeof i=="string"&&i.includes(t.arrayFormatSeparator),o=typeof i=="string"&&!s&&Dr(i,t).includes(t.arrayFormatSeparator);i=o?Dr(i,t):i;let a=s||o?i.split(t.arrayFormatSeparator).map(u=>Dr(u,t)):i===null?i:Dr(i,t);n[r]=a};default:return(r,i,n)=>{if(n[r]===void 0){n[r]=i;return}n[r]=[].concat(n[r],i)}}}function ph(t){if(typeof t!="string"||t.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Le(t,e){return e.encode?e.strict?tO(t):encodeURIComponent(t):t}function Dr(t,e){return e.decode?rO(t):t}function dh(t){return Array.isArray(t)?t.sort():typeof t=="object"?dh(Object.keys(t)).sort((e,r)=>Number(e)-Number(r)).map(e=>t[e]):t}function mh(t){let e=t.indexOf("#");return e!==-1&&(t=t.slice(0,e)),t}function aO(t){let e="",r=t.indexOf("#");return r!==-1&&(e=t.slice(r)),e}function gh(t){t=mh(t);let e=t.indexOf("?");return e===-1?"":t.slice(e+1)}function yh(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&typeof t=="string"&&t.trim()!==""?t=Number(t):e.parseBooleans&&t!==null&&(t.toLowerCase()==="true"||t.toLowerCase()==="false")&&(t=t.toLowerCase()==="true"),t}function vh(t,e){e=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},e),ph(e.arrayFormatSeparator);let r=oO(e),i=Object.create(null);if(typeof t!="string"||(t=t.trim().replace(/^[?#&]/,""),!t))return i;for(let n of t.split("&")){if(n==="")continue;let[s,o]=hh(e.decode?n.replace(/\+/g," "):n,"=");o=o===void 0?null:["comma","separator"].includes(e.arrayFormat)?o:Dr(o,e),r(Dr(s,e),o,i)}for(let n of Object.keys(i)){let s=i[n];if(typeof s=="object"&&s!==null)for(let o of Object.keys(s))s[o]=yh(s[o],e);else i[n]=yh(s,e)}return e.sort===!1?i:(e.sort===!0?Object.keys(i).sort():Object.keys(i).sort(e.sort)).reduce((n,s)=>{let o=i[s];return Boolean(o)&&typeof o=="object"&&!Array.isArray(o)?n[s]=dh(o):n[s]=o,n},Object.create(null))}Xe.extract=gh;Xe.parse=vh;Xe.stringify=(t,e)=>{if(!t)return"";e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e),ph(e.arrayFormatSeparator);let r=o=>e.skipNull&&nO(t[o])||e.skipEmptyString&&t[o]==="",i=sO(e),n={};for(let o of Object.keys(t))r(o)||(n[o]=t[o]);let s=Object.keys(n);return e.sort!==!1&&s.sort(e.sort),s.map(o=>{let a=t[o];return a===void 0?"":a===null?Le(o,e):Array.isArray(a)?a.reduce(i(o),[]).join("&"):Le(o,e)+"="+Le(a,e)}).filter(o=>o.length>0).join("&")};Xe.parseUrl=(t,e)=>{e=Object.assign({decode:!0},e);let[r,i]=hh(t,"#");return Object.assign({url:r.split("?")[0]||"",query:vh(gh(t),e)},e&&e.parseFragmentIdentifier&&i?{fragmentIdentifier:Dr(i,e)}:{})};Xe.stringifyUrl=(t,e)=>{e=Object.assign({encode:!0,strict:!0},e);let r=mh(t.url).split("?")[0]||"",i=Xe.extract(t.url),n=Xe.parse(i,{sort:!1}),s=Object.assign(n,t.query),o=Xe.stringify(s,e);o&&(o=`?${o}`);let a=aO(t.url);return t.fragmentIdentifier&&(a=`#${Le(t.fragmentIdentifier,e)}`),`${r}${o}${a}`};Xe.pick=(t,e,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);let{url:i,query:n,fragmentIdentifier:s}=Xe.parseUrl(t,r);return Xe.stringifyUrl({url:i,query:iO(n,e),fragmentIdentifier:s},r)};Xe.exclude=(t,e,r)=>{let i=Array.isArray(e)?n=>!e.includes(n):(n,s)=>!e(n,s);return Xe.pick(t,i,r)}});var wh=d((r5,Eh)=>{"use strict";var uO=Ta(),cO=La(),lO=bh();function fO(t){t=(t||"").trim();var e={protocols:uO(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(cO(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split(/\/|\\/),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=lO.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}Eh.exports=fO});var Rh=d((i5,Sh)=>{"use strict";var hO=typeof URL=="undefined"?require("url").URL:URL,Oh=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);Sh.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new hO(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];Oh(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])Oh(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var Ch=d((n5,_h)=>{"use strict";var pO=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dO=wh(),mO=Rh();function gO(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":pO(e))!=="object"&&(e={stripFragment:!1}),t=mO(t,e));var r=dO(t);return r}_h.exports=gO});var Lh=d((s5,Ah)=>{"use strict";var yO=Ch(),Th=La();function vO(t){var e=yO(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),Th(e.protocols)||Th(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}Ah.exports=vO});var Nh=d((o5,xh)=>{"use strict";var bO=Lh();function Na(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=bO(t),r=e.resource.split("."),i=null;switch(e.toString=function(m){return Na.stringify(this,m)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name),e.query&&e.query.path&&(e.filepath=e.query.path.replace(/^\/+/g,"")),e.query&&e.query.version&&(e.ref=e.query.version.replace(/^GB/,""));break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("-",2),o=i.indexOf("blob",2),a=i.indexOf("tree",2),u=i.indexOf("commit",2),c=i.indexOf("src",2),l=i.indexOf("raw",2);n=s>0?s-1:o>0?o-1:a>0?a-1:u>0?u-1:c>0?c-1:l>0?l-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],u&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="";var f=i.length>n&&i[n+1]==="-"?n+1:n;i.length>f+2&&["raw","src","blob","tree"].indexOf(i[f+1])>=0&&(e.filepathtype=i[f+1],e.ref=i[f+2],i.length>f+3&&(e.filepath=i.slice(f+3).join("/"))),e.organization=e.owner;break}e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e.owner.startsWith("scm/")&&(e.source="bitbucket-server",e.owner=e.owner.replace("scm/",""),e.organization=e.owner,e.full_name=e.owner+"/"+e.name);var h=/(projects|users)\/(.*?)\/repos\/(.*?)\/(raw|browse)(?:\/(?:$|(.+?)))?$/,y=h.exec(e.pathname);return y!=null&&(e.source="bitbucket-server",y[1]==="users"?e.owner="~"+y[2]:e.owner=y[2],e.organization=e.owner,e.name=y[3],e.filepathtype=y[4],e.filepath=y[5],e.full_name=e.owner+"/"+e.name,e.query.at?e.ref=e.query.at:e.ref=""),e}Na.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?EO(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+wO(t)+n;default:return t.href}};function EO(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function wO(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}xh.exports=Na});var Ph=d((a5,Ih)=>{"use strict";var SO=Object.prototype.toString;Ih.exports=function(t){var e;return SO.call(t)==="[object Object]"&&(e=Object.getPrototypeOf(t),e===null||e===Object.getPrototypeOf({}))}});var Fh=d((u5,Dh)=>{"use strict";Dh.exports=function(t){return t==null?[]:Array.isArray(t)?t:[t]}});var jh=d((c5,kh)=>{var OO=Object.prototype.toString;kh.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var r=typeof e;if(r==="boolean")return"boolean";if(r==="string")return"string";if(r==="number")return"number";if(r==="symbol")return"symbol";if(r==="function")return TO(e)?"generatorfunction":"function";if(RO(e))return"array";if(NO(e))return"buffer";if(xO(e))return"arguments";if(CO(e))return"date";if(_O(e))return"error";if(AO(e))return"regexp";switch(qh(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(LO(e))return"generator";switch(r=OO.call(e),r){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")};function qh(t){return typeof t.constructor=="function"?t.constructor.name:null}function RO(t){return Array.isArray?Array.isArray(t):t instanceof Array}function _O(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function CO(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function AO(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function TO(t,e){return qh(t)==="GeneratorFunction"}function LO(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function xO(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function NO(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var zh=d((l5,Ia)=>{"use strict";var IO=Ph(),PO=Fh(),Pa=jh(),$h=(t,e,r)=>{t[e]||(t[e]=[]),t[e].push(r)},Mh=(t,e,r,i)=>{t[e]||(t[e]={}),t[e][r]=i},Ls=t=>Array.isArray(t)?`[${t.map(Ls).join(", ")}]`:Pa(t)==="string"?JSON.stringify(t):t,DO=t=>{if(Array.isArray(t)&&t.length>0){let[e]=t;return`${Pa(e)}-array`}return Pa(t)},FO=(t,e)=>{let r=t==="array"?"string-array":t;return Da.includes(r)&&Array.isArray(e)&&e.length===0?"array":r},kO=["stopEarly","unknown","--"],Bh=["string","boolean","number"],Da=Bh.map(t=>`${t}-array`),Uh=[...Bh,"array",...Da],Gh=t=>{t=t||{};let e={};return kO.forEach(r=>{t[r]&&(e[r]=t[r])}),Object.keys(t).forEach(r=>{let i=t[r];if(r==="arguments"&&(r="_"),typeof i=="string"&&(i={type:i}),IO(i)){let n=i,{type:s}=n;if(s){if(!Uh.includes(s))throw new TypeError(`Expected type of "${r}" to be one of ${Ls(Uh)}, got ${Ls(s)}`);if(Da.includes(s)){let[o]=s.split("-");$h(e,"array",{key:r,[o]:!0})}else $h(e,s,r)}if({}.hasOwnProperty.call(n,"default")){let{default:o}=n,a=DO(o),u=FO(s,o);if(u&&u!==a)throw new TypeError(`Expected "${r}" default value to be of type "${u}", got ${Ls(a)}`);Mh(e,"default",r,o)}PO(n.alias).forEach(o=>{Mh(e,"alias",o,r)})}}),e};Ia.exports=Gh;Ia.exports.default=Gh});var Qh=d((h5,Hh)=>{"use strict";var qO=require("util"),f5=require("fs"),Wh=require("path");function vn(t){if(t=t.toLocaleLowerCase(),t.indexOf("-")===-1&&t.indexOf("_")===-1)return t;{let e="",r=!1,i=t.match(/^-+/);for(let n=i?i[0].length:0;n0?i+=`${e}${r.charAt(n)}`:i+=o}return i}function Yh(t){return t==null?!1:typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:t.length>1&&t[0]==="0"?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function jO(t){if(Array.isArray(t))return t.map(o=>typeof o!="string"?o+"":o);t=t.trim();let e=0,r=null,i=null,n=null,s=[];for(let o=0;o{typeof v=="number"&&(p.nargs[g]=v,p.keys.push(g))}),typeof i.coerce=="object"&&Object.entries(i.coerce).forEach(([g,v])=>{typeof v=="function"&&(p.coercions[g]=v,p.keys.push(g))}),typeof i.config!="undefined"&&(Array.isArray(i.config)||typeof i.config=="string"?[].concat(i.config).filter(Boolean).forEach(function(g){p.configs[g]=!0}):typeof i.config=="object"&&Object.entries(i.config).forEach(([g,v])=>{(typeof v=="boolean"||typeof v=="function")&&(p.configs[g]=v)})),At(i.key,s,i.default,p.arrays),Object.keys(a).forEach(function(g){(p.aliases[g]||[]).forEach(function(v){a[v]=a[g]})});let T=null;z2();let q=[],A=Object.assign(Object.create(null),{_:[]}),V={};for(let g=0;g=3&&(D(C[1],p.arrays)?g=j(g,C[1],n,C[2]):D(C[1],p.nargs)!==!1?g=G(g,C[1],n,C[2]):S(C[1],C[2]));else if(v.match(O)&&o["boolean-negation"])C=v.match(O),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],S(b,D(b,p.arrays)?[!1]:!1));else if(v.match(/^--.+/)||!o["short-option-groups"]&&v.match(/^-[^-]+/))C=v.match(/^--?(.+)/),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],D(b,p.arrays)?g=j(g,b,n):D(b,p.nargs)!==!1?g=G(g,b,n):(P=n[g+1],P!==void 0&&(!P.match(/^-/)||P.match(E))&&!D(b,p.bools)&&!D(b,p.counts)||/^(true|false)$/.test(P)?(S(b,P),g++):S(b,$t(b))));else if(v.match(/^-.\..+=/))C=v.match(/^-([^=]+)=([\s\S]*)$/),C!==null&&Array.isArray(C)&&C.length>=3&&S(C[1],C[2]);else if(v.match(/^-.\..+/)&&!v.match(E))P=n[g+1],C=v.match(/^-(.\..+)/),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],P!==void 0&&!P.match(/^-/)&&!D(b,p.bools)&&!D(b,p.counts)?(S(b,P),g++):S(b,$t(b)));else if(v.match(/^-[^-]+/)&&!v.match(E)){w=v.slice(1,-1).split(""),_=!1;for(let ee=0;eeg!=="--"&&g.includes("-")).forEach(g=>{delete A[g]}),o["strip-aliased"]&&[].concat(...Object.keys(s).map(g=>s[g])).forEach(g=>{o["camel-case-expansion"]&&g.includes("-")&&delete A[g.split(".").map(v=>vn(v)).join(".")],delete A[g]});function k(g){let v=F("_",g);(typeof v=="string"||typeof v=="number")&&A._.push(v)}function G(g,v,_,b){let w,C=D(v,p.nargs);if(C=typeof C!="number"||isNaN(C)?1:C,C===0)return Mt(b)||(T=Error(m("Argument unexpected for: %s",v))),S(v,$t(v)),g;let P=Mt(b)?0:1;if(o["nargs-eats-options"])_.length-(g+1)+P0&&(S(v,b),ie--),w=g+1;w0||P&&typeof P=="number"&&w.length>=P||(C=_[ie],/^-/.test(C)&&!E.test(C)&&!jt(C)));ie++)g=ie,w.push(M(v,C))}return typeof P=="number"&&(P&&w.length1&&o["dot-notation"]&&(p.aliases[b[0]]||[]).forEach(function(w){let C=w.split("."),P=[].concat(b);P.shift(),C=C.concat(P),(p.aliases[g]||[]).includes(C.join("."))||ce(A,C,_)}),D(g,p.normalize)&&!D(g,p.arrays)&&[g].concat(p.aliases[g]||[]).forEach(function(C){Object.defineProperty(V,C,{enumerable:!0,get(){return v},set(P){v=typeof P=="string"?Bt.normalize(P):P}})})}function I(g,v){p.aliases[g]&&p.aliases[g].length||(p.aliases[g]=[v],h[v]=!0),p.aliases[v]&&p.aliases[v].length||I(v,g)}function M(g,v){typeof v=="string"&&(v[0]==="'"||v[0]==='"')&&v[v.length-1]===v[0]&&(v=v.substring(1,v.length-1)),(D(g,p.bools)||D(g,p.counts))&&typeof v=="string"&&(v=v==="true");let _=Array.isArray(v)?v.map(function(b){return F(g,b)}):F(g,v);return D(g,p.counts)&&(Mt(_)||typeof _=="boolean")&&(_=Fa()),D(g,p.normalize)&&D(g,p.arrays)&&(Array.isArray(v)?_=v.map(b=>Bt.normalize(b)):_=Bt.normalize(v)),_}function F(g,v){return!o["parse-positional-numbers"]&&g==="_"||!D(g,p.strings)&&!D(g,p.bools)&&!Array.isArray(v)&&(Yh(v)&&o["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${v}`)))||!Mt(v)&&D(g,p.numbers))&&(v=Number(v)),v}function B(g){let v=Object.create(null);Me(v,p.aliases,a),Object.keys(p.configs).forEach(function(_){let b=g[_]||v[_];if(b)try{let w=null,C=Bt.resolve(Bt.cwd(),b),P=p.configs[_];if(typeof P=="function"){try{w=P(C)}catch(ie){w=ie}if(w instanceof Error){T=w;return}}else w=Bt.require(C);he(w)}catch(w){w.name==="PermissionDenied"?T=w:g[_]&&(T=Error(m("Invalid JSON config file: %s",b)))}})}function he(g,v){Object.keys(g).forEach(function(_){let b=g[_],w=v?v+"."+_:_;typeof b=="object"&&b!==null&&!Array.isArray(b)&&o["dot-notation"]?he(b,w):(!ye(A,w.split("."))||D(w,p.arrays)&&o["combine-arrays"])&&S(w,b)})}function Z(){typeof u!="undefined"&&u.forEach(function(g){he(g)})}function re(g,v){if(typeof c=="undefined")return;let _=typeof c=="string"?c:"",b=Bt.env();Object.keys(b).forEach(function(w){if(_===""||w.lastIndexOf(_,0)===0){let C=w.split("__").map(function(P,ie){return ie===0&&(P=P.substring(_.length)),vn(P)});(v&&p.configs[C.join(".")]||!v)&&!ye(g,C)&&S(C.join("."),b[w])}})}function Ee(g){let v,_=new Set;Object.keys(g).forEach(function(b){if(!_.has(b)&&(v=D(b,p.coercions),typeof v=="function"))try{let w=F(b,v(g[b]));[].concat(p.aliases[b]||[],b).forEach(C=>{_.add(C),g[C]=w})}catch(w){T=w}})}function rt(g){return p.keys.forEach(v=>{~v.indexOf(".")||typeof g[v]=="undefined"&&(g[v]=void 0)}),g}function Me(g,v,_,b=!1){Object.keys(_).forEach(function(w){ye(g,w.split("."))||(ce(g,w.split("."),_[w]),b&&(y[w]=!0),(v[w]||[]).forEach(function(C){ye(g,C.split("."))||ce(g,C.split("."),_[w])}))})}function ye(g,v){let _=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(w){_=_[w]||{}});let b=v[v.length-1];return typeof _!="object"?!1:b in _}function ce(g,v,_){let b=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(ee){ee=Kh(ee),typeof b=="object"&&b[ee]===void 0&&(b[ee]={}),typeof b[ee]!="object"||Array.isArray(b[ee])?(Array.isArray(b[ee])?b[ee].push({}):b[ee]=[b[ee],{}],b=b[ee][b[ee].length-1]):b=b[ee]});let w=Kh(v[v.length-1]),C=D(v.join("."),p.arrays),P=Array.isArray(_),ie=o["duplicate-arguments-array"];!ie&&D(w,p.nargs)&&(ie=!0,(!Mt(b[w])&&p.nargs[w]===1||Array.isArray(b[w])&&b[w].length===p.nargs[w])&&(b[w]=void 0)),_===Fa()?b[w]=Fa(b[w]):Array.isArray(b[w])?ie&&C&&P?b[w]=o["flatten-duplicate-arrays"]?b[w].concat(_):(Array.isArray(b[w][0])?b[w]:[b[w]]).concat([_]):!ie&&Boolean(C)===Boolean(P)?b[w]=_:b[w]=b[w].concat([_]):b[w]===void 0&&C?b[w]=P?_:[_]:ie&&!(b[w]===void 0||D(w,p.counts)||D(w,p.bools))?b[w]=[b[w],_]:b[w]=_}function At(...g){g.forEach(function(v){Object.keys(v||{}).forEach(function(_){p.aliases[_]||(p.aliases[_]=[].concat(s[_]||[]),p.aliases[_].concat(_).forEach(function(b){if(/-/.test(b)&&o["camel-case-expansion"]){let w=vn(b);w!==_&&p.aliases[_].indexOf(w)===-1&&(p.aliases[_].push(w),h[w]=!0)}}),p.aliases[_].concat(_).forEach(function(b){if(b.length>1&&/[A-Z]/.test(b)&&o["camel-case-expansion"]){let w=Vh(b,"-");w!==_&&p.aliases[_].indexOf(w)===-1&&(p.aliases[_].push(w),h[w]=!0)}}),p.aliases[_].forEach(function(b){p.aliases[b]=[_].concat(p.aliases[_].filter(function(w){return b!==w}))}))})})}function D(g,v){let _=[].concat(p.aliases[g]||[],g),b=Object.keys(v),w=_.find(C=>b.includes(C));return w?v[w]:!1}function qt(g){let v=Object.keys(p);return[].concat(v.map(b=>p[b])).some(function(b){return Array.isArray(b)?b.includes(g):b[g]})}function St(g,...v){return[].concat(...v).some(function(b){let w=g.match(b);return w&&qt(w[1])})}function yi(g){if(g.match(E)||!g.match(/^-[^-]+/))return!1;let v=!0,_,b=g.slice(1).split("");for(let w=0;wD(g,p.arrays)?(T=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):D(g,p.nargs)?(T=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},p.aliases),argv:Object.assign(V,A),configuration:o,defaulted:Object.assign({},y),error:T,newAliases:Object.assign({},h)}}};function $O(t){let e=[],r=Object.create(null),i=!0;for(Object.keys(t).forEach(function(n){e.push([].concat(t[n],n))});i;){i=!1;for(let n=0;nMO,format:qO.format,normalize:Wh.normalize,resolve:Wh.resolve,require:t=>require(t)}),bn=function(e,r){return Jh.parse(e.slice(),r).argv};bn.detailed=function(t,e){return Jh.parse(t.slice(),e)};bn.camelCase=vn;bn.decamelize=Vh;bn.looksLikeNumber=Yh;Hh.exports=bn});var ip=d((p5,ep)=>{"use strict";var tp=t=>typeof t=="object"&&t!==null,rp=t=>tp(t)&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),ka=(t,e,r,i=new WeakMap)=>{if(r={deep:!1,target:{},...r},i.has(t))return i.get(t);i.set(t,r.target);let{target:n}=r;delete r.target;let s=o=>o.map(a=>rp(a)?ka(a,e,r,i):a);if(Array.isArray(t))return s(t);for(let[o,a]of Object.entries(t)){let[u,c]=e(o,a,t);r.deep&&rp(c)&&(c=Array.isArray(c)?s(c):ka(c,e,r,i)),n[u]=c}return n};ep.exports=(t,e,r)=>{if(!tp(t))throw new TypeError(`Expected an object, got \`${t}\` (${typeof t})`);return ka(t,e,r)}});var sp=d((d5,qa)=>{"use strict";var BO=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=BO(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};qa.exports=np;qa.exports.default=np});var up=d((m5,op)=>{"use strict";var ap=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}};op.exports=ap});var pp=d((g5,cp)=>{"use strict";var lp=ip(),UO=sp(),GO=up(),zO=(t,e)=>t.some(r=>typeof r=="string"?r===e:(r.lastIndex=0,r.test(e))),ja=new GO({maxSize:1e5}),fp=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),hp=(t,e)=>{if(!fp(t))return t;e={deep:!1,pascalCase:!1,...e};let{exclude:r,pascalCase:i,stopPaths:n,deep:s}=e,o=new Set(n),a=u=>(c,l)=>{if(s&&fp(l)){let f=u===void 0?c:`${u}.${c}`;o.has(f)||(l=lp(l,a(f)))}if(!(r&&zO(r,c))){let f=i?`${c}_`:c;if(ja.has(f))c=ja.get(f);else{let h=UO(c,{pascalCase:i});c.length<100&&ja.set(f,h),c=h}}return[c,l]};return lp(t,a(void 0))};cp.exports=(t,e)=>Array.isArray(t)?Object.keys(t).map(r=>hp(t[r],e)):hp(t,e)});var $a=d((y5,dp)=>{"use strict";dp.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected a string");return e=typeof e=="undefined"?"_":e,t.replace(/([a-z\d])([A-Z])/g,"$1"+e+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}});var gp=d((v5,mp)=>{"use strict";mp.exports=function(t,e){for(var r={},i=Object.keys(t),n=0;n{"use strict";var HO=gp(),WO=$a();yp.exports=function(t,e,r){typeof e!="string"&&(r=e,e=null),r=r||{},e=e||r.separator;var i=r.exclude||[];return HO(t,function(n,s){return n=i.indexOf(n)===-1?WO(n,e):n,[n,s]})}});var bp=d((E5,xs)=>{"use strict";xs.exports=t=>t.replace(/^[\r\n]+/,"").replace(/[\r\n]+$/,"");xs.exports.start=t=>t.replace(/^[\r\n]+/,"");xs.exports.end=t=>t.replace(/[\r\n]+$/,"")});var wp=d((w5,Ep)=>{"use strict";Ep.exports=t=>{let e=t.match(/^[ \t]*(?=\S)/gm);return e?e.reduce((r,i)=>Math.min(r,i.length),Infinity):0}});var Op=d((S5,Sp)=>{"use strict";var VO=wp();Sp.exports=t=>{let e=VO(t);if(e===0)return t;let r=new RegExp(`^[ \\t]{${e}}`,"gm");return t.replace(r,"")}});var _p=d((O5,Rp)=>{"use strict";Rp.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let i=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(i,r.indent.repeat(e))}});var Ap=d((R5,Cp)=>{"use strict";var YO=Op(),XO=_p();Cp.exports=(t,e=0,r)=>XO(YO(t),e,r)});var Lp=d((_5,Ma)=>{"use strict";var Tp=(t,...e)=>new Promise(r=>{r(t(...e))});Ma.exports=Tp;Ma.exports.default=Tp});var Np=d((C5,Ba)=>{"use strict";var KO=Lp(),xp=t=>{if(!((Number.isInteger(t)||t===Infinity)&&t>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,u,...c)=>{r++;let l=KO(a,...c);u(l),l.then(i,i)},s=(a,u,...c)=>{rnew Promise(c=>s(a,c,...u));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length},clearQueue:{value:()=>{e.length=0}}}),o};Ba.exports=xp;Ba.exports.default=xp});var Dp=d((A5,Ua)=>{"use strict";var Ip=Np(),Ga=class extends Error{constructor(e){super();this.value=e}},ZO=async(t,e)=>e(await t),JO=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new Ga(e[0]);return!1},Pp=async(t,e,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=Ip(r.concurrency),n=[...t].map(o=>[o,i(ZO,o,e)]),s=Ip(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(JO,o)))}catch(o){if(o instanceof Ga)return o.value;throw o}};Ua.exports=Pp;Ua.exports.default=Pp});var Mp=d((T5,za)=>{"use strict";var Fp=require("path"),Ns=require("fs"),{promisify:kp}=require("util"),QO=Dp(),eR=kp(Ns.stat),tR=kp(Ns.lstat),qp={directory:"isDirectory",file:"isFile"};function jp({type:t}){if(!(t in qp))throw new Error(`Invalid type specified: ${t}`)}var $p=(t,e)=>t===void 0||e[qp[t]]();za.exports=async(t,e)=>{e={cwd:process.cwd(),type:"file",allowSymlinks:!0,...e},jp(e);let r=e.allowSymlinks?eR:tR;return QO(t,async i=>{try{let n=await r(Fp.resolve(e.cwd,i));return $p(e.type,n)}catch(n){return!1}},e)};za.exports.sync=(t,e)=>{e={cwd:process.cwd(),allowSymlinks:!0,type:"file",...e},jp(e);let r=e.allowSymlinks?Ns.statSync:Ns.lstatSync;for(let i of t)try{let n=r(Fp.resolve(e.cwd,i));if($p(e.type,n))return i}catch(n){}}});var Up=d((L5,Ha)=>{"use strict";var Bp=require("fs"),{promisify:rR}=require("util"),iR=rR(Bp.access);Ha.exports=async t=>{try{return await iR(t),!0}catch(e){return!1}};Ha.exports.sync=t=>{try{return Bp.accessSync(t),!0}catch(e){return!1}}});var zp=d((x5,vi)=>{"use strict";var lr=require("path"),Is=Mp(),Gp=Up(),Wa=Symbol("findUp.stop");vi.exports=async(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:i}=lr.parse(r),n=[].concat(t),s=async o=>{if(typeof t!="function")return Is(n,o);let a=await t(o.cwd);return typeof a=="string"?Is([a],o):a};for(;;){let o=await s({...e,cwd:r});if(o===Wa)return;if(o)return lr.resolve(r,o);if(r===i)return;r=lr.dirname(r)}};vi.exports.sync=(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:i}=lr.parse(r),n=[].concat(t),s=o=>{if(typeof t!="function")return Is.sync(n,o);let a=t(o.cwd);return typeof a=="string"?Is.sync([a],o):a};for(;;){let o=s({...e,cwd:r});if(o===Wa)return;if(o)return lr.resolve(r,o);if(r===i)return;r=lr.dirname(r)}};vi.exports.exists=Gp;vi.exports.sync.exists=Gp.sync;vi.exports.stop=Wa});var Wp=d((N5,Hp)=>{"use strict";Hp.exports=function(e){return e?e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function:!1}});var Yp=d((I5,Vp)=>{"use strict";var nR=require("util"),sR=Wp(),Va=function(e,r){(!e||e.constructor!==String)&&(r=e||{},e=Error.name);var i=function n(s){if(!this)return new n(s);s=s instanceof Error?s.message:s||this.message,Error.call(this,s),Error.captureStackTrace(this,i),this.name=e,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var l=s.split(/\r?\n/g);for(var f in r)if(!!r.hasOwnProperty(f)){var h=r[f];"message"in h&&(l=h.message(this[f],l)||l,sR(l)||(l=[l]))}return l.join(` +var H2=Object.create,Ts=Object.defineProperty,W2=Object.getPrototypeOf,V2=Object.prototype.hasOwnProperty,Y2=Object.getOwnPropertyNames,X2=Object.getOwnPropertyDescriptor;var Zf=t=>Ts(t,"__esModule",{value:!0});var d=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports),K2=(t,e)=>{for(var r in e)Ts(t,r,{get:e[r],enumerable:!0})},Z2=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Y2(e))!V2.call(t,i)&&i!=="default"&&Ts(t,i,{get:()=>e[i],enumerable:!(r=X2(e,i))||r.enumerable});return t},Te=t=>t&&t.__esModule?t:Z2(Zf(Ts(t!=null?H2(W2(t)):{},"default",{value:t,enumerable:!0})),t);var Ta=d((XD,Jf)=>{"use strict";Jf.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var La=d((KD,Qf)=>{"use strict";var J2=Ta();function eh(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=J2(t);return t=t.substring(t.indexOf("://")+3),eh(e)?!0:t.indexOf("@"){"use strict";th.exports=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)});var ah=d((JD,ih)=>{"use strict";var nh="%[a-f0-9]{2}",sh=new RegExp(nh,"gi"),oh=new RegExp("("+nh+")+","gi");function xa(t,e){try{return decodeURIComponent(t.join(""))}catch(n){}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],xa(r),xa(i))}function Q2(t){try{return decodeURIComponent(t)}catch(i){for(var e=t.match(sh),r=1;r{"use strict";uh.exports=(t,e)=>{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];let r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]}});var fh=d((e5,lh)=>{"use strict";lh.exports=function(t,e){for(var r={},i=Object.keys(t),n=Array.isArray(e),s=0;s{"use strict";var tO=rh(),rO=ah(),hh=ch(),iO=fh(),nO=t=>t==null;function sO(t){switch(t.arrayFormat){case"index":return e=>(r,i)=>{let n=r.length;return i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,[Le(e,t),"[",n,"]"].join("")]:[...r,[Le(e,t),"[",Le(n,t),"]=",Le(i,t)].join("")]};case"bracket":return e=>(r,i)=>i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,[Le(e,t),"[]"].join("")]:[...r,[Le(e,t),"[]=",Le(i,t)].join("")];case"comma":case"separator":return e=>(r,i)=>i==null||i.length===0?r:r.length===0?[[Le(e,t),"=",Le(i,t)].join("")]:[[r,Le(i,t)].join(t.arrayFormatSeparator)];default:return e=>(r,i)=>i===void 0||t.skipNull&&i===null||t.skipEmptyString&&i===""?r:i===null?[...r,Le(e,t)]:[...r,[Le(e,t),"=",Le(i,t)].join("")]}}function oO(t){let e;switch(t.arrayFormat){case"index":return(r,i,n)=>{if(e=/\[(\d*)\]$/.exec(r),r=r.replace(/\[\d*\]$/,""),!e){n[r]=i;return}n[r]===void 0&&(n[r]={}),n[r][e[1]]=i};case"bracket":return(r,i,n)=>{if(e=/(\[\])$/.exec(r),r=r.replace(/\[\]$/,""),!e){n[r]=i;return}if(n[r]===void 0){n[r]=[i];return}n[r]=[].concat(n[r],i)};case"comma":case"separator":return(r,i,n)=>{let s=typeof i=="string"&&i.includes(t.arrayFormatSeparator),o=typeof i=="string"&&!s&&Dr(i,t).includes(t.arrayFormatSeparator);i=o?Dr(i,t):i;let a=s||o?i.split(t.arrayFormatSeparator).map(u=>Dr(u,t)):i===null?i:Dr(i,t);n[r]=a};default:return(r,i,n)=>{if(n[r]===void 0){n[r]=i;return}n[r]=[].concat(n[r],i)}}}function ph(t){if(typeof t!="string"||t.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Le(t,e){return e.encode?e.strict?tO(t):encodeURIComponent(t):t}function Dr(t,e){return e.decode?rO(t):t}function dh(t){return Array.isArray(t)?t.sort():typeof t=="object"?dh(Object.keys(t)).sort((e,r)=>Number(e)-Number(r)).map(e=>t[e]):t}function mh(t){let e=t.indexOf("#");return e!==-1&&(t=t.slice(0,e)),t}function aO(t){let e="",r=t.indexOf("#");return r!==-1&&(e=t.slice(r)),e}function gh(t){t=mh(t);let e=t.indexOf("?");return e===-1?"":t.slice(e+1)}function yh(t,e){return e.parseNumbers&&!Number.isNaN(Number(t))&&typeof t=="string"&&t.trim()!==""?t=Number(t):e.parseBooleans&&t!==null&&(t.toLowerCase()==="true"||t.toLowerCase()==="false")&&(t=t.toLowerCase()==="true"),t}function vh(t,e){e=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},e),ph(e.arrayFormatSeparator);let r=oO(e),i=Object.create(null);if(typeof t!="string"||(t=t.trim().replace(/^[?#&]/,""),!t))return i;for(let n of t.split("&")){if(n==="")continue;let[s,o]=hh(e.decode?n.replace(/\+/g," "):n,"=");o=o===void 0?null:["comma","separator"].includes(e.arrayFormat)?o:Dr(o,e),r(Dr(s,e),o,i)}for(let n of Object.keys(i)){let s=i[n];if(typeof s=="object"&&s!==null)for(let o of Object.keys(s))s[o]=yh(s[o],e);else i[n]=yh(s,e)}return e.sort===!1?i:(e.sort===!0?Object.keys(i).sort():Object.keys(i).sort(e.sort)).reduce((n,s)=>{let o=i[s];return Boolean(o)&&typeof o=="object"&&!Array.isArray(o)?n[s]=dh(o):n[s]=o,n},Object.create(null))}Xe.extract=gh;Xe.parse=vh;Xe.stringify=(t,e)=>{if(!t)return"";e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e),ph(e.arrayFormatSeparator);let r=o=>e.skipNull&&nO(t[o])||e.skipEmptyString&&t[o]==="",i=sO(e),n={};for(let o of Object.keys(t))r(o)||(n[o]=t[o]);let s=Object.keys(n);return e.sort!==!1&&s.sort(e.sort),s.map(o=>{let a=t[o];return a===void 0?"":a===null?Le(o,e):Array.isArray(a)?a.reduce(i(o),[]).join("&"):Le(o,e)+"="+Le(a,e)}).filter(o=>o.length>0).join("&")};Xe.parseUrl=(t,e)=>{e=Object.assign({decode:!0},e);let[r,i]=hh(t,"#");return Object.assign({url:r.split("?")[0]||"",query:vh(gh(t),e)},e&&e.parseFragmentIdentifier&&i?{fragmentIdentifier:Dr(i,e)}:{})};Xe.stringifyUrl=(t,e)=>{e=Object.assign({encode:!0,strict:!0},e);let r=mh(t.url).split("?")[0]||"",i=Xe.extract(t.url),n=Xe.parse(i,{sort:!1}),s=Object.assign(n,t.query),o=Xe.stringify(s,e);o&&(o=`?${o}`);let a=aO(t.url);return t.fragmentIdentifier&&(a=`#${Le(t.fragmentIdentifier,e)}`),`${r}${o}${a}`};Xe.pick=(t,e,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);let{url:i,query:n,fragmentIdentifier:s}=Xe.parseUrl(t,r);return Xe.stringifyUrl({url:i,query:iO(n,e),fragmentIdentifier:s},r)};Xe.exclude=(t,e,r)=>{let i=Array.isArray(e)?n=>!e.includes(n):(n,s)=>!e(n,s);return Xe.pick(t,i,r)}});var wh=d((r5,Eh)=>{"use strict";var uO=Ta(),cO=La(),lO=bh();function fO(t){t=(t||"").trim();var e={protocols:uO(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(cO(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split(/\/|\\/),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=lO.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}Eh.exports=fO});var Rh=d((i5,Sh)=>{"use strict";var hO=typeof URL=="undefined"?require("url").URL:URL,Oh=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);Sh.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new hO(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];Oh(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])Oh(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var Ch=d((n5,_h)=>{"use strict";var pO=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},dO=wh(),mO=Rh();function gO(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":pO(e))!=="object"&&(e={stripFragment:!1}),t=mO(t,e));var r=dO(t);return r}_h.exports=gO});var Lh=d((s5,Ah)=>{"use strict";var yO=Ch(),Th=La();function vO(t){var e=yO(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),Th(e.protocols)||Th(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}Ah.exports=vO});var Nh=d((o5,xh)=>{"use strict";var bO=Lh();function Na(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=bO(t),r=e.resource.split("."),i=null;switch(e.toString=function(m){return Na.stringify(this,m)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name),e.query&&e.query.path&&(e.filepath=e.query.path.replace(/^\/+/g,"")),e.query&&e.query.version&&(e.ref=e.query.version.replace(/^GB/,""));break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("-",2),o=i.indexOf("blob",2),a=i.indexOf("tree",2),u=i.indexOf("commit",2),c=i.indexOf("src",2),l=i.indexOf("raw",2);n=s>0?s-1:o>0?o-1:a>0?a-1:u>0?u-1:c>0?c-1:l>0?l-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],u&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="";var f=i.length>n&&i[n+1]==="-"?n+1:n;i.length>f+2&&["raw","src","blob","tree"].indexOf(i[f+1])>=0&&(e.filepathtype=i[f+1],e.ref=i[f+2],i.length>f+3&&(e.filepath=i.slice(f+3).join("/"))),e.organization=e.owner;break}e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e.owner.startsWith("scm/")&&(e.source="bitbucket-server",e.owner=e.owner.replace("scm/",""),e.organization=e.owner,e.full_name=e.owner+"/"+e.name);var h=/(projects|users)\/(.*?)\/repos\/(.*?)\/(raw|browse)(?:\/(?:$|(.+?)))?$/,y=h.exec(e.pathname);return y!=null&&(e.source="bitbucket-server",y[1]==="users"?e.owner="~"+y[2]:e.owner=y[2],e.organization=e.owner,e.name=y[3],e.filepathtype=y[4],e.filepath=y[5],e.full_name=e.owner+"/"+e.name,e.query.at?e.ref=e.query.at:e.ref=""),e}Na.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?EO(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+wO(t)+n;default:return t.href}};function EO(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function wO(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}xh.exports=Na});var Ph=d((a5,Ih)=>{"use strict";var SO=Object.prototype.toString;Ih.exports=function(t){var e;return SO.call(t)==="[object Object]"&&(e=Object.getPrototypeOf(t),e===null||e===Object.getPrototypeOf({}))}});var Fh=d((u5,Dh)=>{"use strict";Dh.exports=function(t){return t==null?[]:Array.isArray(t)?t:[t]}});var jh=d((c5,kh)=>{var OO=Object.prototype.toString;kh.exports=function(e){if(e===void 0)return"undefined";if(e===null)return"null";var r=typeof e;if(r==="boolean")return"boolean";if(r==="string")return"string";if(r==="number")return"number";if(r==="symbol")return"symbol";if(r==="function")return TO(e)?"generatorfunction":"function";if(RO(e))return"array";if(NO(e))return"buffer";if(xO(e))return"arguments";if(CO(e))return"date";if(_O(e))return"error";if(AO(e))return"regexp";switch(qh(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(LO(e))return"generator";switch(r=OO.call(e),r){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return r.slice(8,-1).toLowerCase().replace(/\s/g,"")};function qh(t){return typeof t.constructor=="function"?t.constructor.name:null}function RO(t){return Array.isArray?Array.isArray(t):t instanceof Array}function _O(t){return t instanceof Error||typeof t.message=="string"&&t.constructor&&typeof t.constructor.stackTraceLimit=="number"}function CO(t){return t instanceof Date?!0:typeof t.toDateString=="function"&&typeof t.getDate=="function"&&typeof t.setDate=="function"}function AO(t){return t instanceof RegExp?!0:typeof t.flags=="string"&&typeof t.ignoreCase=="boolean"&&typeof t.multiline=="boolean"&&typeof t.global=="boolean"}function TO(t,e){return qh(t)==="GeneratorFunction"}function LO(t){return typeof t.throw=="function"&&typeof t.return=="function"&&typeof t.next=="function"}function xO(t){try{if(typeof t.length=="number"&&typeof t.callee=="function")return!0}catch(e){if(e.message.indexOf("callee")!==-1)return!0}return!1}function NO(t){return t.constructor&&typeof t.constructor.isBuffer=="function"?t.constructor.isBuffer(t):!1}});var zh=d((l5,Ia)=>{"use strict";var IO=Ph(),PO=Fh(),Pa=jh(),$h=(t,e,r)=>{t[e]||(t[e]=[]),t[e].push(r)},Mh=(t,e,r,i)=>{t[e]||(t[e]={}),t[e][r]=i},Ls=t=>Array.isArray(t)?`[${t.map(Ls).join(", ")}]`:Pa(t)==="string"?JSON.stringify(t):t,DO=t=>{if(Array.isArray(t)&&t.length>0){let[e]=t;return`${Pa(e)}-array`}return Pa(t)},FO=(t,e)=>{let r=t==="array"?"string-array":t;return Da.includes(r)&&Array.isArray(e)&&e.length===0?"array":r},kO=["stopEarly","unknown","--"],Bh=["string","boolean","number"],Da=Bh.map(t=>`${t}-array`),Uh=[...Bh,"array",...Da],Gh=t=>{t=t||{};let e={};return kO.forEach(r=>{t[r]&&(e[r]=t[r])}),Object.keys(t).forEach(r=>{let i=t[r];if(r==="arguments"&&(r="_"),typeof i=="string"&&(i={type:i}),IO(i)){let n=i,{type:s}=n;if(s){if(!Uh.includes(s))throw new TypeError(`Expected type of "${r}" to be one of ${Ls(Uh)}, got ${Ls(s)}`);if(Da.includes(s)){let[o]=s.split("-");$h(e,"array",{key:r,[o]:!0})}else $h(e,s,r)}if({}.hasOwnProperty.call(n,"default")){let{default:o}=n,a=DO(o),u=FO(s,o);if(u&&u!==a)throw new TypeError(`Expected "${r}" default value to be of type "${u}", got ${Ls(a)}`);Mh(e,"default",r,o)}PO(n.alias).forEach(o=>{Mh(e,"alias",o,r)})}}),e};Ia.exports=Gh;Ia.exports.default=Gh});var Qh=d((h5,Hh)=>{"use strict";var qO=require("util"),f5=require("fs"),Wh=require("path");function vn(t){if(t=t.toLocaleLowerCase(),t.indexOf("-")===-1&&t.indexOf("_")===-1)return t;{let e="",r=!1,i=t.match(/^-+/);for(let n=i?i[0].length:0;n0?i+=`${e}${r.charAt(n)}`:i+=o}return i}function Yh(t){return t==null?!1:typeof t=="number"||/^0x[0-9a-f]+$/i.test(t)?!0:t.length>1&&t[0]==="0"?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(t)}function jO(t){if(Array.isArray(t))return t.map(o=>typeof o!="string"?o+"":o);t=t.trim();let e=0,r=null,i=null,n=null,s=[];for(let o=0;o{typeof v=="number"&&(p.nargs[g]=v,p.keys.push(g))}),typeof i.coerce=="object"&&Object.entries(i.coerce).forEach(([g,v])=>{typeof v=="function"&&(p.coercions[g]=v,p.keys.push(g))}),typeof i.config!="undefined"&&(Array.isArray(i.config)||typeof i.config=="string"?[].concat(i.config).filter(Boolean).forEach(function(g){p.configs[g]=!0}):typeof i.config=="object"&&Object.entries(i.config).forEach(([g,v])=>{(typeof v=="boolean"||typeof v=="function")&&(p.configs[g]=v)})),Tt(i.key,s,i.default,p.arrays),Object.keys(a).forEach(function(g){(p.aliases[g]||[]).forEach(function(v){a[v]=a[g]})});let T=null;z2();let q=[],A=Object.assign(Object.create(null),{_:[]}),V={};for(let g=0;g=3&&(D(C[1],p.arrays)?g=j(g,C[1],n,C[2]):D(C[1],p.nargs)!==!1?g=G(g,C[1],n,C[2]):S(C[1],C[2]));else if(v.match(O)&&o["boolean-negation"])C=v.match(O),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],S(b,D(b,p.arrays)?[!1]:!1));else if(v.match(/^--.+/)||!o["short-option-groups"]&&v.match(/^-[^-]+/))C=v.match(/^--?(.+)/),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],D(b,p.arrays)?g=j(g,b,n):D(b,p.nargs)!==!1?g=G(g,b,n):(P=n[g+1],P!==void 0&&(!P.match(/^-/)||P.match(E))&&!D(b,p.bools)&&!D(b,p.counts)||/^(true|false)$/.test(P)?(S(b,P),g++):S(b,$t(b))));else if(v.match(/^-.\..+=/))C=v.match(/^-([^=]+)=([\s\S]*)$/),C!==null&&Array.isArray(C)&&C.length>=3&&S(C[1],C[2]);else if(v.match(/^-.\..+/)&&!v.match(E))P=n[g+1],C=v.match(/^-(.\..+)/),C!==null&&Array.isArray(C)&&C.length>=2&&(b=C[1],P!==void 0&&!P.match(/^-/)&&!D(b,p.bools)&&!D(b,p.counts)?(S(b,P),g++):S(b,$t(b)));else if(v.match(/^-[^-]+/)&&!v.match(E)){w=v.slice(1,-1).split(""),_=!1;for(let ee=0;eeg!=="--"&&g.includes("-")).forEach(g=>{delete A[g]}),o["strip-aliased"]&&[].concat(...Object.keys(s).map(g=>s[g])).forEach(g=>{o["camel-case-expansion"]&&g.includes("-")&&delete A[g.split(".").map(v=>vn(v)).join(".")],delete A[g]});function k(g){let v=F("_",g);(typeof v=="string"||typeof v=="number")&&A._.push(v)}function G(g,v,_,b){let w,C=D(v,p.nargs);if(C=typeof C!="number"||isNaN(C)?1:C,C===0)return Mt(b)||(T=Error(m("Argument unexpected for: %s",v))),S(v,$t(v)),g;let P=Mt(b)?0:1;if(o["nargs-eats-options"])_.length-(g+1)+P0&&(S(v,b),ie--),w=g+1;w0||P&&typeof P=="number"&&w.length>=P||(C=_[ie],/^-/.test(C)&&!E.test(C)&&!jt(C)));ie++)g=ie,w.push(M(v,C))}return typeof P=="number"&&(P&&w.length1&&o["dot-notation"]&&(p.aliases[b[0]]||[]).forEach(function(w){let C=w.split("."),P=[].concat(b);P.shift(),C=C.concat(P),(p.aliases[g]||[]).includes(C.join("."))||ce(A,C,_)}),D(g,p.normalize)&&!D(g,p.arrays)&&[g].concat(p.aliases[g]||[]).forEach(function(C){Object.defineProperty(V,C,{enumerable:!0,get(){return v},set(P){v=typeof P=="string"?Bt.normalize(P):P}})})}function I(g,v){p.aliases[g]&&p.aliases[g].length||(p.aliases[g]=[v],h[v]=!0),p.aliases[v]&&p.aliases[v].length||I(v,g)}function M(g,v){typeof v=="string"&&(v[0]==="'"||v[0]==='"')&&v[v.length-1]===v[0]&&(v=v.substring(1,v.length-1)),(D(g,p.bools)||D(g,p.counts))&&typeof v=="string"&&(v=v==="true");let _=Array.isArray(v)?v.map(function(b){return F(g,b)}):F(g,v);return D(g,p.counts)&&(Mt(_)||typeof _=="boolean")&&(_=Fa()),D(g,p.normalize)&&D(g,p.arrays)&&(Array.isArray(v)?_=v.map(b=>Bt.normalize(b)):_=Bt.normalize(v)),_}function F(g,v){return!o["parse-positional-numbers"]&&g==="_"||!D(g,p.strings)&&!D(g,p.bools)&&!Array.isArray(v)&&(Yh(v)&&o["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${v}`)))||!Mt(v)&&D(g,p.numbers))&&(v=Number(v)),v}function B(g){let v=Object.create(null);Me(v,p.aliases,a),Object.keys(p.configs).forEach(function(_){let b=g[_]||v[_];if(b)try{let w=null,C=Bt.resolve(Bt.cwd(),b),P=p.configs[_];if(typeof P=="function"){try{w=P(C)}catch(ie){w=ie}if(w instanceof Error){T=w;return}}else w=Bt.require(C);he(w)}catch(w){w.name==="PermissionDenied"?T=w:g[_]&&(T=Error(m("Invalid JSON config file: %s",b)))}})}function he(g,v){Object.keys(g).forEach(function(_){let b=g[_],w=v?v+"."+_:_;typeof b=="object"&&b!==null&&!Array.isArray(b)&&o["dot-notation"]?he(b,w):(!ye(A,w.split("."))||D(w,p.arrays)&&o["combine-arrays"])&&S(w,b)})}function Z(){typeof u!="undefined"&&u.forEach(function(g){he(g)})}function re(g,v){if(typeof c=="undefined")return;let _=typeof c=="string"?c:"",b=Bt.env();Object.keys(b).forEach(function(w){if(_===""||w.lastIndexOf(_,0)===0){let C=w.split("__").map(function(P,ie){return ie===0&&(P=P.substring(_.length)),vn(P)});(v&&p.configs[C.join(".")]||!v)&&!ye(g,C)&&S(C.join("."),b[w])}})}function Ee(g){let v,_=new Set;Object.keys(g).forEach(function(b){if(!_.has(b)&&(v=D(b,p.coercions),typeof v=="function"))try{let w=F(b,v(g[b]));[].concat(p.aliases[b]||[],b).forEach(C=>{_.add(C),g[C]=w})}catch(w){T=w}})}function rt(g){return p.keys.forEach(v=>{~v.indexOf(".")||typeof g[v]=="undefined"&&(g[v]=void 0)}),g}function Me(g,v,_,b=!1){Object.keys(_).forEach(function(w){ye(g,w.split("."))||(ce(g,w.split("."),_[w]),b&&(y[w]=!0),(v[w]||[]).forEach(function(C){ye(g,C.split("."))||ce(g,C.split("."),_[w])}))})}function ye(g,v){let _=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(w){_=_[w]||{}});let b=v[v.length-1];return typeof _!="object"?!1:b in _}function ce(g,v,_){let b=g;o["dot-notation"]||(v=[v.join(".")]),v.slice(0,-1).forEach(function(ee){ee=Kh(ee),typeof b=="object"&&b[ee]===void 0&&(b[ee]={}),typeof b[ee]!="object"||Array.isArray(b[ee])?(Array.isArray(b[ee])?b[ee].push({}):b[ee]=[b[ee],{}],b=b[ee][b[ee].length-1]):b=b[ee]});let w=Kh(v[v.length-1]),C=D(v.join("."),p.arrays),P=Array.isArray(_),ie=o["duplicate-arguments-array"];!ie&&D(w,p.nargs)&&(ie=!0,(!Mt(b[w])&&p.nargs[w]===1||Array.isArray(b[w])&&b[w].length===p.nargs[w])&&(b[w]=void 0)),_===Fa()?b[w]=Fa(b[w]):Array.isArray(b[w])?ie&&C&&P?b[w]=o["flatten-duplicate-arrays"]?b[w].concat(_):(Array.isArray(b[w][0])?b[w]:[b[w]]).concat([_]):!ie&&Boolean(C)===Boolean(P)?b[w]=_:b[w]=b[w].concat([_]):b[w]===void 0&&C?b[w]=P?_:[_]:ie&&!(b[w]===void 0||D(w,p.counts)||D(w,p.bools))?b[w]=[b[w],_]:b[w]=_}function Tt(...g){g.forEach(function(v){Object.keys(v||{}).forEach(function(_){p.aliases[_]||(p.aliases[_]=[].concat(s[_]||[]),p.aliases[_].concat(_).forEach(function(b){if(/-/.test(b)&&o["camel-case-expansion"]){let w=vn(b);w!==_&&p.aliases[_].indexOf(w)===-1&&(p.aliases[_].push(w),h[w]=!0)}}),p.aliases[_].concat(_).forEach(function(b){if(b.length>1&&/[A-Z]/.test(b)&&o["camel-case-expansion"]){let w=Vh(b,"-");w!==_&&p.aliases[_].indexOf(w)===-1&&(p.aliases[_].push(w),h[w]=!0)}}),p.aliases[_].forEach(function(b){p.aliases[b]=[_].concat(p.aliases[_].filter(function(w){return b!==w}))}))})})}function D(g,v){let _=[].concat(p.aliases[g]||[],g),b=Object.keys(v),w=_.find(C=>b.includes(C));return w?v[w]:!1}function qt(g){let v=Object.keys(p);return[].concat(v.map(b=>p[b])).some(function(b){return Array.isArray(b)?b.includes(g):b[g]})}function Ot(g,...v){return[].concat(...v).some(function(b){let w=g.match(b);return w&&qt(w[1])})}function yi(g){if(g.match(E)||!g.match(/^-[^-]+/))return!1;let v=!0,_,b=g.slice(1).split("");for(let w=0;wD(g,p.arrays)?(T=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):D(g,p.nargs)?(T=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},p.aliases),argv:Object.assign(V,A),configuration:o,defaulted:Object.assign({},y),error:T,newAliases:Object.assign({},h)}}};function $O(t){let e=[],r=Object.create(null),i=!0;for(Object.keys(t).forEach(function(n){e.push([].concat(t[n],n))});i;){i=!1;for(let n=0;nMO,format:qO.format,normalize:Wh.normalize,resolve:Wh.resolve,require:t=>require(t)}),bn=function(e,r){return Jh.parse(e.slice(),r).argv};bn.detailed=function(t,e){return Jh.parse(t.slice(),e)};bn.camelCase=vn;bn.decamelize=Vh;bn.looksLikeNumber=Yh;Hh.exports=bn});var ip=d((p5,ep)=>{"use strict";var tp=t=>typeof t=="object"&&t!==null,rp=t=>tp(t)&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),ka=(t,e,r,i=new WeakMap)=>{if(r={deep:!1,target:{},...r},i.has(t))return i.get(t);i.set(t,r.target);let{target:n}=r;delete r.target;let s=o=>o.map(a=>rp(a)?ka(a,e,r,i):a);if(Array.isArray(t))return s(t);for(let[o,a]of Object.entries(t)){let[u,c]=e(o,a,t);r.deep&&rp(c)&&(c=Array.isArray(c)?s(c):ka(c,e,r,i)),n[u]=c}return n};ep.exports=(t,e,r)=>{if(!tp(t))throw new TypeError(`Expected an object, got \`${t}\` (${typeof t})`);return ka(t,e,r)}});var sp=d((d5,qa)=>{"use strict";var BO=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=BO(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};qa.exports=np;qa.exports.default=np});var up=d((m5,op)=>{"use strict";var ap=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}};op.exports=ap});var pp=d((g5,cp)=>{"use strict";var lp=ip(),UO=sp(),GO=up(),zO=(t,e)=>t.some(r=>typeof r=="string"?r===e:(r.lastIndex=0,r.test(e))),ja=new GO({maxSize:1e5}),fp=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp)&&!(t instanceof Error)&&!(t instanceof Date),hp=(t,e)=>{if(!fp(t))return t;e={deep:!1,pascalCase:!1,...e};let{exclude:r,pascalCase:i,stopPaths:n,deep:s}=e,o=new Set(n),a=u=>(c,l)=>{if(s&&fp(l)){let f=u===void 0?c:`${u}.${c}`;o.has(f)||(l=lp(l,a(f)))}if(!(r&&zO(r,c))){let f=i?`${c}_`:c;if(ja.has(f))c=ja.get(f);else{let h=UO(c,{pascalCase:i});c.length<100&&ja.set(f,h),c=h}}return[c,l]};return lp(t,a(void 0))};cp.exports=(t,e)=>Array.isArray(t)?Object.keys(t).map(r=>hp(t[r],e)):hp(t,e)});var $a=d((y5,dp)=>{"use strict";dp.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected a string");return e=typeof e=="undefined"?"_":e,t.replace(/([a-z\d])([A-Z])/g,"$1"+e+"$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}});var gp=d((v5,mp)=>{"use strict";mp.exports=function(t,e){for(var r={},i=Object.keys(t),n=0;n{"use strict";var HO=gp(),WO=$a();yp.exports=function(t,e,r){typeof e!="string"&&(r=e,e=null),r=r||{},e=e||r.separator;var i=r.exclude||[];return HO(t,function(n,s){return n=i.indexOf(n)===-1?WO(n,e):n,[n,s]})}});var bp=d((E5,xs)=>{"use strict";xs.exports=t=>t.replace(/^[\r\n]+/,"").replace(/[\r\n]+$/,"");xs.exports.start=t=>t.replace(/^[\r\n]+/,"");xs.exports.end=t=>t.replace(/[\r\n]+$/,"")});var wp=d((w5,Ep)=>{"use strict";Ep.exports=t=>{let e=t.match(/^[ \t]*(?=\S)/gm);return e?e.reduce((r,i)=>Math.min(r,i.length),Infinity):0}});var Op=d((S5,Sp)=>{"use strict";var VO=wp();Sp.exports=t=>{let e=VO(t);if(e===0)return t;let r=new RegExp(`^[ \\t]{${e}}`,"gm");return t.replace(r,"")}});var _p=d((O5,Rp)=>{"use strict";Rp.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let i=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(i,r.indent.repeat(e))}});var Ap=d((R5,Cp)=>{"use strict";var YO=Op(),XO=_p();Cp.exports=(t,e=0,r)=>XO(YO(t),e,r)});var Lp=d((_5,Ma)=>{"use strict";var Tp=(t,...e)=>new Promise(r=>{r(t(...e))});Ma.exports=Tp;Ma.exports.default=Tp});var Np=d((C5,Ba)=>{"use strict";var KO=Lp(),xp=t=>{if(!((Number.isInteger(t)||t===Infinity)&&t>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,u,...c)=>{r++;let l=KO(a,...c);u(l),l.then(i,i)},s=(a,u,...c)=>{rnew Promise(c=>s(a,c,...u));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length},clearQueue:{value:()=>{e.length=0}}}),o};Ba.exports=xp;Ba.exports.default=xp});var Dp=d((A5,Ua)=>{"use strict";var Ip=Np(),Ga=class extends Error{constructor(e){super();this.value=e}},ZO=async(t,e)=>e(await t),JO=async t=>{let e=await Promise.all(t);if(e[1]===!0)throw new Ga(e[0]);return!1},Pp=async(t,e,r)=>{r={concurrency:Infinity,preserveOrder:!0,...r};let i=Ip(r.concurrency),n=[...t].map(o=>[o,i(ZO,o,e)]),s=Ip(r.preserveOrder?1:Infinity);try{await Promise.all(n.map(o=>s(JO,o)))}catch(o){if(o instanceof Ga)return o.value;throw o}};Ua.exports=Pp;Ua.exports.default=Pp});var Mp=d((T5,za)=>{"use strict";var Fp=require("path"),Ns=require("fs"),{promisify:kp}=require("util"),QO=Dp(),eR=kp(Ns.stat),tR=kp(Ns.lstat),qp={directory:"isDirectory",file:"isFile"};function jp({type:t}){if(!(t in qp))throw new Error(`Invalid type specified: ${t}`)}var $p=(t,e)=>t===void 0||e[qp[t]]();za.exports=async(t,e)=>{e={cwd:process.cwd(),type:"file",allowSymlinks:!0,...e},jp(e);let r=e.allowSymlinks?eR:tR;return QO(t,async i=>{try{let n=await r(Fp.resolve(e.cwd,i));return $p(e.type,n)}catch(n){return!1}},e)};za.exports.sync=(t,e)=>{e={cwd:process.cwd(),allowSymlinks:!0,type:"file",...e},jp(e);let r=e.allowSymlinks?Ns.statSync:Ns.lstatSync;for(let i of t)try{let n=r(Fp.resolve(e.cwd,i));if($p(e.type,n))return i}catch(n){}}});var Up=d((L5,Ha)=>{"use strict";var Bp=require("fs"),{promisify:rR}=require("util"),iR=rR(Bp.access);Ha.exports=async t=>{try{return await iR(t),!0}catch(e){return!1}};Ha.exports.sync=t=>{try{return Bp.accessSync(t),!0}catch(e){return!1}}});var zp=d((x5,vi)=>{"use strict";var lr=require("path"),Is=Mp(),Gp=Up(),Wa=Symbol("findUp.stop");vi.exports=async(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:i}=lr.parse(r),n=[].concat(t),s=async o=>{if(typeof t!="function")return Is(n,o);let a=await t(o.cwd);return typeof a=="string"?Is([a],o):a};for(;;){let o=await s({...e,cwd:r});if(o===Wa)return;if(o)return lr.resolve(r,o);if(r===i)return;r=lr.dirname(r)}};vi.exports.sync=(t,e={})=>{let r=lr.resolve(e.cwd||""),{root:i}=lr.parse(r),n=[].concat(t),s=o=>{if(typeof t!="function")return Is.sync(n,o);let a=t(o.cwd);return typeof a=="string"?Is.sync([a],o):a};for(;;){let o=s({...e,cwd:r});if(o===Wa)return;if(o)return lr.resolve(r,o);if(r===i)return;r=lr.dirname(r)}};vi.exports.exists=Gp;vi.exports.sync.exists=Gp.sync;vi.exports.stop=Wa});var Wp=d((N5,Hp)=>{"use strict";Hp.exports=function(e){return e?e instanceof Array||Array.isArray(e)||e.length>=0&&e.splice instanceof Function:!1}});var Yp=d((I5,Vp)=>{"use strict";var nR=require("util"),sR=Wp(),Va=function(e,r){(!e||e.constructor!==String)&&(r=e||{},e=Error.name);var i=function n(s){if(!this)return new n(s);s=s instanceof Error?s.message:s||this.message,Error.call(this,s),Error.captureStackTrace(this,i),this.name=e,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var l=s.split(/\r?\n/g);for(var f in r)if(!!r.hasOwnProperty(f)){var h=r[f];"message"in h&&(l=h.message(this[f],l)||l,sR(l)||(l=[l]))}return l.join(` `)},set:function(l){s=l}});var o=null,a=Object.getOwnPropertyDescriptor(this,"stack"),u=a.get,c=a.value;delete a.value,delete a.writable,a.set=function(l){o=l},a.get=function(){var l=(o||(u?u.call(this):c)).split(/\r?\n+/g);o||(l[0]=this.name+": "+this.message);var f=1;for(var h in r)if(!!r.hasOwnProperty(h)){var y=r[h];if("line"in y){var m=y.line(this[h]);m&&l.splice(f++,0," "+m)}"stack"in y&&y.stack(this[h],l)}return l.join(` `)},Object.defineProperty(this,"stack",a)};return Object.setPrototypeOf?(Object.setPrototypeOf(i.prototype,Error.prototype),Object.setPrototypeOf(i,Error)):nR.inherits(i,Error),i};Va.append=function(t,e){return{message:function(r,i){return r=r||e,r&&(i[0]+=" "+t.replace("%s",r.toString())),i}}};Va.line=function(t,e){return{line:function(r){return r=r||e,r?t.replace("%s",r.toString()):null}}};Vp.exports=Va});var Zp=d((P5,Xp)=>{"use strict";var oR=t=>{let e=t.charCodeAt(0).toString(16).toUpperCase();return"0x"+(e.length%2?"0":"")+e},aR=(t,e,r)=>{if(!e)return{message:t.message+" while parsing empty string",position:0};let i=t.message.match(/^Unexpected token (.) .*position\s+(\d+)/i),n=i?+i[2]:t.message.match(/^Unexpected end of JSON.*/i)?e.length-1:null,s=i?t.message.replace(/^Unexpected token ./,`Unexpected token ${JSON.stringify(i[1])} (${oR(i[1])})`):t.message;if(n!=null){let o=n<=r?0:n-r,a=n+r>=e.length?e.length:n+r,u=(o===0?"":"...")+e.slice(o,a)+(a===e.length?"":"...");return{message:s+` while parsing ${e===u?"":"near "}${JSON.stringify(u)}`,position:n}}else return{message:s+` while parsing '${e.slice(0,r*2)}'`,position:0}},Ya=class extends SyntaxError{constructor(e,r,i,n){i=i||20;let s=aR(e,r,i);super(s.message);Object.assign(this,s),this.code="EJSONPARSE",this.systemError=e,Error.captureStackTrace(this,n||this.constructor)}get name(){return this.constructor.name}set name(e){}get[Symbol.toStringTag](){return this.constructor.name}},uR=Symbol.for("indent"),cR=Symbol.for("newline"),lR=/^\s*[{\[]((?:\r?\n)+)([\s\t]*)/,fR=/^(?:\{\}|\[\])((?:\r?\n)+)?$/,Ps=(t,e,r)=>{let i=Kp(t);r=r||20;try{let[,n=` `,s=" "]=i.match(fR)||i.match(lR)||[,"",""],o=JSON.parse(i,e);return o&&typeof o=="object"&&(o[cR]=n,o[uR]=s),o}catch(n){if(typeof t!="string"&&!Buffer.isBuffer(t)){let s=Array.isArray(t)&&t.length===0;throw Object.assign(new TypeError(`Cannot parse ${s?"an empty array":String(t)}`),{code:"EJSONPARSE",systemError:n})}throw new Ya(n,i,r,Ps)}},Kp=t=>String(t).replace(/^\uFEFF/,"");Xp.exports=Ps;Ps.JSONParseError=Ya;Ps.noExceptions=(t,e)=>{try{return JSON.parse(Kp(t),e)}catch(r){}}});var Qp=d(Xa=>{"use strict";var Ds=` -`,Jp="\r",hR=function(){function t(e){this.string=e;for(var r=[0],i=0;ithis.string.length)return null;for(var r=0,i=this.offsets;i[r+1]<=e;)r++;var n=e-i[r];return{line:r,column:n}},t.prototype.indexForLocation=function(e){var r=e.line,i=e.column;return r<0||r>=this.offsets.length||i<0||i>this.lengthOfLine(r)?null:this.offsets[r]+i},t.prototype.lengthOfLine=function(e){var r=this.offsets[e],i=e===this.offsets.length-1?this.string.length:this.offsets[e+1];return i-r},t}();Xa.__esModule=!0;Xa.default=hR});var ed=d(Fs=>{Object.defineProperty(Fs,"__esModule",{value:!0});Fs.default=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;Fs.matchToToken=function(t){var e={type:"invalid",value:t[0],closed:void 0};return t[1]?(e.type="string",e.closed=!!(t[3]||t[4])):t[5]?e.type="comment":t[6]?(e.type="comment",e.closed=!!t[7]):t[8]?e.type="regex":t[9]?e.type="number":t[10]?e.type="name":t[11]?e.type="punctuator":t[12]&&(e.type="whitespace"),e}});var sd=d(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.isIdentifierStart=td;En.isIdentifierChar=rd;En.isIdentifierName=pR;var Ka="\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",id="\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F",dR=new RegExp("["+Ka+"]"),mR=new RegExp("["+Ka+id+"]");Ka=id=null;var nd=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938],gR=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239];function Za(t,e){let r=65536;for(let i=0,n=e.length;it)return!1;if(r+=e[i+1],r>=t)return!0}return!1}function td(t){return t<65?t===36:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&dR.test(String.fromCharCode(t)):Za(t,nd)}function rd(t){return t<48?t===36:t<58?!0:t<65?!1:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&mR.test(String.fromCharCode(t)):Za(t,nd)||Za(t,gR)}function pR(t){let e=!0;for(let r=0,i=Array.from(t);r{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.isReservedWord=od;Fr.isStrictReservedWord=ad;Fr.isStrictBindOnlyReservedWord=ud;Fr.isStrictBindReservedWord=yR;Fr.isKeyword=vR;var Ja={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},bR=new Set(Ja.keyword),ER=new Set(Ja.strict),wR=new Set(Ja.strictBind);function od(t,e){return e&&t==="await"||t==="enum"}function ad(t,e){return od(t,e)||ER.has(t)}function ud(t){return wR.has(t)}function yR(t,e){return ad(t,e)||ud(t)}function vR(t){return bR.has(t)}});var ld=d(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Object.defineProperty(Tt,"isIdentifierName",{enumerable:!0,get:function(){return Qa.isIdentifierName}});Object.defineProperty(Tt,"isIdentifierChar",{enumerable:!0,get:function(){return Qa.isIdentifierChar}});Object.defineProperty(Tt,"isIdentifierStart",{enumerable:!0,get:function(){return Qa.isIdentifierStart}});Object.defineProperty(Tt,"isReservedWord",{enumerable:!0,get:function(){return wn.isReservedWord}});Object.defineProperty(Tt,"isStrictBindOnlyReservedWord",{enumerable:!0,get:function(){return wn.isStrictBindOnlyReservedWord}});Object.defineProperty(Tt,"isStrictBindReservedWord",{enumerable:!0,get:function(){return wn.isStrictBindReservedWord}});Object.defineProperty(Tt,"isStrictReservedWord",{enumerable:!0,get:function(){return wn.isStrictReservedWord}});Object.defineProperty(Tt,"isKeyword",{enumerable:!0,get:function(){return wn.isKeyword}});var Qa=sd(),wn=cd()});var hd=d(($5,fd)=>{"use strict";var SR=/[|\\{}()[\]^$+*?.]/g;fd.exports=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(SR,"\\$&")}});var dd=d((M5,pd)=>{"use strict";pd.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var tu=d((B5,md)=>{var kr=dd(),gd={};for(var eu in kr)kr.hasOwnProperty(eu)&&(gd[kr[eu]]=eu);var N=md.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Ke in N)if(N.hasOwnProperty(Ke)){if(!("channels"in N[Ke]))throw new Error("missing channels property: "+Ke);if(!("labels"in N[Ke]))throw new Error("missing channel labels property: "+Ke);if(N[Ke].labels.length!==N[Ke].channels)throw new Error("channel and label counts mismatch: "+Ke);yd=N[Ke].channels,vd=N[Ke].labels,delete N[Ke].channels,delete N[Ke].labels,Object.defineProperty(N[Ke],"channels",{value:yd}),Object.defineProperty(N[Ke],"labels",{value:vd})}var yd,vd;N.rgb.hsl=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,u,c;return s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360),c=(n+s)/2,s===n?u=0:c<=.5?u=o/(s+n):u=o/(2-s-n),[a,u*100,c*100]};N.rgb.hsv=function(t){var e,r,i,n,s,o=t[0]/255,a=t[1]/255,u=t[2]/255,c=Math.max(o,a,u),l=c-Math.min(o,a,u),f=function(h){return(c-h)/6/l+1/2};return l===0?n=s=0:(s=l/c,e=f(o),r=f(a),i=f(u),o===c?n=i-r:a===c?n=1/3+e-i:u===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};N.rgb.hwb=function(t){var e=t[0],r=t[1],i=t[2],n=N.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};N.rgb.cmyk=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n,s,o,a;return a=Math.min(1-e,1-r,1-i),n=(1-e-a)/(1-a)||0,s=(1-r-a)/(1-a)||0,o=(1-i-a)/(1-a)||0,[n*100,s*100,o*100,a*100]};function OR(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}N.rgb.keyword=function(t){var e=gd[t];if(e)return e;var r=Infinity,i;for(var n in kr)if(kr.hasOwnProperty(n)){var s=kr[n],o=OR(t,s);o.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};N.rgb.lab=function(t){var e=N.rgb.xyz(t),r=e[0],i=e[1],n=e[2],s,o,a;return r/=95.047,i/=100,n/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,s=116*i-16,o=500*(r-i),a=200*(i-n),[s,o,a]};N.hsl.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o,a,u;if(r===0)return u=i*255,[u,u,u];i<.5?s=i*(1+r):s=i+r-i*r,n=2*i-s,a=[0,0,0];for(var c=0;c<3;c++)o=e+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?u=n+(s-n)*6*o:2*o<1?u=s:3*o<2?u=n+(s-n)*(2/3-o)*6:u=n,a[c]=u*255;return a};N.hsl.hsv=function(t){var e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01),o,a;return i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s,a=(i+r)/2,o=i===0?2*n/(s+n):2*r/(i+r),[e,o*100,a*100]};N.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),u=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,u,o];case 1:return[a,i,o];case 2:return[o,i,u];case 3:return[o,a,i];case 4:return[u,o,i];case 5:return[i,o,a]}};N.hsv.hsl=function(t){var e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o,a;return a=(2-r)*i,s=(2-r)*n,o=r*n,o/=s<=1?s:2-s,o=o||0,a/=2,[e,o*100,a*100]};N.hwb.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s,o,a,u;n>1&&(r/=n,i/=n),s=Math.floor(6*e),o=1-i,a=6*e-s,(s&1)!=0&&(a=1-a),u=r+a*(o-r);var c,l,f;switch(s){default:case 6:case 0:c=o,l=u,f=r;break;case 1:c=u,l=o,f=r;break;case 2:c=r,l=o,f=u;break;case 3:c=r,l=u,f=o;break;case 4:c=u,l=r,f=o;break;case 5:c=o,l=r,f=u;break}return[c*255,l*255,f*255]};N.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s,o,a;return s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n),[s*255,o*255,a*255]};N.xyz.rgb=function(t){var e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};N.xyz.lab=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return e/=95.047,r/=100,i/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,n=116*r-16,s=500*(e-r),o=200*(r-i),[n,s,o]};N.lab.xyz=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;var a=Math.pow(s,3),u=Math.pow(n,3),c=Math.pow(o,3);return s=a>.008856?a:(s-16/116)/7.787,n=u>.008856?u:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};N.lab.lch=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return n=Math.atan2(i,r),s=n*360/2/Math.PI,s<0&&(s+=360),o=Math.sqrt(r*r+i*i),[e,o,s]};N.lch.lab=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return o=i/360*2*Math.PI,n=r*Math.cos(o),s=r*Math.sin(o),[e,n,s]};N.rgb.ansi16=function(t){var e=t[0],r=t[1],i=t[2],n=1 in arguments?arguments[1]:N.rgb.hsv(t)[2];if(n=Math.round(n/50),n===0)return 30;var s=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(e/255));return n===2&&(s+=60),s};N.hsv.ansi16=function(t){return N.rgb.ansi16(N.hsv.rgb(t),t[2])};N.rgb.ansi256=function(t){var e=t[0],r=t[1],i=t[2];if(e===r&&r===i)return e<8?16:e>248?231:Math.round((e-8)/247*24)+232;var n=16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5);return n};N.ansi16.rgb=function(t){var e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];var r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};N.ansi256.rgb=function(t){if(t>=232){var e=(t-232)*10+8;return[e,e,e]}t-=16;var r,i=Math.floor(t/36)/5*255,n=Math.floor((r=t%36)/6)/5*255,s=r%6/5*255;return[i,n,s]};N.rgb.hex=function(t){var e=((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255),r=e.toString(16).toUpperCase();return"000000".substring(r.length)+r};N.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];e[0].length===3&&(r=r.split("").map(function(a){return a+a}).join(""));var i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};N.rgb.hcg=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,u;return o<1?a=s/(1-o):a=0,o<=0?u=0:n===e?u=(r-i)/o%6:n===r?u=2+(i-e)/o:u=4+(e-r)/o+4,u/=6,u%=1,[u*360,o*100,a*100]};N.hsl.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=1,n=0;return r<.5?i=2*e*r:i=2*e*(1-r),i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};N.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};N.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];var n=[0,0,0],s=e%1*6,o=s%1,a=1-o,u=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return u=(1-r)*i,[(r*n[0]+u)*255,(r*n[1]+u)*255,(r*n[2]+u)*255]};N.hcg.hsv=function(t){var e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};N.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100,i=r*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};N.hcg.hwb=function(t){var e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};N.hwb.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};N.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};N.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};N.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};N.gray.hsl=N.gray.hsv=function(t){return[0,0,t[0]]};N.gray.hwb=function(t){return[0,100,t[0]]};N.gray.cmyk=function(t){return[0,0,0,t[0]]};N.gray.lab=function(t){return[t[0],0,0]};N.gray.hex=function(t){var e=Math.round(t[0]/100*255)&255,r=(e<<16)+(e<<8)+e,i=r.toString(16).toUpperCase();return"000000".substring(i.length)+i};N.rgb.gray=function(t){var e=(t[0]+t[1]+t[2])/3;return[e/255*100]}});var Ed=d((U5,bd)=>{var ks=tu();function RR(){for(var t={},e=Object.keys(ks),r=e.length,i=0;i{var ru=tu(),TR=Ed(),bi={},LR=Object.keys(ru);function xR(t){var e=function(r){return r==null?r:(arguments.length>1&&(r=Array.prototype.slice.call(arguments)),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function NR(t){var e=function(r){if(r==null)return r;arguments.length>1&&(r=Array.prototype.slice.call(arguments));var i=t(r);if(typeof i=="object")for(var n=i.length,s=0;s{"use strict";var Ei=Sd(),qs=(t,e)=>function(){return`[${t.apply(Ei,arguments)+e}m`},js=(t,e)=>function(){let r=t.apply(Ei,arguments);return`[${38+e};5;${r}m`},$s=(t,e)=>function(){let r=t.apply(Ei,arguments);return`[${38+e};2;${r[0]};${r[1]};${r[2]}m`};function IR(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.grey=e.color.gray;for(let n of Object.keys(e)){let s=e[n];for(let o of Object.keys(s)){let a=s[o];e[o]={open:`[${a[0]}m`,close:`[${a[1]}m`},s[o]=e[o],t.set(a[0],a[1])}Object.defineProperty(e,n,{value:s,enumerable:!1}),Object.defineProperty(e,"codes",{value:t,enumerable:!1})}let r=n=>n,i=(n,s,o)=>[n,s,o];e.color.close="",e.bgColor.close="",e.color.ansi={ansi:qs(r,0)},e.color.ansi256={ansi256:js(r,0)},e.color.ansi16m={rgb:$s(i,0)},e.bgColor.ansi={ansi:qs(r,10)},e.bgColor.ansi256={ansi256:js(r,10)},e.bgColor.ansi16m={rgb:$s(i,10)};for(let n of Object.keys(Ei)){if(typeof Ei[n]!="object")continue;let s=Ei[n];n==="ansi16"&&(n="ansi"),"ansi16"in s&&(e.color.ansi[n]=qs(s.ansi16,0),e.bgColor.ansi[n]=qs(s.ansi16,10)),"ansi256"in s&&(e.color.ansi256[n]=js(s.ansi256,0),e.bgColor.ansi256[n]=js(s.ansi256,10)),"rgb"in s&&(e.color.ansi16m[n]=$s(s.rgb,0),e.bgColor.ansi16m[n]=$s(s.rgb,10))}return e}Object.defineProperty(Od,"exports",{enumerable:!0,get:IR})});var Cd=d((H5,_d)=>{"use strict";_d.exports=(t,e)=>{e=e||process.argv;let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1?!0:i{"use strict";var PR=require("os"),Ot=Cd(),Ne=process.env,wi;Ot("no-color")||Ot("no-colors")||Ot("color=false")?wi=!1:(Ot("color")||Ot("colors")||Ot("color=true")||Ot("color=always"))&&(wi=!0);"FORCE_COLOR"in Ne&&(wi=Ne.FORCE_COLOR.length===0||parseInt(Ne.FORCE_COLOR,10)!==0);function DR(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function FR(t){if(wi===!1)return 0;if(Ot("color=16m")||Ot("color=full")||Ot("color=truecolor"))return 3;if(Ot("color=256"))return 2;if(t&&!t.isTTY&&wi!==!0)return 0;let e=wi?1:0;if(process.platform==="win32"){let r=PR.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in Ne)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(r=>r in Ne)||Ne.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in Ne)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ne.TEAMCITY_VERSION)?1:0;if(Ne.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ne){let r=parseInt((Ne.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ne.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ne.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ne.TERM)||"COLORTERM"in Ne?1:(Ne.TERM==="dumb",e)}function iu(t){let e=FR(t);return DR(e)}Ad.exports={supportsColor:iu,stdout:iu(process.stdout),stderr:iu(process.stderr)}});var Pd=d((V5,Ld)=>{"use strict";var kR=/(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,xd=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,qR=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,jR=/\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi,$R=new Map([["n",` +`,Jp="\r",hR=function(){function t(e){this.string=e;for(var r=[0],i=0;ithis.string.length)return null;for(var r=0,i=this.offsets;i[r+1]<=e;)r++;var n=e-i[r];return{line:r,column:n}},t.prototype.indexForLocation=function(e){var r=e.line,i=e.column;return r<0||r>=this.offsets.length||i<0||i>this.lengthOfLine(r)?null:this.offsets[r]+i},t.prototype.lengthOfLine=function(e){var r=this.offsets[e],i=e===this.offsets.length-1?this.string.length:this.offsets[e+1];return i-r},t}();Xa.__esModule=!0;Xa.default=hR});var ed=d(Fs=>{Object.defineProperty(Fs,"__esModule",{value:!0});Fs.default=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;Fs.matchToToken=function(t){var e={type:"invalid",value:t[0],closed:void 0};return t[1]?(e.type="string",e.closed=!!(t[3]||t[4])):t[5]?e.type="comment":t[6]?(e.type="comment",e.closed=!!t[7]):t[8]?e.type="regex":t[9]?e.type="number":t[10]?e.type="name":t[11]?e.type="punctuator":t[12]&&(e.type="whitespace"),e}});var sd=d(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.isIdentifierStart=td;En.isIdentifierChar=rd;En.isIdentifierName=pR;var Ka="\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",id="\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F",dR=new RegExp("["+Ka+"]"),mR=new RegExp("["+Ka+id+"]");Ka=id=null;var nd=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,107,20,28,22,13,52,76,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8952,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42717,35,4148,12,221,3,5761,15,7472,3104,541,1507,4938],gR=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,4759,9,787719,239];function Za(t,e){let r=65536;for(let i=0,n=e.length;it)return!1;if(r+=e[i+1],r>=t)return!0}return!1}function td(t){return t<65?t===36:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&dR.test(String.fromCharCode(t)):Za(t,nd)}function rd(t){return t<48?t===36:t<58?!0:t<65?!1:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&mR.test(String.fromCharCode(t)):Za(t,nd)||Za(t,gR)}function pR(t){let e=!0;for(let r=0,i=Array.from(t);r{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.isReservedWord=od;Fr.isStrictReservedWord=ad;Fr.isStrictBindOnlyReservedWord=ud;Fr.isStrictBindReservedWord=yR;Fr.isKeyword=vR;var Ja={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},bR=new Set(Ja.keyword),ER=new Set(Ja.strict),wR=new Set(Ja.strictBind);function od(t,e){return e&&t==="await"||t==="enum"}function ad(t,e){return od(t,e)||ER.has(t)}function ud(t){return wR.has(t)}function yR(t,e){return ad(t,e)||ud(t)}function vR(t){return bR.has(t)}});var ld=d(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Object.defineProperty(Lt,"isIdentifierName",{enumerable:!0,get:function(){return Qa.isIdentifierName}});Object.defineProperty(Lt,"isIdentifierChar",{enumerable:!0,get:function(){return Qa.isIdentifierChar}});Object.defineProperty(Lt,"isIdentifierStart",{enumerable:!0,get:function(){return Qa.isIdentifierStart}});Object.defineProperty(Lt,"isReservedWord",{enumerable:!0,get:function(){return wn.isReservedWord}});Object.defineProperty(Lt,"isStrictBindOnlyReservedWord",{enumerable:!0,get:function(){return wn.isStrictBindOnlyReservedWord}});Object.defineProperty(Lt,"isStrictBindReservedWord",{enumerable:!0,get:function(){return wn.isStrictBindReservedWord}});Object.defineProperty(Lt,"isStrictReservedWord",{enumerable:!0,get:function(){return wn.isStrictReservedWord}});Object.defineProperty(Lt,"isKeyword",{enumerable:!0,get:function(){return wn.isKeyword}});var Qa=sd(),wn=cd()});var hd=d(($5,fd)=>{"use strict";var SR=/[|\\{}()[\]^$+*?.]/g;fd.exports=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(SR,"\\$&")}});var dd=d((M5,pd)=>{"use strict";pd.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var tu=d((B5,md)=>{var kr=dd(),gd={};for(var eu in kr)kr.hasOwnProperty(eu)&&(gd[kr[eu]]=eu);var N=md.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var Ke in N)if(N.hasOwnProperty(Ke)){if(!("channels"in N[Ke]))throw new Error("missing channels property: "+Ke);if(!("labels"in N[Ke]))throw new Error("missing channel labels property: "+Ke);if(N[Ke].labels.length!==N[Ke].channels)throw new Error("channel and label counts mismatch: "+Ke);yd=N[Ke].channels,vd=N[Ke].labels,delete N[Ke].channels,delete N[Ke].labels,Object.defineProperty(N[Ke],"channels",{value:yd}),Object.defineProperty(N[Ke],"labels",{value:vd})}var yd,vd;N.rgb.hsl=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,u,c;return s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360),c=(n+s)/2,s===n?u=0:c<=.5?u=o/(s+n):u=o/(2-s-n),[a,u*100,c*100]};N.rgb.hsv=function(t){var e,r,i,n,s,o=t[0]/255,a=t[1]/255,u=t[2]/255,c=Math.max(o,a,u),l=c-Math.min(o,a,u),f=function(h){return(c-h)/6/l+1/2};return l===0?n=s=0:(s=l/c,e=f(o),r=f(a),i=f(u),o===c?n=i-r:a===c?n=1/3+e-i:u===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};N.rgb.hwb=function(t){var e=t[0],r=t[1],i=t[2],n=N.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};N.rgb.cmyk=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n,s,o,a;return a=Math.min(1-e,1-r,1-i),n=(1-e-a)/(1-a)||0,s=(1-r-a)/(1-a)||0,o=(1-i-a)/(1-a)||0,[n*100,s*100,o*100,a*100]};function OR(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}N.rgb.keyword=function(t){var e=gd[t];if(e)return e;var r=Infinity,i;for(var n in kr)if(kr.hasOwnProperty(n)){var s=kr[n],o=OR(t,s);o.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};N.rgb.lab=function(t){var e=N.rgb.xyz(t),r=e[0],i=e[1],n=e[2],s,o,a;return r/=95.047,i/=100,n/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,s=116*i-16,o=500*(r-i),a=200*(i-n),[s,o,a]};N.hsl.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o,a,u;if(r===0)return u=i*255,[u,u,u];i<.5?s=i*(1+r):s=i+r-i*r,n=2*i-s,a=[0,0,0];for(var c=0;c<3;c++)o=e+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?u=n+(s-n)*6*o:2*o<1?u=s:3*o<2?u=n+(s-n)*(2/3-o)*6:u=n,a[c]=u*255;return a};N.hsl.hsv=function(t){var e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01),o,a;return i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s,a=(i+r)/2,o=i===0?2*n/(s+n):2*r/(i+r),[e,o*100,a*100]};N.hsv.rgb=function(t){var e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),u=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,u,o];case 1:return[a,i,o];case 2:return[o,i,u];case 3:return[o,a,i];case 4:return[u,o,i];case 5:return[i,o,a]}};N.hsv.hsl=function(t){var e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o,a;return a=(2-r)*i,s=(2-r)*n,o=r*n,o/=s<=1?s:2-s,o=o||0,a/=2,[e,o*100,a*100]};N.hwb.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s,o,a,u;n>1&&(r/=n,i/=n),s=Math.floor(6*e),o=1-i,a=6*e-s,(s&1)!=0&&(a=1-a),u=r+a*(o-r);var c,l,f;switch(s){default:case 6:case 0:c=o,l=u,f=r;break;case 1:c=u,l=o,f=r;break;case 2:c=r,l=o,f=u;break;case 3:c=r,l=u,f=o;break;case 4:c=u,l=r,f=o;break;case 5:c=o,l=r,f=u;break}return[c*255,l*255,f*255]};N.cmyk.rgb=function(t){var e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s,o,a;return s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n),[s*255,o*255,a*255]};N.xyz.rgb=function(t){var e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};N.xyz.lab=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return e/=95.047,r/=100,i/=108.883,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,n=116*r-16,s=500*(e-r),o=200*(r-i),[n,s,o]};N.lab.xyz=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;var a=Math.pow(s,3),u=Math.pow(n,3),c=Math.pow(o,3);return s=a>.008856?a:(s-16/116)/7.787,n=u>.008856?u:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};N.lab.lch=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return n=Math.atan2(i,r),s=n*360/2/Math.PI,s<0&&(s+=360),o=Math.sqrt(r*r+i*i),[e,o,s]};N.lch.lab=function(t){var e=t[0],r=t[1],i=t[2],n,s,o;return o=i/360*2*Math.PI,n=r*Math.cos(o),s=r*Math.sin(o),[e,n,s]};N.rgb.ansi16=function(t){var e=t[0],r=t[1],i=t[2],n=1 in arguments?arguments[1]:N.rgb.hsv(t)[2];if(n=Math.round(n/50),n===0)return 30;var s=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(e/255));return n===2&&(s+=60),s};N.hsv.ansi16=function(t){return N.rgb.ansi16(N.hsv.rgb(t),t[2])};N.rgb.ansi256=function(t){var e=t[0],r=t[1],i=t[2];if(e===r&&r===i)return e<8?16:e>248?231:Math.round((e-8)/247*24)+232;var n=16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5);return n};N.ansi16.rgb=function(t){var e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];var r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};N.ansi256.rgb=function(t){if(t>=232){var e=(t-232)*10+8;return[e,e,e]}t-=16;var r,i=Math.floor(t/36)/5*255,n=Math.floor((r=t%36)/6)/5*255,s=r%6/5*255;return[i,n,s]};N.rgb.hex=function(t){var e=((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255),r=e.toString(16).toUpperCase();return"000000".substring(r.length)+r};N.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var r=e[0];e[0].length===3&&(r=r.split("").map(function(a){return a+a}).join(""));var i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};N.rgb.hcg=function(t){var e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,u;return o<1?a=s/(1-o):a=0,o<=0?u=0:n===e?u=(r-i)/o%6:n===r?u=2+(i-e)/o:u=4+(e-r)/o+4,u/=6,u%=1,[u*360,o*100,a*100]};N.hsl.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=1,n=0;return r<.5?i=2*e*r:i=2*e*(1-r),i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};N.hsv.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};N.hcg.rgb=function(t){var e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];var n=[0,0,0],s=e%1*6,o=s%1,a=1-o,u=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return u=(1-r)*i,[(r*n[0]+u)*255,(r*n[1]+u)*255,(r*n[2]+u)*255]};N.hcg.hsv=function(t){var e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};N.hcg.hsl=function(t){var e=t[1]/100,r=t[2]/100,i=r*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};N.hcg.hwb=function(t){var e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};N.hwb.hcg=function(t){var e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};N.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};N.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};N.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};N.gray.hsl=N.gray.hsv=function(t){return[0,0,t[0]]};N.gray.hwb=function(t){return[0,100,t[0]]};N.gray.cmyk=function(t){return[0,0,0,t[0]]};N.gray.lab=function(t){return[t[0],0,0]};N.gray.hex=function(t){var e=Math.round(t[0]/100*255)&255,r=(e<<16)+(e<<8)+e,i=r.toString(16).toUpperCase();return"000000".substring(i.length)+i};N.rgb.gray=function(t){var e=(t[0]+t[1]+t[2])/3;return[e/255*100]}});var Ed=d((U5,bd)=>{var ks=tu();function RR(){for(var t={},e=Object.keys(ks),r=e.length,i=0;i{var ru=tu(),TR=Ed(),bi={},LR=Object.keys(ru);function xR(t){var e=function(r){return r==null?r:(arguments.length>1&&(r=Array.prototype.slice.call(arguments)),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function NR(t){var e=function(r){if(r==null)return r;arguments.length>1&&(r=Array.prototype.slice.call(arguments));var i=t(r);if(typeof i=="object")for(var n=i.length,s=0;s{"use strict";var Ei=Sd(),qs=(t,e)=>function(){return`[${t.apply(Ei,arguments)+e}m`},js=(t,e)=>function(){let r=t.apply(Ei,arguments);return`[${38+e};5;${r}m`},$s=(t,e)=>function(){let r=t.apply(Ei,arguments);return`[${38+e};2;${r[0]};${r[1]};${r[2]}m`};function IR(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.grey=e.color.gray;for(let n of Object.keys(e)){let s=e[n];for(let o of Object.keys(s)){let a=s[o];e[o]={open:`[${a[0]}m`,close:`[${a[1]}m`},s[o]=e[o],t.set(a[0],a[1])}Object.defineProperty(e,n,{value:s,enumerable:!1}),Object.defineProperty(e,"codes",{value:t,enumerable:!1})}let r=n=>n,i=(n,s,o)=>[n,s,o];e.color.close="",e.bgColor.close="",e.color.ansi={ansi:qs(r,0)},e.color.ansi256={ansi256:js(r,0)},e.color.ansi16m={rgb:$s(i,0)},e.bgColor.ansi={ansi:qs(r,10)},e.bgColor.ansi256={ansi256:js(r,10)},e.bgColor.ansi16m={rgb:$s(i,10)};for(let n of Object.keys(Ei)){if(typeof Ei[n]!="object")continue;let s=Ei[n];n==="ansi16"&&(n="ansi"),"ansi16"in s&&(e.color.ansi[n]=qs(s.ansi16,0),e.bgColor.ansi[n]=qs(s.ansi16,10)),"ansi256"in s&&(e.color.ansi256[n]=js(s.ansi256,0),e.bgColor.ansi256[n]=js(s.ansi256,10)),"rgb"in s&&(e.color.ansi16m[n]=$s(s.rgb,0),e.bgColor.ansi16m[n]=$s(s.rgb,10))}return e}Object.defineProperty(Od,"exports",{enumerable:!0,get:IR})});var Cd=d((H5,_d)=>{"use strict";_d.exports=(t,e)=>{e=e||process.argv;let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1?!0:i{"use strict";var PR=require("os"),Rt=Cd(),Ne=process.env,wi;Rt("no-color")||Rt("no-colors")||Rt("color=false")?wi=!1:(Rt("color")||Rt("colors")||Rt("color=true")||Rt("color=always"))&&(wi=!0);"FORCE_COLOR"in Ne&&(wi=Ne.FORCE_COLOR.length===0||parseInt(Ne.FORCE_COLOR,10)!==0);function DR(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function FR(t){if(wi===!1)return 0;if(Rt("color=16m")||Rt("color=full")||Rt("color=truecolor"))return 3;if(Rt("color=256"))return 2;if(t&&!t.isTTY&&wi!==!0)return 0;let e=wi?1:0;if(process.platform==="win32"){let r=PR.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in Ne)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(r=>r in Ne)||Ne.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in Ne)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ne.TEAMCITY_VERSION)?1:0;if(Ne.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ne){let r=parseInt((Ne.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ne.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ne.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ne.TERM)||"COLORTERM"in Ne?1:(Ne.TERM==="dumb",e)}function iu(t){let e=FR(t);return DR(e)}Ad.exports={supportsColor:iu,stdout:iu(process.stdout),stderr:iu(process.stderr)}});var Pd=d((V5,Ld)=>{"use strict";var kR=/(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,xd=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,qR=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,jR=/\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi,$R=new Map([["n",` `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function Nd(t){return t[0]==="u"&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):$R.get(t)||t}function MR(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i)if(!isNaN(s))r.push(Number(s));else if(n=s.match(qR))r.push(n[2].replace(jR,(o,a,u)=>a?Nd(a):u));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`);return r}function BR(t){xd.lastIndex=0;let e=[],r;for(;(r=xd.exec(t))!==null;){let i=r[1];if(r[2]){let n=MR(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function Id(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let n of Object.keys(r))if(Array.isArray(r[n])){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);r[n].length>0?i=i[n].apply(i,r[n]):i=i[n]}return i}Ld.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(kR,(s,o,a,u,c,l)=>{if(o)n.push(Nd(o));else if(u){let f=n.join("");n=[],i.push(r.length===0?f:Id(t,r)(f)),r.push({inverse:a,styles:BR(u)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(Id(t,r)(n.join(""))),n=[],r.pop()}else n.push(l)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jd=d((Y5,Sn)=>{"use strict";var nu=hd(),me=Rd(),su=Td().stdout,UR=Pd(),Dd=process.platform==="win32"&&!(process.env.TERM||"").toLowerCase().startsWith("xterm"),Fd=["ansi","ansi","ansi256","ansi16m"],kd=new Set(["gray"]),Si=Object.create(null);function qd(t,e){e=e||{};let r=su?su.level:0;t.level=e.level===void 0?r:e.level,t.enabled="enabled"in e?e.enabled:t.level>0}function On(t){if(!this||!(this instanceof On)||this.template){let e={};return qd(e,t),e.template=function(){let r=[].slice.call(arguments);return GR.apply(null,[e.template].concat(r))},Object.setPrototypeOf(e,On.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=On,e.template}qd(this,t)}Dd&&(me.blue.open="");for(let t of Object.keys(me))me[t].closeRe=new RegExp(nu(me[t].close),"g"),Si[t]={get(){let e=me[t];return Ms.call(this,this._styles?this._styles.concat(e):[e],this._empty,t)}};Si.visible={get(){return Ms.call(this,this._styles||[],!0,"visible")}};me.color.closeRe=new RegExp(nu(me.color.close),"g");for(let t of Object.keys(me.color.ansi))kd.has(t)||(Si[t]={get(){let e=this.level;return function(){let i={open:me.color[Fd[e]][t].apply(null,arguments),close:me.color.close,closeRe:me.color.closeRe};return Ms.call(this,this._styles?this._styles.concat(i):[i],this._empty,t)}}});me.bgColor.closeRe=new RegExp(nu(me.bgColor.close),"g");for(let t of Object.keys(me.bgColor.ansi)){if(kd.has(t))continue;let e="bg"+t[0].toUpperCase()+t.slice(1);Si[e]={get(){let r=this.level;return function(){let n={open:me.bgColor[Fd[r]][t].apply(null,arguments),close:me.bgColor.close,closeRe:me.bgColor.closeRe};return Ms.call(this,this._styles?this._styles.concat(n):[n],this._empty,t)}}}}var zR=Object.defineProperties(()=>{},Si);function Ms(t,e,r){let i=function(){return HR.apply(i,arguments)};i._styles=t,i._empty=e;let n=this;return Object.defineProperty(i,"level",{enumerable:!0,get(){return n.level},set(s){n.level=s}}),Object.defineProperty(i,"enabled",{enumerable:!0,get(){return n.enabled},set(s){n.enabled=s}}),i.hasGrey=this.hasGrey||r==="gray"||r==="grey",i.__proto__=zR,i}function HR(){let t=arguments,e=t.length,r=String(arguments[0]);if(e===0)return"";if(e>1)for(let n=1;n{"use strict";Object.defineProperty(Rn,"__esModule",{value:!0});Rn.shouldHighlight=$d;Rn.getChalk=Md;Rn.default=WR;var Bd=VR(ed()),Ud=ld(),ou=YR(jd());function YR(t){return t&&t.__esModule?t:{default:t}}function Gd(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Gd=function(){return t},t}function VR(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Gd();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}var XR=new Set(["as","async","from","get","of","set"]);function KR(t){return{keyword:t.cyan,capitalized:t.yellow,jsxIdentifier:t.yellow,punctuator:t.yellow,number:t.magenta,string:t.green,regex:t.magenta,comment:t.grey,invalid:t.white.bgRed.bold}}var ZR=/\r\n|[\n\r\u2028\u2029]/,JR=/^[()[\]{}]$/,zd;{let{matchToToken:t}=Bd,e=/^[a-z][\w-]*$/i,r=function(i,n,s){if(i.type==="name"){if((0,Ud.isKeyword)(i.value)||(0,Ud.isStrictReservedWord)(i.value,!0)||XR.has(i.value))return"keyword";if(e.test(i.value)&&(s[n-1]==="<"||s.substr(n-2,2)=="s(o)).join(` `):r+=n}return r}function $d(t){return ou.default.supportsColor||t.forceColor}function Md(t){let e=ou.default;return t.forceColor&&(e=new ou.default.constructor({enabled:!0,level:1})),e}function WR(t,e={}){if($d(e)){let r=Md(e),i=KR(r);return QR(i,t)}else return t}});var Kd=d(Bs=>{"use strict";Object.defineProperty(Bs,"__esModule",{value:!0});Bs.codeFrameColumns=Wd;Bs.default=e_;var au=t_(Hd());function Vd(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Vd=function(){return t},t}function t_(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Vd();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}var Yd=!1;function r_(t){return{gutter:t.grey,marker:t.red.bold,message:t.red.bold}}var Xd=/\r\n|[\n\r\u2028\u2029]/;function i_(t,e,r){let i=Object.assign({column:0,line:-1},t.start),n=Object.assign({},i,t.end),{linesAbove:s=2,linesBelow:o=3}=r||{},a=i.line,u=i.column,c=n.line,l=n.column,f=Math.max(a-(s+1),0),h=Math.min(e.length,c+o);a===-1&&(f=0),c===-1&&(h=e.length);let y=c-a,m={};if(y)for(let p=0;p<=y;p++){let E=p+a;if(!u)m[E]=!0;else if(p===0){let O=e[E-1].length;m[E]=[u,O-u+1]}else if(p===y)m[E]=[0,l];else{let O=e[E-p].length;m[E]=[0,O]}}else u===l?u?m[a]=[u,0]:m[a]=!0:m[a]=[u,l-u];return{start:f,end:h,markerLines:m}}function Wd(t,e,r={}){let i=(r.highlightCode||r.forceColor)&&(0,au.shouldHighlight)(r),n=(0,au.getChalk)(r),s=r_(n),o=(p,E)=>i?p(E):E,a=t.split(Xd),{start:u,end:c,markerLines:l}=i_(e,a,r),f=e.start&&typeof e.start.column=="number",h=String(c).length,m=(i?(0,au.default)(t,r):t).split(Xd).slice(u,c).map((p,E)=>{let O=u+1+E,q=` ${` ${O}`.slice(-h)} |`,A=l[O],V=!l[O+1];if(A){let k="";if(Array.isArray(A)){let G=p.slice(0,Math.max(A[0]-1,0)).replace(/[^\t]/g," "),j=A[1]||1;k=[` `,o(s.gutter,q.replace(/\d/g," "))," ",G,o(s.marker,"^").repeat(j)].join(""),V&&r.message&&(k+=" "+o(s.message,r.message))}return[o(s.marker,">"),o(s.gutter,q),p.length>0?` ${p}`:"",k].join("")}else return` ${o(s.gutter,q)}${p.length>0?` ${p}`:""}`}).join(` @@ -11,8 +11,8 @@ var H2=Object.create,Ts=Object.defineProperty,W2=Object.getPrototypeOf,V2=Object ${m}`),i?n.reset(m):m}function e_(t,e,r,i={}){if(!Yd){Yd=!0;let s="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(process.emitWarning)process.emitWarning(s,"DeprecationWarning");else{let o=new Error(s);o.name="DeprecationWarning",console.warn(new Error(s))}}return r=Math.max(r,0),Wd(t,{start:{column:r,line:e}},i)}});var em=d((Z5,Zd)=>{"use strict";var uu=Yp(),n_=Zp(),{default:s_}=Qp(),{codeFrameColumns:o_}=Kd(),Jd=uu("JSONError",{fileName:uu.append("in %s"),codeFrame:uu.append(` %s -`)}),Qd=(t,e,r)=>{typeof e=="string"&&(r=e,e=null);try{try{return JSON.parse(t,e)}catch(i){throw n_(t,e),i}}catch(i){i.message=i.message.replace(/\n/g,"");let n=i.message.match(/in JSON at position (\d+) while parsing/),s=new Jd(i);if(r&&(s.fileName=r),n&&n.length>0){let o=new s_(t),a=Number(n[1]),u=o.locationForIndex(a),c=o_(t,{start:{line:u.line+1,column:u.column+1}},{highlightCode:!0});s.codeFrame=c}throw s}};Qd.JSONError=Jd;Zd.exports=Qd});var ym=d(($,tm)=>{$=tm.exports=W;var te;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?te=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:te=function(){};$.SEMVER_SPEC_VERSION="2.0.0";var cu=256,Us=Number.MAX_SAFE_INTEGER||9007199254740991,lu=16,se=$.re=[],R=$.src=[],H=0,Oi=H++;R[Oi]="0|[1-9]\\d*";var Ri=H++;R[Ri]="[0-9]+";var fu=H++;R[fu]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var rm=H++;R[rm]="("+R[Oi]+")\\.("+R[Oi]+")\\.("+R[Oi]+")";var im=H++;R[im]="("+R[Ri]+")\\.("+R[Ri]+")\\.("+R[Ri]+")";var hu=H++;R[hu]="(?:"+R[Oi]+"|"+R[fu]+")";var pu=H++;R[pu]="(?:"+R[Ri]+"|"+R[fu]+")";var du=H++;R[du]="(?:-("+R[hu]+"(?:\\."+R[hu]+")*))";var mu=H++;R[mu]="(?:-?("+R[pu]+"(?:\\."+R[pu]+")*))";var gu=H++;R[gu]="[0-9A-Za-z-]+";var _n=H++;R[_n]="(?:\\+("+R[gu]+"(?:\\."+R[gu]+")*))";var yu=H++,nm="v?"+R[rm]+R[du]+"?"+R[_n]+"?";R[yu]="^"+nm+"$";var vu="[v=\\s]*"+R[im]+R[mu]+"?"+R[_n]+"?",bu=H++;R[bu]="^"+vu+"$";var _i=H++;R[_i]="((?:<|>)?=?)";var Gs=H++;R[Gs]=R[Ri]+"|x|X|\\*";var zs=H++;R[zs]=R[Oi]+"|x|X|\\*";var qr=H++;R[qr]="[v=\\s]*("+R[zs]+")(?:\\.("+R[zs]+")(?:\\.("+R[zs]+")(?:"+R[du]+")?"+R[_n]+"?)?)?";var Ci=H++;R[Ci]="[v=\\s]*("+R[Gs]+")(?:\\.("+R[Gs]+")(?:\\.("+R[Gs]+")(?:"+R[mu]+")?"+R[_n]+"?)?)?";var sm=H++;R[sm]="^"+R[_i]+"\\s*"+R[qr]+"$";var om=H++;R[om]="^"+R[_i]+"\\s*"+R[Ci]+"$";var am=H++;R[am]="(?:^|[^\\d])(\\d{1,"+lu+"})(?:\\.(\\d{1,"+lu+"}))?(?:\\.(\\d{1,"+lu+"}))?(?:$|[^\\d])";var Hs=H++;R[Hs]="(?:~>?)";var Ws=H++;R[Ws]="(\\s*)"+R[Hs]+"\\s+";se[Ws]=new RegExp(R[Ws],"g");var a_="$1~",um=H++;R[um]="^"+R[Hs]+R[qr]+"$";var cm=H++;R[cm]="^"+R[Hs]+R[Ci]+"$";var Vs=H++;R[Vs]="(?:\\^)";var Ys=H++;R[Ys]="(\\s*)"+R[Vs]+"\\s+";se[Ys]=new RegExp(R[Ys],"g");var u_="$1^",lm=H++;R[lm]="^"+R[Vs]+R[qr]+"$";var fm=H++;R[fm]="^"+R[Vs]+R[Ci]+"$";var Eu=H++;R[Eu]="^"+R[_i]+"\\s*("+vu+")$|^$";var wu=H++;R[wu]="^"+R[_i]+"\\s*("+nm+")$|^$";var Cn=H++;R[Cn]="(\\s*)"+R[_i]+"\\s*("+vu+"|"+R[qr]+")";se[Cn]=new RegExp(R[Cn],"g");var c_="$1$2$3",hm=H++;R[hm]="^\\s*("+R[qr]+")\\s+-\\s+("+R[qr]+")\\s*$";var pm=H++;R[pm]="^\\s*("+R[Ci]+")\\s+-\\s+("+R[Ci]+")\\s*$";var dm=H++;R[dm]="(<|>)?=?\\s*\\*";for(var jr=0;jrcu)return null;var r=e.loose?se[bu]:se[yu];if(!r.test(t))return null;try{return new W(t,e)}catch(i){return null}}$.valid=l_;function l_(t,e){var r=$r(t,e);return r?r.version:null}$.clean=f_;function f_(t,e){var r=$r(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null}$.SemVer=W;function W(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof W){if(t.loose===e.loose)return t;t=t.version}else if(typeof t!="string")throw new TypeError("Invalid Version: "+t);if(t.length>cu)throw new TypeError("version is longer than "+cu+" characters");if(!(this instanceof W))return new W(t,e);te("SemVer",t,e),this.options=e,this.loose=!!e.loose;var r=t.trim().match(e.loose?se[bu]:se[yu]);if(!r)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Us||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Us||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Us||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(i){if(/^[0-9]+$/.test(i)){var n=+i;if(n>=0&&n=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this};$.inc=h_;function h_(t,e,r,i){typeof r=="string"&&(i=r,r=void 0);try{return new W(t,r).inc(e,i).version}catch(n){return null}}$.diff=p_;function p_(t,e){if(Su(t,e))return null;var r=$r(t),i=$r(e),n="";if(r.prerelease.length||i.prerelease.length){n="pre";var s="prerelease"}for(var o in r)if((o==="major"||o==="minor"||o==="patch")&&r[o]!==i[o])return n+o;return s}$.compareIdentifiers=Ai;var mm=/^[0-9]+$/;function Ai(t,e){var r=mm.test(t),i=mm.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:t0}$.lt=Xs;function Xs(t,e,r){return Ut(t,e,r)<0}$.eq=Su;function Su(t,e,r){return Ut(t,e,r)===0}$.neq=gm;function gm(t,e,r){return Ut(t,e,r)!==0}$.gte=Ou;function Ou(t,e,r){return Ut(t,e,r)>=0}$.lte=Ru;function Ru(t,e,r){return Ut(t,e,r)<=0}$.cmp=Ks;function Ks(t,e,r,i){switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Su(t,r,i);case"!=":return gm(t,r,i);case">":return An(t,r,i);case">=":return Ou(t,r,i);case"<":return Xs(t,r,i);case"<=":return Ru(t,r,i);default:throw new TypeError("Invalid operator: "+e)}}$.Comparator=ut;function ut(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof ut){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof ut))return new ut(t,e);te("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===Tn?this.value="":this.value=this.operator+this.semver.version,te("comp",this)}var Tn={};ut.prototype.parse=function(t){var e=this.options.loose?se[Eu]:se[wu],r=t.match(e);if(!r)throw new TypeError("Invalid comparator: "+t);this.operator=r[1],this.operator==="="&&(this.operator=""),r[2]?this.semver=new W(r[2],this.options.loose):this.semver=Tn};ut.prototype.toString=function(){return this.value};ut.prototype.test=function(t){return te("Comparator.test",t,this.options.loose),this.semver===Tn?!0:(typeof t=="string"&&(t=new W(t,this.options)),Ks(t,this.operator,this.semver,this.options))};ut.prototype.intersects=function(t,e){if(!(t instanceof ut))throw new TypeError("a Comparator is required");(!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1});var r;if(this.operator==="")return r=new fe(t.value,e),Zs(this.value,r,e);if(t.operator==="")return r=new fe(this.value,e),Zs(t.semver,r,e);var i=(this.operator===">="||this.operator===">")&&(t.operator===">="||t.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(t.operator==="<="||t.operator==="<"),s=this.semver.version===t.semver.version,o=(this.operator===">="||this.operator==="<=")&&(t.operator===">="||t.operator==="<="),a=Ks(this.semver,"<",t.semver,e)&&(this.operator===">="||this.operator===">")&&(t.operator==="<="||t.operator==="<"),u=Ks(this.semver,">",t.semver,e)&&(this.operator==="<="||this.operator==="<")&&(t.operator===">="||t.operator===">");return i||n||s&&o||a||u};$.Range=fe;function fe(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof fe)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new fe(t.raw,e);if(t instanceof ut)return new fe(t.value,e);if(!(this instanceof fe))return new fe(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(r){return this.parseRange(r.trim())},this).filter(function(r){return r.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}fe.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range};fe.prototype.toString=function(){return this.range};fe.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var r=e?se[pm]:se[hm];t=t.replace(r,O_),te("hyphen replace",t),t=t.replace(se[Cn],c_),te("comparator trim",t,se[Cn]),t=t.replace(se[Ws],a_),t=t.replace(se[Ys],u_),t=t.split(/\s+/).join(" ");var i=e?se[Eu]:se[wu],n=t.split(" ").map(function(s){return S_(s,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(n=n.filter(function(s){return!!s.match(i)})),n=n.map(function(s){return new ut(s,this.options)},this),n};fe.prototype.intersects=function(t,e){if(!(t instanceof fe))throw new TypeError("a Range is required");return this.set.some(function(r){return r.every(function(i){return t.set.some(function(n){return n.every(function(s){return i.intersects(s,e)})})})})};$.toComparators=R_;function R_(t,e){return new fe(t,e).set.map(function(r){return r.map(function(i){return i.value}).join(" ").trim().split(" ")})}function S_(t,e){return te("comp",t,e),t=C_(t,e),te("caret",t),t=__(t,e),te("tildes",t),t=A_(t,e),te("xrange",t),t=T_(t,e),te("stars",t),t}function Be(t){return!t||t.toLowerCase()==="x"||t==="*"}function __(t,e){return t.trim().split(/\s+/).map(function(r){return L_(r,e)}).join(" ")}function L_(t,e){var r=e.loose?se[cm]:se[um];return t.replace(r,function(i,n,s,o,a){te("tilde",t,i,n,s,o,a);var u;return Be(n)?u="":Be(s)?u=">="+n+".0.0 <"+(+n+1)+".0.0":Be(o)?u=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":a?(te("replaceTilde pr",a),u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+(+s+1)+".0"):u=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",te("tilde return",u),u})}function C_(t,e){return t.trim().split(/\s+/).map(function(r){return x_(r,e)}).join(" ")}function x_(t,e){te("caret",t,e);var r=e.loose?se[fm]:se[lm];return t.replace(r,function(i,n,s,o,a){te("caret",t,i,n,s,o,a);var u;return Be(n)?u="":Be(s)?u=">="+n+".0.0 <"+(+n+1)+".0.0":Be(o)?n==="0"?u=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+".0 <"+(+n+1)+".0.0":a?(te("replaceCaret pr",a),n==="0"?s==="0"?u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+s+"."+(+o+1):u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+"."+o+"-"+a+" <"+(+n+1)+".0.0"):(te("no pr"),n==="0"?s==="0"?u=">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):u=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),te("caret return",u),u})}function A_(t,e){return te("replaceXRanges",t,e),t.split(/\s+/).map(function(r){return N_(r,e)}).join(" ")}function N_(t,e){t=t.trim();var r=e.loose?se[om]:se[sm];return t.replace(r,function(i,n,s,o,a,u){te("xRange",t,i,n,s,o,a,u);var c=Be(s),l=c||Be(o),f=l||Be(a),h=f;return n==="="&&h&&(n=""),c?n===">"||n==="<"?i="<0.0.0":i="*":n&&h?(l&&(o=0),a=0,n===">"?(n=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",l?s=+s+1:o=+o+1),i=n+s+"."+o+"."+a):l?i=">="+s+".0.0 <"+(+s+1)+".0.0":f&&(i=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),te("xRange return",i),i})}function T_(t,e){return te("replaceStars",t,e),t.trim().replace(se[dm],"")}function O_(t,e,r,i,n,s,o,a,u,c,l,f,h){return Be(r)?e="":Be(i)?e=">="+r+".0.0":Be(n)?e=">="+r+"."+i+".0":e=">="+e,Be(u)?a="":Be(c)?a="<"+(+u+1)+".0.0":Be(l)?a="<"+u+"."+(+c+1)+".0":f?a="<="+u+"."+c+"."+l+"-"+f:a="<="+a,(e+" "+a).trim()}fe.prototype.test=function(t){if(!t)return!1;typeof t=="string"&&(t=new W(t,this.options));for(var e=0;e0){var n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}$.satisfies=Zs;function Zs(t,e,r){try{e=new fe(e,r)}catch(i){return!1}return e.test(t)}$.maxSatisfying=P_;function P_(t,e,r){var i=null,n=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new W(i,r))}),i}$.minSatisfying=D_;function D_(t,e,r){var i=null,n=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new W(i,r))}),i}$.minVersion=F_;function F_(t,e){t=new fe(t,e);var r=new W("0.0.0");if(t.test(r)||(r=new W("0.0.0-0"),t.test(r)))return r;r=null;for(var i=0;i":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!r||An(r,o))&&(r=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+s.operator)}})}return r&&t.test(r)?r:null}$.validRange=k_;function k_(t,e){try{return new fe(t,e).range||"*"}catch(r){return null}}$.ltr=q_;function q_(t,e,r){return _u(t,e,"<",r)}$.gtr=j_;function j_(t,e,r){return _u(t,e,">",r)}$.outside=_u;function _u(t,e,r,i){t=new W(t,i),e=new fe(e,i);var n,s,o,a,u;switch(r){case">":n=An,s=Ru,o=Xs,a=">",u=">=";break;case"<":n=Xs,s=Ou,o=An,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Zs(t,e,i))return!1;for(var c=0;c=0.0.0")),f=f||y,h=h||y,n(y.semver,f.semver,i)?f=y:o(y.semver,h.semver,i)&&(h=y)}),f.operator===a||f.operator===u||(!h.operator||h.operator===a)&&s(t,h.semver))return!1;if(h.operator===u&&o(t,h.semver))return!1}return!0}$.prerelease=$_;function $_(t,e){var r=$r(t,e);return r&&r.prerelease.length?r.prerelease:null}$.intersects=M_;function M_(t,e,r){return t=new fe(t,r),e=new fe(e,r),t.intersects(e)}$.coerce=B_;function B_(t){if(t instanceof W)return t;if(typeof t!="string")return null;var e=t.match(se[am]);return e==null?null:$r(e[1]+"."+(e[2]||"0")+"."+(e[3]||"0"))}});var Cu=d((J5,vm)=>{vm.exports=["0BSD","AAL","ADSL","AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0","AGPL-1.0-only","AGPL-1.0-or-later","AGPL-3.0-only","AGPL-3.0-or-later","AMDPLPA","AML","AMPAS","ANTLR-PD","ANTLR-PD-fallback","APAFML","APL-1.0","APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0","Abstyles","Adobe-2006","Adobe-Glyph","Afmparse","Aladdin","Apache-1.0","Apache-1.1","Apache-2.0","Artistic-1.0","Artistic-1.0-Perl","Artistic-1.0-cl8","Artistic-2.0","BSD-1-Clause","BSD-2-Clause","BSD-2-Clause-Patent","BSD-2-Clause-Views","BSD-3-Clause","BSD-3-Clause-Attribution","BSD-3-Clause-Clear","BSD-3-Clause-LBNL","BSD-3-Clause-No-Nuclear-License","BSD-3-Clause-No-Nuclear-License-2014","BSD-3-Clause-No-Nuclear-Warranty","BSD-3-Clause-Open-MPI","BSD-4-Clause","BSD-4-Clause-UC","BSD-Protection","BSD-Source-Code","BSL-1.0","BUSL-1.1","Bahyph","Barr","Beerware","BitTorrent-1.0","BitTorrent-1.1","BlueOak-1.0.0","Borceux","CAL-1.0","CAL-1.0-Combined-Work-Exception","CATOSL-1.1","CC-BY-1.0","CC-BY-2.0","CC-BY-2.5","CC-BY-3.0","CC-BY-3.0-AT","CC-BY-3.0-US","CC-BY-4.0","CC-BY-NC-1.0","CC-BY-NC-2.0","CC-BY-NC-2.5","CC-BY-NC-3.0","CC-BY-NC-4.0","CC-BY-NC-ND-1.0","CC-BY-NC-ND-2.0","CC-BY-NC-ND-2.5","CC-BY-NC-ND-3.0","CC-BY-NC-ND-3.0-IGO","CC-BY-NC-ND-4.0","CC-BY-NC-SA-1.0","CC-BY-NC-SA-2.0","CC-BY-NC-SA-2.5","CC-BY-NC-SA-3.0","CC-BY-NC-SA-4.0","CC-BY-ND-1.0","CC-BY-ND-2.0","CC-BY-ND-2.5","CC-BY-ND-3.0","CC-BY-ND-4.0","CC-BY-SA-1.0","CC-BY-SA-2.0","CC-BY-SA-2.0-UK","CC-BY-SA-2.5","CC-BY-SA-3.0","CC-BY-SA-3.0-AT","CC-BY-SA-4.0","CC-PDDC","CC0-1.0","CDDL-1.0","CDDL-1.1","CDLA-Permissive-1.0","CDLA-Sharing-1.0","CECILL-1.0","CECILL-1.1","CECILL-2.0","CECILL-2.1","CECILL-B","CECILL-C","CERN-OHL-1.1","CERN-OHL-1.2","CERN-OHL-P-2.0","CERN-OHL-S-2.0","CERN-OHL-W-2.0","CNRI-Jython","CNRI-Python","CNRI-Python-GPL-Compatible","CPAL-1.0","CPL-1.0","CPOL-1.02","CUA-OPL-1.0","Caldera","ClArtistic","Condor-1.1","Crossword","CrystalStacker","Cube","D-FSL-1.0","DOC","DSDP","Dotseqn","ECL-1.0","ECL-2.0","EFL-1.0","EFL-2.0","EPICS","EPL-1.0","EPL-2.0","EUDatagrid","EUPL-1.0","EUPL-1.1","EUPL-1.2","Entessa","ErlPL-1.1","Eurosym","FSFAP","FSFUL","FSFULLR","FTL","Fair","Frameworx-1.0","FreeImage","GFDL-1.1-invariants-only","GFDL-1.1-invariants-or-later","GFDL-1.1-no-invariants-only","GFDL-1.1-no-invariants-or-later","GFDL-1.1-only","GFDL-1.1-or-later","GFDL-1.2-invariants-only","GFDL-1.2-invariants-or-later","GFDL-1.2-no-invariants-only","GFDL-1.2-no-invariants-or-later","GFDL-1.2-only","GFDL-1.2-or-later","GFDL-1.3-invariants-only","GFDL-1.3-invariants-or-later","GFDL-1.3-no-invariants-only","GFDL-1.3-no-invariants-or-later","GFDL-1.3-only","GFDL-1.3-or-later","GL2PS","GLWTPL","GPL-1.0-only","GPL-1.0-or-later","GPL-2.0-only","GPL-2.0-or-later","GPL-3.0-only","GPL-3.0-or-later","Giftware","Glide","Glulxe","HPND","HPND-sell-variant","HTMLTIDY","HaskellReport","Hippocratic-2.1","IBM-pibs","ICU","IJG","IPA","IPL-1.0","ISC","ImageMagick","Imlib2","Info-ZIP","Intel","Intel-ACPI","Interbase-1.0","JPNIC","JSON","JasPer-2.0","LAL-1.2","LAL-1.3","LGPL-2.0-only","LGPL-2.0-or-later","LGPL-2.1-only","LGPL-2.1-or-later","LGPL-3.0-only","LGPL-3.0-or-later","LGPLLR","LPL-1.0","LPL-1.02","LPPL-1.0","LPPL-1.1","LPPL-1.2","LPPL-1.3a","LPPL-1.3c","Latex2e","Leptonica","LiLiQ-P-1.1","LiLiQ-R-1.1","LiLiQ-Rplus-1.1","Libpng","Linux-OpenIB","MIT","MIT-0","MIT-CMU","MIT-advertising","MIT-enna","MIT-feh","MIT-open-group","MITNFA","MPL-1.0","MPL-1.1","MPL-2.0","MPL-2.0-no-copyleft-exception","MS-PL","MS-RL","MTLL","MakeIndex","MirOS","Motosoto","MulanPSL-1.0","MulanPSL-2.0","Multics","Mup","NASA-1.3","NBPL-1.0","NCGL-UK-2.0","NCSA","NGPL","NIST-PD","NIST-PD-fallback","NLOD-1.0","NLPL","NOSL","NPL-1.0","NPL-1.1","NPOSL-3.0","NRL","NTP","NTP-0","Naumen","Net-SNMP","NetCDF","Newsletr","Nokia","Noweb","O-UDA-1.0","OCCT-PL","OCLC-2.0","ODC-By-1.0","ODbL-1.0","OFL-1.0","OFL-1.0-RFN","OFL-1.0-no-RFN","OFL-1.1","OFL-1.1-RFN","OFL-1.1-no-RFN","OGC-1.0","OGL-Canada-2.0","OGL-UK-1.0","OGL-UK-2.0","OGL-UK-3.0","OGTSL","OLDAP-1.1","OLDAP-1.2","OLDAP-1.3","OLDAP-1.4","OLDAP-2.0","OLDAP-2.0.1","OLDAP-2.1","OLDAP-2.2","OLDAP-2.2.1","OLDAP-2.2.2","OLDAP-2.3","OLDAP-2.4","OLDAP-2.5","OLDAP-2.6","OLDAP-2.7","OLDAP-2.8","OML","OPL-1.0","OSET-PL-2.1","OSL-1.0","OSL-1.1","OSL-2.0","OSL-2.1","OSL-3.0","OpenSSL","PDDL-1.0","PHP-3.0","PHP-3.01","PSF-2.0","Parity-6.0.0","Parity-7.0.0","Plexus","PolyForm-Noncommercial-1.0.0","PolyForm-Small-Business-1.0.0","PostgreSQL","Python-2.0","QPL-1.0","Qhull","RHeCos-1.1","RPL-1.1","RPL-1.5","RPSL-1.0","RSA-MD","RSCPL","Rdisc","Ruby","SAX-PD","SCEA","SGI-B-1.0","SGI-B-1.1","SGI-B-2.0","SHL-0.5","SHL-0.51","SISSL","SISSL-1.2","SMLNJ","SMPPL","SNIA","SPL-1.0","SSH-OpenSSH","SSH-short","SSPL-1.0","SWL","Saxpath","Sendmail","Sendmail-8.23","SimPL-2.0","Sleepycat","Spencer-86","Spencer-94","Spencer-99","SugarCRM-1.1.3","TAPR-OHL-1.0","TCL","TCP-wrappers","TMate","TORQUE-1.1","TOSL","TU-Berlin-1.0","TU-Berlin-2.0","UCL-1.0","UPL-1.0","Unicode-DFS-2015","Unicode-DFS-2016","Unicode-TOU","Unlicense","VOSTROM","VSL-1.0","Vim","W3C","W3C-19980720","W3C-20150513","WTFPL","Watcom-1.0","Wsuipa","X11","XFree86-1.1","XSkat","Xerox","Xnet","YPL-1.0","YPL-1.1","ZPL-1.1","ZPL-2.0","ZPL-2.1","Zed","Zend-2.0","Zimbra-1.3","Zimbra-1.4","Zlib","blessing","bzip2-1.0.5","bzip2-1.0.6","copyleft-next-0.3.0","copyleft-next-0.3.1","curl","diffmark","dvipdfm","eGenix","etalab-2.0","gSOAP-1.3b","gnuplot","iMatix","libpng-2.0","libselinux-1.0","libtiff","mpich2","psfrag","psutils","xinetd","xpp","zlib-acknowledgement"]});var Em=d((Q5,bm)=>{bm.exports=["AGPL-1.0","AGPL-3.0","BSD-2-Clause-FreeBSD","BSD-2-Clause-NetBSD","GFDL-1.1","GFDL-1.2","GFDL-1.3","GPL-1.0","GPL-2.0","GPL-2.0-with-GCC-exception","GPL-2.0-with-autoconf-exception","GPL-2.0-with-bison-exception","GPL-2.0-with-classpath-exception","GPL-2.0-with-font-exception","GPL-3.0","GPL-3.0-with-GCC-exception","GPL-3.0-with-autoconf-exception","LGPL-2.0","LGPL-2.1","LGPL-3.0","Nunit","StandardML-NJ","eCos-2.0","wxWindows"]});var Sm=d((eF,wm)=>{wm.exports=["389-exception","Autoconf-exception-2.0","Autoconf-exception-3.0","Bison-exception-2.2","Bootloader-exception","Classpath-exception-2.0","CLISP-exception-2.0","DigiRule-FOSS-exception","eCos-exception-2.0","Fawkes-Runtime-exception","FLTK-exception","Font-exception-2.0","freertos-exception-2.0","GCC-exception-2.0","GCC-exception-3.1","gnu-javamail-exception","GPL-3.0-linking-exception","GPL-3.0-linking-source-exception","GPL-CC-1.0","i2p-gpl-java-exception","Libtool-exception","Linux-syscall-note","LLVM-exception","LZMA-exception","mif-exception","Nokia-Qt-exception-1.1","OCaml-LGPL-linking-exception","OCCT-exception-1.0","OpenJDK-assembly-exception-1.0","openvpn-openssl-exception","PS-or-PDF-font-exception-20170817","Qt-GPL-exception-1.0","Qt-LGPL-exception-1.1","Qwt-exception-1.0","Swift-exception","u-boot-exception-2.0","Universal-FOSS-exception-1.0","WxWindows-exception-3.1"]});var Rm=d((tF,Om)=>{"use strict";var U_=[].concat(Cu()).concat(Em()),G_=Sm();Om.exports=function(t){var e=0;function r(){return e1&&t[e-2]===" ")throw new Error("Space before `+`");return m&&{type:"OPERATOR",string:m}}function o(){return i(/[A-Za-z0-9-.]+/)}function a(){var m=o();if(!m)throw new Error("Expected idstring at offset "+e);return m}function u(){if(i("DocumentRef-")){var m=a();return{type:"DOCUMENTREF",string:m}}}function c(){if(i("LicenseRef-")){var m=a();return{type:"LICENSEREF",string:m}}}function l(){var m=e,p=o();if(U_.indexOf(p)!==-1)return{type:"LICENSE",string:p};if(G_.indexOf(p)!==-1)return{type:"EXCEPTION",string:p};e=m}function f(){return s()||u()||c()||l()}for(var h=[];r()&&(n(),!!r());){var y=f();if(!y)throw new Error("Unexpected `"+t[e]+"` at offset "+e);h.push(y)}return h}});var Cm=d((rF,_m)=>{"use strict";_m.exports=function(t){var e=0;function r(){return e{"use strict";var z_=Rm(),H_=Cm();Am.exports=function(t){return H_(z_(t))}});var Fm=d((nF,Tm)=>{var W_=Au(),V_=Cu();function Js(t){try{return W_(t),!0}catch(e){return!1}}var Lm=[["APGL","AGPL"],["Gpl","GPL"],["GLP","GPL"],["APL","Apache"],["ISD","ISC"],["GLP","GPL"],["IST","ISC"],["Claude","Clause"],[" or later","+"],[" International",""],["GNU","GPL"],["GUN","GPL"],["+",""],["GNU GPL","GPL"],["GNU/GPL","GPL"],["GNU GLP","GPL"],["GNU General Public License","GPL"],["Gnu public license","GPL"],["GNU Public License","GPL"],["GNU GENERAL PUBLIC LICENSE","GPL"],["MTI","MIT"],["Mozilla Public License","MPL"],["Universal Permissive License","UPL"],["WTH","WTF"],["-License",""]],Y_=0,X_=1,xm=[function(t){return t.toUpperCase()},function(t){return t.trim()},function(t){return t.replace(/\./g,"")},function(t){return t.replace(/\s+/g,"")},function(t){return t.replace(/\s+/g,"-")},function(t){return t.replace("v","-")},function(t){return t.replace(/,?\s*(\d)/,"-$1")},function(t){return t.replace(/,?\s*(\d)/,"-$1.0")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2.0")},function(t){return t[0].toUpperCase()+t.slice(1)},function(t){return t.replace("/","-")},function(t){return t.replace(/\s*V\s*(\d)/,"-$1").replace(/(\d)$/,"$1.0")},function(t){return t.indexOf("3.0")!==-1?t+"-or-later":t+"-only"},function(t){return t+"only"},function(t){return t.replace(/(\d)$/,"-$1.0")},function(t){return t.replace(/(-| )?(\d)$/,"-$2-Clause")},function(t){return t.replace(/(-| )clause(-| )(\d)/,"-$3-Clause")},function(t){return t.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i,"BSD-3-Clause")},function(t){return t.replace(/\bSimplified(-| )?BSD((-| )License)?/i,"BSD-2-Clause")},function(t){return t.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i,"BSD-2-Clause-$1BSD")},function(t){return t.replace(/\bClear(-| )?BSD((-| )License)?/i,"BSD-3-Clause-Clear")},function(t){return t.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i,"BSD-4-Clause")},function(t){return"CC-"+t},function(t){return"CC-"+t+"-4.0"},function(t){return t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")},function(t){return"CC-"+t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")+"-4.0"}],Tu=V_.map(function(t){var e=/^(.*)-\d+\.\d+$/.exec(t);return e?[e[0],e[1]]:[t,null]}).reduce(function(t,e){var r=e[1];return t[r]=t[r]||[],t[r].push(e[0]),t},{}),K_=Object.keys(Tu).map(function(e){return[e,Tu[e]]}).filter(function(e){return e[1].length===1&&e[0]!==null&&e[0]!=="APL"}).map(function(e){return[e[0],e[1][0]]});Tu=void 0;var Nm=[["UNLI","Unlicense"],["WTF","WTFPL"],["2 CLAUSE","BSD-2-Clause"],["2-CLAUSE","BSD-2-Clause"],["3 CLAUSE","BSD-3-Clause"],["3-CLAUSE","BSD-3-Clause"],["AFFERO","AGPL-3.0-or-later"],["AGPL","AGPL-3.0-or-later"],["APACHE","Apache-2.0"],["ARTISTIC","Artistic-2.0"],["Affero","AGPL-3.0-or-later"],["BEER","Beerware"],["BOOST","BSL-1.0"],["BSD","BSD-2-Clause"],["CDDL","CDDL-1.1"],["ECLIPSE","EPL-1.0"],["FUCK","WTFPL"],["GNU","GPL-3.0-or-later"],["LGPL","LGPL-3.0-or-later"],["GPLV1","GPL-1.0-only"],["GPL-1","GPL-1.0-only"],["GPLV2","GPL-2.0-only"],["GPL-2","GPL-2.0-only"],["GPL","GPL-3.0-or-later"],["MIT +NO-FALSE-ATTRIBS","MITNFA"],["MIT","MIT"],["MPL","MPL-2.0"],["X11","X11"],["ZLIB","Zlib"]].concat(K_),Z_=0,J_=1,Im=function(t){for(var e=0;e-1)return i[J_]}return null},Dm=function(t,e){for(var r=0;r-1){var s=t.replace(n,i[X_]),o=e(s);if(o!==null)return o}}return null};Tm.exports=function(t,e){e=e||{};var r=e.upgrade===void 0?!0:!!e.upgrade;function i(a){return r?Q_(a):a}var n=typeof t=="string"&&t.trim().length!==0;if(!n)throw Error("Invalid argument. Expected non-empty string.");if(t=t.trim(),Js(t))return i(t);var s=t.replace(/\+$/,"").trim();if(Js(s))return i(s);var o=Im(t);return o!==null||(o=Dm(t,function(a){return Js(a)?a:Im(a)}),o!==null)||(o=Pm(t),o!==null)||(o=Dm(t,Pm),o!==null)?i(o):null};function Q_(t){return["GPL-1.0","LGPL-1.0","AGPL-1.0","GPL-2.0","LGPL-2.0","AGPL-2.0","LGPL-2.1"].indexOf(t)!==-1?t+"-only":["GPL-1.0+","GPL-2.0+","GPL-3.0+","LGPL-2.0+","LGPL-2.1+","LGPL-3.0+","AGPL-1.0+","AGPL-3.0+"].indexOf(t)!==-1?t.replace(/\+$/,"-or-later"):["GPL-3.0","LGPL-3.0","AGPL-3.0"].indexOf(t)!==-1?t+"-or-later":t}});var xu=d((sF,km)=>{var eC=Au(),tC=Fm(),qm='license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN "',rC=/^SEE LICEN[CS]E IN (.+)$/;function jm(t,e){return e.slice(0,t.length)===t}function Lu(t){if(t.hasOwnProperty("license")){var e=t.license;return jm("LicenseRef",e)||jm("DocumentRef",e)}else return Lu(t.left)||Lu(t.right)}km.exports=function(t){var e;try{e=eC(t)}catch(s){var r;if(t==="UNLICENSED"||t==="UNLICENCED")return{validForOldPackages:!0,validForNewPackages:!0,unlicensed:!0};if(r=rC.exec(t))return{validForOldPackages:!0,validForNewPackages:!0,inFile:r[1]};var i={validForOldPackages:!1,validForNewPackages:!1,warnings:[qm]};if(t.trim().length!==0){var n=tC(t);n&&i.warnings.push('license is similar to the valid expression "'+n+'"')}return i}return Lu(e)?{validForNewPackages:!1,validForOldPackages:!1,spdx:!0,warnings:[qm]}:{validForNewPackages:!0,validForOldPackages:!0,spdx:!0}}});var Nu=d((oF,$m)=>{"use strict";var Ln=$m.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Mm(t)}}},Bm={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Mm};Object.keys(Ln).forEach(function(t){Object.keys(Bm).forEach(function(e){Ln[t][e]||(Ln[t][e]=Bm[e])}),Ln[t].protocols_re=RegExp("^("+Ln[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Mm(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var zm=d((aF,Um)=>{"use strict";var Gm=Nu(),Ti=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;for(var i=Object.keys(r),n=i.length;n--;)e[i[n]]=r[i[n]];return e};Um.exports=Ie;function Ie(t,e,r,i,n,s,o){var a=this;a.type=t,Object.keys(Gm[t]).forEach(function(u){a[u]=Gm[t][u]}),a.user=e,a.auth=r,a.project=i,a.committish=n,a.default=s,a.opts=o||{}}Ie.prototype.hash=function(){return this.committish?"#"+this.committish:""};Ie.prototype._fill=function(t,e){if(!!t){var r=Ti({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Ti(Ti({},this.opts),e);var i=this;Object.keys(this).forEach(function(l){i[l]!=null&&r[l]==null&&(r[l]=i[l])});var n=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(h){return encodeURIComponent(h)}).join("/"):r[l]=encodeURIComponent(f)}),r["auth@"]=n?n+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Ie.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Ie.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Ie.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Ti({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Ie.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Ie.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Ie.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Ie.prototype.git=function(t){return this._fill(this.gittemplate,t)};Ie.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Ie.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Ie.prototype.tarball=function(t){var e=Ti({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Ie.prototype.file=function(t,e){return this._fill(this.filetemplate,Ti({path:t},e))};Ie.prototype.getDefaultRepresentation=function(){return this.default};Ie.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var Wm=d((uF,Iu)=>{"use strict";var Qs=require("url"),Hm=Nu(),iC=Iu.exports=zm(),nC={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function sC(t){return nC[t]||t.slice(0,-1)}var oC={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0},Pu={};Iu.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return r in Pu||(Pu[r]=aC(t,e)),Pu[r]}};function aC(t,e){if(!(t==null||t==="")){var r=cC(uC(t)?"github:"+t:t),i=lC(r),n=r.match(new RegExp("^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)")),s=Object.keys(Hm).map(function(o){try{var a=Hm[o],u=null;i.auth&&oC[i.protocol]&&(u=i.auth);var c=i.hash?decodeURIComponent(i.hash.substr(1)):null,l=null,f=null,h=null;if(n&&n[1]===o)l=n[2]&&decodeURIComponent(n[2]),f=decodeURIComponent(n[3]),h="shortcut";else{if(i.host&&i.host!==a.domain&&i.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(i.protocol)||!i.path)return;var y=a.pathmatch,m=i.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),h=sC(i.protocol)}return new iC(o,l,u,f,c,h,e)}catch(p){if(!(p instanceof URIError))throw p}}).filter(function(o){return o});if(s.length===1)return s[0]}}function uC(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function cC(t){var e=Qs.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function lC(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=Qs.parse(t);if(r.auth&&typeof Qs.URL=="function"){var i=t.match(/[^@]+@[^:/]+/);if(i){var n=new Qs.URL(i[0]);r.auth=n.username||"",n.password&&(r.auth+=":"+n.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var Du=d((cF,Vm)=>{Vm.exports=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(r,i){return i};var e=new Error().stack;return Error.prepareStackTrace=t,e[2].getFileName()}});var Ym=d((lF,xn)=>{"use strict";var fC=process.platform==="win32",hC=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,pC=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,Fu={};function dC(t){var e=hC.exec(t),r=(e[1]||"")+(e[2]||""),i=e[3]||"",n=pC.exec(i),s=n[1],o=n[2],a=n[3];return[r,s,o,a]}Fu.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=dC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};var mC=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,ku={};function gC(t){return mC.exec(t).slice(1)}ku.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=gC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return e[1]=e[1]||"",e[2]=e[2]||"",e[3]=e[3]||"",{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};fC?xn.exports=Fu.parse:xn.exports=ku.parse;xn.exports.posix=ku.parse;xn.exports.win32=Fu.parse});var qu=d((fF,Xm)=>{var Km=require("path"),Zm=Km.parse||Ym(),Jm=function(e,r){var i="/";/^([A-Za-z]:)/.test(e)?i="":/^\\\\/.test(e)&&(i="\\\\");for(var n=[e],s=Zm(e);s.dir!==n[n.length-1];)n.push(s.dir),s=Zm(s.dir);return n.reduce(function(o,a){return o.concat(r.map(function(u){return Km.resolve(i,a,u)}))},[])};Xm.exports=function(e,r,i){var n=r&&r.moduleDirectory?[].concat(r.moduleDirectory):["node_modules"];if(r&&typeof r.paths=="function")return r.paths(i,e,function(){return Jm(e,n)},r);var s=Jm(e,n);return r&&r.paths?s.concat(r.paths):s}});var ju=d((hF,Qm)=>{Qm.exports=function(t,e){return e||{}}});var t0=d((pF,e0)=>{"use strict";var yC="Function.prototype.bind called on incompatible ",$u=Array.prototype.slice,vC=Object.prototype.toString,bC="[object Function]";e0.exports=function(e){var r=this;if(typeof r!="function"||vC.call(r)!==bC)throw new TypeError(yC+r);for(var i=$u.call(arguments,1),n,s=function(){if(this instanceof n){var l=r.apply(this,i.concat($u.call(arguments)));return Object(l)===l?l:this}else return r.apply(e,i.concat($u.call(arguments)))},o=Math.max(0,r.length-i.length),a=[],u=0;u{"use strict";var EC=t0();r0.exports=Function.prototype.bind||EC});var s0=d((mF,n0)=>{"use strict";var wC=i0();n0.exports=wC.call(Function.call,Object.prototype.hasOwnProperty)});var a0=d((gF,o0)=>{o0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,"path/posix":">= 15.3","path/win32":">= 15.3",perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var eo=d((yF,u0)=>{"use strict";var SC=s0();function OC(t,e){for(var r=t.split("."),i=e.split(" "),n=i.length>1?i[0]:"=",s=(i.length>1?i[1]:i[0]).split("."),o=0;o<3;++o){var a=parseInt(r[o]||0,10),u=parseInt(s[o]||0,10);if(a!==u)return n==="<"?a="?a>=u:!1}return n===">="}function c0(t,e){var r=e.split(/ ?&& ?/);if(r.length===0)return!1;for(var i=0;i{var Mr=require("fs"),we=require("path"),_C=Du(),CC=qu(),AC=ju(),TC=eo(),LC=Mr.realpath&&typeof Mr.realpath.native=="function"?Mr.realpath.native:Mr.realpath,xC=function(e,r){Mr.stat(e,function(i,n){return i?i.code==="ENOENT"||i.code==="ENOTDIR"?r(null,!1):r(i):r(null,n.isFile()||n.isFIFO())})},NC=function(e,r){Mr.stat(e,function(i,n){return i?i.code==="ENOENT"||i.code==="ENOTDIR"?r(null,!1):r(i):r(null,n.isDirectory())})},IC=function(e,r){LC(e,function(i,n){i&&i.code!=="ENOENT"?r(i):r(null,i?e:n)})},Nn=function(e,r,i,n){i&&i.preserveSymlinks===!1?e(r,n):n(null,r)},PC=function(e,r,i){for(var n=CC(r,i,e),s=0;s{p0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var v0=d((EF,m0)=>{var DC=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function FC(t){for(var e=t.split(" "),r=e.length>1?e[0]:"=",i=(e.length>1?e[1]:e[0]).split("."),n=0;n<3;++n){var s=parseInt(DC[n]||0,10),o=parseInt(i[n]||0,10);if(s!==o)return r==="<"?s="?s>=o:!1}return r===">="}function g0(t){var e=t.split(/ ?&& ?/);if(e.length===0)return!1;for(var r=0;r{var qC=eo();b0.exports=function(e){return qC(e)}});var S0=d((SF,w0)=>{var jC=eo(),Br=require("fs"),Ze=require("path"),$C=Du(),MC=qu(),BC=ju(),UC=Br.realpathSync&&typeof Br.realpathSync.native=="function"?Br.realpathSync.native:Br.realpathSync,GC=function(e){try{var r=Br.statSync(e)}catch(i){if(i&&(i.code==="ENOENT"||i.code==="ENOTDIR"))return!1;throw i}return r.isFile()||r.isFIFO()},zC=function(e){try{var r=Br.statSync(e)}catch(i){if(i&&(i.code==="ENOENT"||i.code==="ENOTDIR"))return!1;throw i}return r.isDirectory()},HC=function(e){try{return UC(e)}catch(r){if(r.code!=="ENOENT")throw r}return e},In=function(e,r,i){return i&&i.preserveSymlinks===!1?e(r):r},WC=function(e,r,i){for(var n=MC(r,i,e),s=0;s{var to=h0();to.core=v0();to.isCore=E0();to.sync=S0();O0.exports=to});var _0=d((RF,R0)=>{R0.exports=VC;function VC(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` -`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,i=e+1;i{C0.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var N0=d((AF,T0)=>{var L0=ym(),YC=xu(),ro=Wm(),XC=Uu().isCore,KC=["dependencies","devDependencies","optionalDependencies"],ZC=_0(),Gu=require("url"),fr=A0(),CF=T0.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=ro.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(fr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,fr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):fr.script[e]&&!t.scripts[fr.script[e]]&&this.warn("typo",e,fr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(i){return!i||typeof i!="string"?(this.warn("nonStringBundleDependency",i),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(i)||(this.warn("nonDependencyBundleDependency",i),t.dependencies[i]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;rA(t,this.warn),tA(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(i){if(i in t){if(!t[i]||typeof t[i]!="object"){this.warn("nonObjectDependencies",i),delete t[i];return}Object.keys(t[i]).forEach(function(n){var s=t[i][n];typeof s!="string"&&(this.warn("nonStringDependency",n,JSON.stringify(s)),delete t[i][n]);var o=ro.fromUrl(t[i][n]);o&&(t[i][n]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!L0.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=L0.clean(t.version,r),!0},fixPeople:function(t){x0(t,QC),x0(t,eA)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),JC(t.name,r,e.allowLegacyCase),XC(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=ZC(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=ro.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:Gu.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{iA(t.bugs,this.warn);var i=t.bugs;t.bugs={},i.url&&(typeof i.url=="string"&&Gu.parse(i.url).protocol?t.bugs.url=i.url:this.warn("nonUrlBugsUrlField")),i.email&&(typeof i.email=="string"&&r.test(i.email)?t.bugs.email=i.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=ro.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;Gu.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):YC(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function nA(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function sA(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function JC(t,e,r){if(t.charAt(0)==="."||!(nA(t)||sA(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function x0(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function QC(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,i=r?" ("+r+")":"",n=t.email||t.mail,s=n?" <"+n+">":"";return e+s+i}function eA(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),i=t.match(/<([^>]+)>/),n={};return e&&e[0].trim()&&(n.name=e[0].trim()),i&&(n.email=i[1]),r&&(n.url=r[1]),n}function tA(t,e){var r=t.optionalDependencies;if(!!r){var i=t.dependencies||{};Object.keys(r).forEach(function(n){i[n]=r[n]}),t.dependencies=i}}function oA(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var i={};return t.filter(function(n){return typeof n=="string"}).forEach(function(n){n=n.trim().split(/(:?[@\s><=])/);var s=n.shift(),o=n.join("");o=o.trim(),o=o.replace(/^@/,""),i[s]=o}),i}function rA(t,e){KC.forEach(function(r){!t[r]||(t[r]=oA(t[r],r,e))})}function iA(t,e){!t||Object.keys(t).forEach(function(r){fr.bugs[r]&&(e("typo",r,fr.bugs[r],"bugs"),t[fr.bugs[r]]=t[r],delete t[r])})}});var P0=d((TF,I0)=>{I0.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var k0=d((LF,D0)=>{var F0=require("util"),zu=P0();D0.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return aA.apply(null,t);var r=zu[e]?zu[e]:e+": '%s'";return t.unshift(r),F0.format.apply(null,t)};function aA(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),F0.format(zu.typo,t,e)}});var Vu=d((xF,q0)=>{q0.exports=j0;var Hu=N0();j0.fixer=Hu;var uA=k0(),cA=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],lA=["dependencies","people","typos"],Wu=cA.map(function(t){return $0(t)+"Field"});Wu=Wu.concat(lA);function j0(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(i){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),Hu.warn=function(){e(uA.apply(null,arguments))},Wu.forEach(function(i){Hu["fix"+$0(i)](t,r)}),t._id=t.name+"@"+t.version}function $0(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var G0=d((NF,Yu)=>{"use strict";var{promisify:fA}=require("util"),M0=require("fs"),B0=require("path"),U0=em(),hA=fA(M0.readFile);Yu.exports=async t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=B0.resolve(t.cwd,"package.json"),r=U0(await hA(e,"utf8"));return t.normalize&&Vu()(r),r};Yu.exports.sync=t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=B0.resolve(t.cwd,"package.json"),r=U0(M0.readFileSync(e,"utf8"));return t.normalize&&Vu()(r),r}});var V0=d((IF,Xu)=>{"use strict";var z0=require("path"),H0=zp(),W0=G0();Xu.exports=async t=>{let e=await H0("package.json",t);if(!!e)return{packageJson:await W0({...t,cwd:z0.dirname(e)}),path:e}};Xu.exports.sync=t=>{let e=H0.sync("package.json",t);if(!!e)return{packageJson:W0.sync({...t,cwd:z0.dirname(e)}),path:e}}});var K0=d((PF,Ku)=>{"use strict";var pA=require("util"),Y0=!1,X0=(t=console.error)=>{Y0||(Y0=!0,process.on("unhandledRejection",e=>{e instanceof Error||(e=new Error(`Promise rejected with value: ${pA.inspect(e)}`)),t(e.stack),process.exit(1)}))};Ku.exports=X0;Ku.exports.default=X0});var Pn=d((DF,Z0)=>{var dA="2.0.0",mA=256,gA=Number.MAX_SAFE_INTEGER||9007199254740991,yA=16;Z0.exports={SEMVER_SPEC_VERSION:dA,MAX_LENGTH:mA,MAX_SAFE_INTEGER:gA,MAX_SAFE_COMPONENT_LENGTH:yA}});var Dn=d((FF,J0)=>{var vA=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};J0.exports=vA});var Ur=d((hr,Q0)=>{var{MAX_SAFE_COMPONENT_LENGTH:Zu}=Pn(),bA=Dn();hr=Q0.exports={};var EA=hr.re=[],L=hr.src=[],x=hr.t={},wA=0,U=(t,e,r)=>{let i=wA++;bA(i,e),x[t]=i,L[i]=e,EA[i]=new RegExp(e,r?"g":void 0)};U("NUMERICIDENTIFIER","0|[1-9]\\d*");U("NUMERICIDENTIFIERLOOSE","[0-9]+");U("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");U("MAINVERSION",`(${L[x.NUMERICIDENTIFIER]})\\.(${L[x.NUMERICIDENTIFIER]})\\.(${L[x.NUMERICIDENTIFIER]})`);U("MAINVERSIONLOOSE",`(${L[x.NUMERICIDENTIFIERLOOSE]})\\.(${L[x.NUMERICIDENTIFIERLOOSE]})\\.(${L[x.NUMERICIDENTIFIERLOOSE]})`);U("PRERELEASEIDENTIFIER",`(?:${L[x.NUMERICIDENTIFIER]}|${L[x.NONNUMERICIDENTIFIER]})`);U("PRERELEASEIDENTIFIERLOOSE",`(?:${L[x.NUMERICIDENTIFIERLOOSE]}|${L[x.NONNUMERICIDENTIFIER]})`);U("PRERELEASE",`(?:-(${L[x.PRERELEASEIDENTIFIER]}(?:\\.${L[x.PRERELEASEIDENTIFIER]})*))`);U("PRERELEASELOOSE",`(?:-?(${L[x.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${L[x.PRERELEASEIDENTIFIERLOOSE]})*))`);U("BUILDIDENTIFIER","[0-9A-Za-z-]+");U("BUILD",`(?:\\+(${L[x.BUILDIDENTIFIER]}(?:\\.${L[x.BUILDIDENTIFIER]})*))`);U("FULLPLAIN",`v?${L[x.MAINVERSION]}${L[x.PRERELEASE]}?${L[x.BUILD]}?`);U("FULL",`^${L[x.FULLPLAIN]}$`);U("LOOSEPLAIN",`[v=\\s]*${L[x.MAINVERSIONLOOSE]}${L[x.PRERELEASELOOSE]}?${L[x.BUILD]}?`);U("LOOSE",`^${L[x.LOOSEPLAIN]}$`);U("GTLT","((?:<|>)?=?)");U("XRANGEIDENTIFIERLOOSE",`${L[x.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);U("XRANGEIDENTIFIER",`${L[x.NUMERICIDENTIFIER]}|x|X|\\*`);U("XRANGEPLAIN",`[v=\\s]*(${L[x.XRANGEIDENTIFIER]})(?:\\.(${L[x.XRANGEIDENTIFIER]})(?:\\.(${L[x.XRANGEIDENTIFIER]})(?:${L[x.PRERELEASE]})?${L[x.BUILD]}?)?)?`);U("XRANGEPLAINLOOSE",`[v=\\s]*(${L[x.XRANGEIDENTIFIERLOOSE]})(?:\\.(${L[x.XRANGEIDENTIFIERLOOSE]})(?:\\.(${L[x.XRANGEIDENTIFIERLOOSE]})(?:${L[x.PRERELEASELOOSE]})?${L[x.BUILD]}?)?)?`);U("XRANGE",`^${L[x.GTLT]}\\s*${L[x.XRANGEPLAIN]}$`);U("XRANGELOOSE",`^${L[x.GTLT]}\\s*${L[x.XRANGEPLAINLOOSE]}$`);U("COERCE",`(^|[^\\d])(\\d{1,${Zu}})(?:\\.(\\d{1,${Zu}}))?(?:\\.(\\d{1,${Zu}}))?(?:$|[^\\d])`);U("COERCERTL",L[x.COERCE],!0);U("LONETILDE","(?:~>?)");U("TILDETRIM",`(\\s*)${L[x.LONETILDE]}\\s+`,!0);hr.tildeTrimReplace="$1~";U("TILDE",`^${L[x.LONETILDE]}${L[x.XRANGEPLAIN]}$`);U("TILDELOOSE",`^${L[x.LONETILDE]}${L[x.XRANGEPLAINLOOSE]}$`);U("LONECARET","(?:\\^)");U("CARETTRIM",`(\\s*)${L[x.LONECARET]}\\s+`,!0);hr.caretTrimReplace="$1^";U("CARET",`^${L[x.LONECARET]}${L[x.XRANGEPLAIN]}$`);U("CARETLOOSE",`^${L[x.LONECARET]}${L[x.XRANGEPLAINLOOSE]}$`);U("COMPARATORLOOSE",`^${L[x.GTLT]}\\s*(${L[x.LOOSEPLAIN]})$|^$`);U("COMPARATOR",`^${L[x.GTLT]}\\s*(${L[x.FULLPLAIN]})$|^$`);U("COMPARATORTRIM",`(\\s*)${L[x.GTLT]}\\s*(${L[x.LOOSEPLAIN]}|${L[x.XRANGEPLAIN]})`,!0);hr.comparatorTrimReplace="$1$2$3";U("HYPHENRANGE",`^\\s*(${L[x.XRANGEPLAIN]})\\s+-\\s+(${L[x.XRANGEPLAIN]})\\s*$`);U("HYPHENRANGELOOSE",`^\\s*(${L[x.XRANGEPLAINLOOSE]})\\s+-\\s+(${L[x.XRANGEPLAINLOOSE]})\\s*$`);U("STAR","(<|>)?=?\\s*\\*");U("GTE0","^\\s*>=\\s*0.0.0\\s*$");U("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Fn=d((kF,eg)=>{var SA=["includePrerelease","loose","rtl"],OA=t=>t?typeof t!="object"?{loose:!0}:SA.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};eg.exports=OA});var io=d((qF,tg)=>{var rg=/^[0-9]+$/,ig=(t,e)=>{let r=rg.test(t),i=rg.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tig(e,t);tg.exports={compareIdentifiers:ig,rcompareIdentifiers:RA}});var Pe=d((jF,ng)=>{var no=Dn(),{MAX_LENGTH:sg,MAX_SAFE_INTEGER:so}=Pn(),{re:og,t:ag}=Ur(),_A=Fn(),{compareIdentifiers:kn}=io(),ct=class{constructor(e,r){if(r=_A(r),e instanceof ct){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>sg)throw new TypeError(`version is longer than ${sg} characters`);no("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?og[ag.LOOSE]:og[ag.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>so||this.major<0)throw new TypeError("Invalid major version");if(this.minor>so||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>so||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};ng.exports=ct});var Gr=d(($F,ug)=>{var{MAX_LENGTH:CA}=Pn(),{re:cg,t:lg}=Ur(),fg=Pe(),AA=Fn(),TA=(t,e)=>{if(e=AA(e),t instanceof fg)return t;if(typeof t!="string"||t.length>CA||!(e.loose?cg[lg.LOOSE]:cg[lg.FULL]).test(t))return null;try{return new fg(t,e)}catch(i){return null}};ug.exports=TA});var pg=d((MF,hg)=>{var LA=Gr(),xA=(t,e)=>{let r=LA(t,e);return r?r.version:null};hg.exports=xA});var mg=d((BF,dg)=>{var NA=Gr(),IA=(t,e)=>{let r=NA(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};dg.exports=IA});var yg=d((UF,gg)=>{var PA=Pe(),DA=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new PA(t,r).inc(e,i).version}catch(n){return null}};gg.exports=DA});var lt=d((GF,vg)=>{var bg=Pe(),FA=(t,e,r)=>new bg(t,r).compare(new bg(e,r));vg.exports=FA});var oo=d((zF,Eg)=>{var kA=lt(),qA=(t,e,r)=>kA(t,e,r)===0;Eg.exports=qA});var Og=d((HF,wg)=>{var Sg=Gr(),jA=oo(),$A=(t,e)=>{if(jA(t,e))return null;{let r=Sg(t),i=Sg(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};wg.exports=$A});var _g=d((WF,Rg)=>{var MA=Pe(),BA=(t,e)=>new MA(t,e).major;Rg.exports=BA});var Ag=d((VF,Cg)=>{var UA=Pe(),GA=(t,e)=>new UA(t,e).minor;Cg.exports=GA});var Lg=d((YF,Tg)=>{var zA=Pe(),HA=(t,e)=>new zA(t,e).patch;Tg.exports=HA});var Ng=d((XF,xg)=>{var WA=Gr(),VA=(t,e)=>{let r=WA(t,e);return r&&r.prerelease.length?r.prerelease:null};xg.exports=VA});var Pg=d((KF,Ig)=>{var YA=lt(),XA=(t,e,r)=>YA(e,t,r);Ig.exports=XA});var Fg=d((ZF,Dg)=>{var KA=lt(),ZA=(t,e)=>KA(t,e,!0);Dg.exports=ZA});var ao=d((JF,kg)=>{var qg=Pe(),JA=(t,e,r)=>{let i=new qg(t,r),n=new qg(e,r);return i.compare(n)||i.compareBuild(n)};kg.exports=JA});var $g=d((QF,jg)=>{var QA=ao(),eT=(t,e)=>t.sort((r,i)=>QA(r,i,e));jg.exports=eT});var Bg=d((ek,Mg)=>{var tT=ao(),rT=(t,e)=>t.sort((r,i)=>tT(i,r,e));Mg.exports=rT});var qn=d((tk,Ug)=>{var iT=lt(),nT=(t,e,r)=>iT(t,e,r)>0;Ug.exports=nT});var uo=d((rk,Gg)=>{var sT=lt(),oT=(t,e,r)=>sT(t,e,r)<0;Gg.exports=oT});var Ju=d((ik,zg)=>{var aT=lt(),uT=(t,e,r)=>aT(t,e,r)!==0;zg.exports=uT});var co=d((nk,Hg)=>{var cT=lt(),lT=(t,e,r)=>cT(t,e,r)>=0;Hg.exports=lT});var lo=d((sk,Wg)=>{var fT=lt(),hT=(t,e,r)=>fT(t,e,r)<=0;Wg.exports=hT});var Qu=d((ok,Vg)=>{var pT=oo(),dT=Ju(),mT=qn(),gT=co(),yT=uo(),vT=lo(),bT=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return pT(t,r,i);case"!=":return dT(t,r,i);case">":return mT(t,r,i);case">=":return gT(t,r,i);case"<":return yT(t,r,i);case"<=":return vT(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};Vg.exports=bT});var Xg=d((ak,Yg)=>{var ET=Pe(),wT=Gr(),{re:fo,t:ho}=Ur(),ST=(t,e)=>{if(t instanceof ET)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(fo[ho.COERCE]);else{let i;for(;(i=fo[ho.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),fo[ho.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;fo[ho.COERCERTL].lastIndex=-1}return r===null?null:wT(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};Yg.exports=ST});var Zg=d((uk,Kg)=>{"use strict";Kg.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var ec=d((ck,Jg)=>{"use strict";Jg.exports=Y;Y.Node=zr;Y.create=Y;function Y(t){var e=this;if(e instanceof Y||(e=new Y),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Y.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Y.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Y.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Y.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Y;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Y.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var CT=ec(),Hr=Symbol("max"),Gt=Symbol("length"),Li=Symbol("lengthCalculator"),jn=Symbol("allowStale"),Wr=Symbol("maxAge"),zt=Symbol("dispose"),ey=Symbol("noDisposeOnSet"),Se=Symbol("lruList"),Rt=Symbol("cache"),ty=Symbol("updateAgeOnGet"),tc=()=>1,ry=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Hr]=e.max||Infinity,i=e.length||tc;if(this[Li]=typeof i!="function"?tc:i,this[jn]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Wr]=e.maxAge||0,this[zt]=e.dispose,this[ey]=e.noDisposeOnSet||!1,this[ty]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Hr]=e||Infinity,$n(this)}get max(){return this[Hr]}set allowStale(e){this[jn]=!!e}get allowStale(){return this[jn]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Wr]=e,$n(this)}get maxAge(){return this[Wr]}set lengthCalculator(e){typeof e!="function"&&(e=tc),e!==this[Li]&&(this[Li]=e,this[Gt]=0,this[Se].forEach(r=>{r.length=this[Li](r.value,r.key),this[Gt]+=r.length})),$n(this)}get lengthCalculator(){return this[Li]}get length(){return this[Gt]}get itemCount(){return this[Se].length}rforEach(e,r){r=r||this;for(let i=this[Se].tail;i!==null;){let n=i.prev;ny(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Se].head;i!==null;){let n=i.next;ny(this,e,i,r),i=n}}keys(){return this[Se].toArray().map(e=>e.key)}values(){return this[Se].toArray().map(e=>e.value)}reset(){this[zt]&&this[Se]&&this[Se].length&&this[Se].forEach(e=>this[zt](e.key,e.value)),this[Rt]=new Map,this[Se]=new CT,this[Gt]=0}dump(){return this[Se].map(e=>po(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Se]}set(e,r,i){if(i=i||this[Wr],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Li](r,e);if(this[Rt].has(e)){if(s>this[Hr])return xi(this,this[Rt].get(e)),!1;let u=this[Rt].get(e).value;return this[zt]&&(this[ey]||this[zt](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[Gt]+=s-u.length,u.length=s,this.get(e),$n(this),!0}let o=new iy(e,r,s,n,i);return o.length>this[Hr]?(this[zt]&&this[zt](e,r),!1):(this[Gt]+=o.length,this[Se].unshift(o),this[Rt].set(e,this[Se].head),$n(this),!0)}has(e){if(!this[Rt].has(e))return!1;let r=this[Rt].get(e).value;return!po(this,r)}get(e){return rc(this,e,!0)}peek(e){return rc(this,e,!1)}pop(){let e=this[Se].tail;return e?(xi(this,e),e.value):null}del(e){xi(this,this[Rt].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Rt].forEach((e,r)=>rc(this,r,!1))}},rc=(t,e,r)=>{let i=t[Rt].get(e);if(i){let n=i.value;if(po(t,n)){if(xi(t,i),!t[jn])return}else r&&(t[ty]&&(i.value.now=Date.now()),t[Se].unshiftNode(i));return n.value}},po=(t,e)=>{if(!e||!e.maxAge&&!t[Wr])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Wr]&&r>t[Wr]},$n=t=>{if(t[Gt]>t[Hr])for(let e=t[Se].tail;t[Gt]>t[Hr]&&e!==null;){let r=e.prev;xi(t,e),e=r}},xi=(t,e)=>{if(e){let r=e.value;t[zt]&&t[zt](r.key,r.value),t[Gt]-=r.length,t[Rt].delete(r.key),t[Se].removeNode(e)}},iy=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},ny=(t,e,r,i)=>{let n=r.value;po(t,n)&&(xi(t,r),t[jn]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};Qg.exports=ry});var ft=d((fk,sy)=>{var Ni=class{constructor(e,r){if(r=AT(r),e instanceof Ni)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new Ni(e.raw,r);if(e instanceof nc)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!ay(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&IT(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=oy.get(i);if(n)return n;let s=this.options.loose,o=s?De[xe.HYPHENRANGELOOSE]:De[xe.HYPHENRANGE];e=e.replace(o,FT(this.options.includePrerelease)),pe("hyphen replace",e),e=e.replace(De[xe.COMPARATORTRIM],LT),pe("comparator trim",e,De[xe.COMPARATORTRIM]),e=e.replace(De[xe.TILDETRIM],xT),e=e.replace(De[xe.CARETTRIM],NT),e=e.split(/\s+/).join(" ");let a=s?De[xe.COMPARATORLOOSE]:De[xe.COMPARATOR],u=e.split(" ").map(h=>PT(h,this.options)).join(" ").split(/\s+/).map(h=>DT(h,this.options)).filter(this.options.loose?h=>!!h.match(a):()=>!0).map(h=>new nc(h,this.options)),c=u.length,l=new Map;for(let h of u){if(ay(h))return[h];l.set(h.value,h)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return oy.set(i,f),f}intersects(e,r){if(!(e instanceof Ni))throw new TypeError("a Range is required");return this.set.some(i=>uy(i,r)&&e.set.some(n=>uy(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new TT(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",IT=t=>t.value==="",uy=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},PT=(t,e)=>(pe("comp",t,e),t=$T(t,e),pe("caret",t),t=jT(t,e),pe("tildes",t),t=MT(t,e),pe("xrange",t),t=BT(t,e),pe("stars",t),t),Ue=t=>!t||t.toLowerCase()==="x"||t==="*",jT=(t,e)=>t.trim().split(/\s+/).map(r=>UT(r,e)).join(" "),UT=(t,e)=>{let r=e.loose?De[xe.TILDELOOSE]:De[xe.TILDE];return t.replace(r,(i,n,s,o,a)=>{pe("tilde",t,i,n,s,o,a);let u;return Ue(n)?u="":Ue(s)?u=`>=${n}.0.0 <${+n+1}.0.0-0`:Ue(o)?u=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(pe("replaceTilde pr",a),u=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):u=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,pe("tilde return",u),u})},$T=(t,e)=>t.trim().split(/\s+/).map(r=>GT(r,e)).join(" "),GT=(t,e)=>{pe("caret",t,e);let r=e.loose?De[xe.CARETLOOSE]:De[xe.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,u)=>{pe("caret",t,n,s,o,a,u);let c;return Ue(s)?c="":Ue(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ue(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:u?(pe("replaceCaret pr",u),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${u} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${u} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${u} <${+s+1}.0.0-0`):(pe("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),pe("caret return",c),c})},MT=(t,e)=>(pe("replaceXRanges",t,e),t.split(/\s+/).map(r=>zT(r,e)).join(" ")),zT=(t,e)=>{t=t.trim();let r=e.loose?De[xe.XRANGELOOSE]:De[xe.XRANGE];return t.replace(r,(i,n,s,o,a,u)=>{pe("xRange",t,i,n,s,o,a,u);let c=Ue(s),l=c||Ue(o),f=l||Ue(a),h=f;return n==="="&&h&&(n=""),u=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&h?(l&&(o=0),a=0,n===">"?(n=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",l?s=+s+1:o=+o+1),n==="<"&&(u="-0"),i=`${n+s}.${o}.${a}${u}`):l?i=`>=${s}.0.0${u} <${+s+1}.0.0-0`:f&&(i=`>=${s}.${o}.0${u} <${s}.${+o+1}.0-0`),pe("xRange return",i),i})},BT=(t,e)=>(pe("replaceStars",t,e),t.trim().replace(De[xe.STAR],"")),DT=(t,e)=>(pe("replaceGTE0",t,e),t.trim().replace(De[e.includePrerelease?xe.GTE0PRE:xe.GTE0],"")),FT=t=>(e,r,i,n,s,o,a,u,c,l,f,h,y)=>(Ue(i)?r="":Ue(n)?r=`>=${i}.0.0${t?"-0":""}`:Ue(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ue(c)?u="":Ue(l)?u=`<${+c+1}.0.0-0`:Ue(f)?u=`<${c}.${+l+1}.0-0`:h?u=`<=${c}.${l}.${f}-${h}`:t?u=`<${c}.${l}.${+f+1}-0`:u=`<=${u}`,`${r} ${u}`.trim()),kT=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Mn=d((hk,cy)=>{var Bn=Symbol("SemVer ANY"),Un=class{static get ANY(){return Bn}constructor(e,r){if(r=HT(r),e instanceof Un){if(e.loose===!!r.loose)return e;e=e.value}oc("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Bn?this.value="":this.value=this.operator+this.semver.version,oc("comp",this)}parse(e){let r=this.options.loose?ly[fy.COMPARATORLOOSE]:ly[fy.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new hy(i[2],this.options.loose):this.semver=Bn}toString(){return this.value}test(e){if(oc("Comparator.test",e,this.options.loose),this.semver===Bn||e===Bn)return!0;if(typeof e=="string")try{e=new hy(e,this.options)}catch(r){return!1}return sc(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Un))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new py(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new py(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=sc(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),u=sc(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||u}};cy.exports=Un;var HT=Fn(),{re:ly,t:fy}=Ur(),sc=Qu(),oc=Dn(),hy=Pe(),py=ft()});var Gn=d((pk,dy)=>{var WT=ft(),VT=(t,e,r)=>{try{e=new WT(e,r)}catch(i){return!1}return e.test(t)};dy.exports=VT});var gy=d((dk,my)=>{var YT=ft(),XT=(t,e)=>new YT(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));my.exports=XT});var vy=d((mk,yy)=>{var KT=Pe(),ZT=ft(),JT=(t,e,r)=>{let i=null,n=null,s=null;try{s=new ZT(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new KT(i,r))}),i};yy.exports=JT});var Ey=d((gk,by)=>{var QT=Pe(),eL=ft(),tL=(t,e,r)=>{let i=null,n=null,s=null;try{s=new eL(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new QT(i,r))}),i};by.exports=tL});var Oy=d((yk,wy)=>{var ac=Pe(),rL=ft(),Sy=qn(),iL=(t,e)=>{t=new rL(t,e);let r=new ac("0.0.0");if(t.test(r)||(r=new ac("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new ac(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||Sy(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||Sy(r,s))&&(r=s)}return r&&t.test(r)?r:null};wy.exports=iL});var _y=d((vk,Ry)=>{var nL=ft(),sL=(t,e)=>{try{return new nL(t,e).range||"*"}catch(r){return null}};Ry.exports=sL});var mo=d((bk,Cy)=>{var oL=Pe(),Ay=Mn(),{ANY:aL}=Ay,uL=ft(),cL=Gn(),Ty=qn(),Ly=uo(),lL=lo(),fL=co(),hL=(t,e,r,i)=>{t=new oL(t,i),e=new uL(e,i);let n,s,o,a,u;switch(r){case">":n=Ty,s=lL,o=Ly,a=">",u=">=";break;case"<":n=Ly,s=fL,o=Ty,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(cL(t,e,i))return!1;for(let c=0;c{y.semver===aL&&(y=new Ay(">=0.0.0")),f=f||y,h=h||y,n(y.semver,f.semver,i)?f=y:o(y.semver,h.semver,i)&&(h=y)}),f.operator===a||f.operator===u||(!h.operator||h.operator===a)&&s(t,h.semver))return!1;if(h.operator===u&&o(t,h.semver))return!1}return!0};Cy.exports=hL});var Ny=d((Ek,xy)=>{var pL=mo(),dL=(t,e,r)=>pL(t,e,">",r);xy.exports=dL});var Py=d((wk,Iy)=>{var mL=mo(),gL=(t,e,r)=>mL(t,e,"<",r);Iy.exports=gL});var ky=d((Sk,Dy)=>{var Fy=ft(),yL=(t,e,r)=>(t=new Fy(t,r),e=new Fy(e,r),t.intersects(e));Dy.exports=yL});var jy=d((Ok,qy)=>{var vL=Gn(),bL=lt();qy.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((l,f)=>bL(l,f,r));for(let l of o)vL(l,e,r)?(s=l,n||(n=l)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[l,f]of i)l===f?a.push(l):!f&&l===o[0]?a.push("*"):f?l===o[0]?a.push(`<=${f}`):a.push(`${l} - ${f}`):a.push(`>=${l}`);let u=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return u.length{var My=ft(),{ANY:By}=Mn(),zn=Gn(),uc=lt(),wL=(t,e,r)=>{if(t===e)return!0;t=new My(t,r),e=new My(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=EL(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},EL=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===By)return e.length===1&&e[0].semver===By;let i=new Set,n,s;for(let f of t)f.operator===">"||f.operator===">="?n=Uy(n,f,r):f.operator==="<"||f.operator==="<="?s=Gy(s,f,r):i.add(f.semver);if(i.size>1)return null;let o;if(n&&s){if(o=uc(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let f of i){if(n&&!zn(f,String(n),r)||s&&!zn(f,String(s),r))return null;for(let h of e)if(!zn(f,String(h),r))return!1;return!0}let a,u,c,l;for(let f of e){if(l=l||f.operator===">"||f.operator===">=",c=c||f.operator==="<"||f.operator==="<=",n){if(f.operator===">"||f.operator===">="){if(a=Uy(n,f,r),a===f&&a!==n)return!1}else if(n.operator===">="&&!zn(n.semver,String(f),r))return!1}if(s){if(f.operator==="<"||f.operator==="<="){if(u=Gy(s,f,r),u===f&&u!==s)return!1}else if(s.operator==="<="&&!zn(s.semver,String(f),r))return!1}if(!f.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&l&&!n&&o!==0)},Uy=(t,e,r)=>{if(!t)return e;let i=uc(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},Gy=(t,e,r)=>{if(!t)return e;let i=uc(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};$y.exports=wL});var Wy=d((_k,Hy)=>{var cc=Ur();Hy.exports={re:cc.re,src:cc.src,tokens:cc.t,SEMVER_SPEC_VERSION:Pn().SEMVER_SPEC_VERSION,SemVer:Pe(),compareIdentifiers:io().compareIdentifiers,rcompareIdentifiers:io().rcompareIdentifiers,parse:Gr(),valid:pg(),clean:mg(),inc:yg(),diff:Og(),major:_g(),minor:Ag(),patch:Lg(),prerelease:Ng(),compare:lt(),rcompare:Pg(),compareLoose:Fg(),compareBuild:ao(),sort:$g(),rsort:Bg(),gt:qn(),lt:uo(),eq:oo(),neq:Ju(),gte:co(),lte:lo(),cmp:Qu(),coerce:Xg(),Comparator:Mn(),Range:ft(),satisfies:Gn(),toComparators:gy(),maxSatisfying:vy(),minSatisfying:Ey(),minVersion:Oy(),validRange:_y(),outside:mo(),gtr:Ny(),ltr:Py(),intersects:ky(),simplifyRange:jy(),subset:zy()}});var lc=d((Ck,Vy)=>{"use strict";var Hn=Vy.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^\/([^/]+)\/((?!.*(\/-\/|\/repository(\/[^/]+)?\/archive\.tar\.gz)).*?)(?:\.git|\/)?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Yy(t)}}},Xy={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Yy};Object.keys(Hn).forEach(function(t){Object.keys(Xy).forEach(function(e){Hn[t][e]||(Hn[t][e]=Xy[e])}),Hn[t].protocols_re=RegExp("^("+Hn[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Yy(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var Jy=d((Ak,Ky)=>{"use strict";var Zy=lc(),Ii=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;let i=Object.keys(r),n=i.length;for(;n--;)e[i[n]]=r[i[n]];return e};Ky.exports=Fe;function Fe(t,e,r,i,n,s,o){var a=this;a.type=t,Object.keys(Zy[t]).forEach(function(u){a[u]=Zy[t][u]}),a.user=e,a.auth=r,a.project=i,a.committish=n,a.default=s,a.opts=o||{}}Fe.prototype.hash=function(){return this.committish?"#"+this.committish:""};Fe.prototype._fill=function(t,e){if(!!t){var r=Ii({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Ii(Ii({},this.opts),e);var i=this;Object.keys(this).forEach(function(l){i[l]!=null&&r[l]==null&&(r[l]=i[l])});var n=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(h){return encodeURIComponent(h)}).join("/"):l!=="domain"&&(r[l]=encodeURIComponent(f))}),r["auth@"]=n?n+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Fe.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Fe.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Fe.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Ii({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Fe.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Fe.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Fe.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Fe.prototype.git=function(t){return this._fill(this.gittemplate,t)};Fe.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Fe.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Fe.prototype.tarball=function(t){var e=Ii({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Fe.prototype.file=function(t,e){return this._fill(this.filetemplate,Ii({path:t},e))};Fe.prototype.getDefaultRepresentation=function(){return this.default};Fe.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var ev=d((Tk,fc)=>{"use strict";var hc=require("url"),Qy=lc(),SL=fc.exports=Jy(),OL=ic(),pc=new OL({max:1e3}),RL={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function _L(t){return RL[t]||t.slice(0,-1)}var CL={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0};fc.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return pc.has(r)||pc.set(r,AL(t,e)),pc.get(r)}};function AL(t,e){if(!(t==null||t==="")){var r=LL(TL(t)?"github:"+t:t),i=xL(r),n=r.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/),s=Object.keys(Qy).map(function(o){try{var a=Qy[o],u=null;i.auth&&CL[i.protocol]&&(u=i.auth);var c=i.hash?decodeURIComponent(i.hash.substr(1)):null,l=null,f=null,h=null;if(n&&n[1]===o)l=n[2]&&decodeURIComponent(n[2]),f=decodeURIComponent(n[3].replace(/\.git$/,"")),h="shortcut";else{if(i.host&&i.host!==a.domain&&i.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(i.protocol)||!i.path)return;var y=a.pathmatch,m=i.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),h=_L(i.protocol)}return new SL(o,l,u,f,c,h,e)}catch(p){if(!(p instanceof URIError))throw p}}).filter(function(o){return o});if(s.length===1)return s[0]}}function TL(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function LL(t){var e=hc.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function xL(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=hc.parse(t);if(r.auth){let n=t.match(/[^@]+@[^:/]+/);if(n){var i=new hc.URL(n[0]);r.auth=i.username||"",i.password&&(r.auth+=":"+i.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var rv=d((Lk,tv)=>{tv.exports=NL;function NL(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` +`)}),Qd=(t,e,r)=>{typeof e=="string"&&(r=e,e=null);try{try{return JSON.parse(t,e)}catch(i){throw n_(t,e),i}}catch(i){i.message=i.message.replace(/\n/g,"");let n=i.message.match(/in JSON at position (\d+) while parsing/),s=new Jd(i);if(r&&(s.fileName=r),n&&n.length>0){let o=new s_(t),a=Number(n[1]),u=o.locationForIndex(a),c=o_(t,{start:{line:u.line+1,column:u.column+1}},{highlightCode:!0});s.codeFrame=c}throw s}};Qd.JSONError=Jd;Zd.exports=Qd});var ym=d(($,tm)=>{$=tm.exports=W;var te;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?te=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift("SEMVER"),console.log.apply(console,t)}:te=function(){};$.SEMVER_SPEC_VERSION="2.0.0";var cu=256,Us=Number.MAX_SAFE_INTEGER||9007199254740991,lu=16,se=$.re=[],R=$.src=[],H=0,Oi=H++;R[Oi]="0|[1-9]\\d*";var Ri=H++;R[Ri]="[0-9]+";var fu=H++;R[fu]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var rm=H++;R[rm]="("+R[Oi]+")\\.("+R[Oi]+")\\.("+R[Oi]+")";var im=H++;R[im]="("+R[Ri]+")\\.("+R[Ri]+")\\.("+R[Ri]+")";var hu=H++;R[hu]="(?:"+R[Oi]+"|"+R[fu]+")";var pu=H++;R[pu]="(?:"+R[Ri]+"|"+R[fu]+")";var du=H++;R[du]="(?:-("+R[hu]+"(?:\\."+R[hu]+")*))";var mu=H++;R[mu]="(?:-?("+R[pu]+"(?:\\."+R[pu]+")*))";var gu=H++;R[gu]="[0-9A-Za-z-]+";var _n=H++;R[_n]="(?:\\+("+R[gu]+"(?:\\."+R[gu]+")*))";var yu=H++,nm="v?"+R[rm]+R[du]+"?"+R[_n]+"?";R[yu]="^"+nm+"$";var vu="[v=\\s]*"+R[im]+R[mu]+"?"+R[_n]+"?",bu=H++;R[bu]="^"+vu+"$";var _i=H++;R[_i]="((?:<|>)?=?)";var Gs=H++;R[Gs]=R[Ri]+"|x|X|\\*";var zs=H++;R[zs]=R[Oi]+"|x|X|\\*";var qr=H++;R[qr]="[v=\\s]*("+R[zs]+")(?:\\.("+R[zs]+")(?:\\.("+R[zs]+")(?:"+R[du]+")?"+R[_n]+"?)?)?";var Ci=H++;R[Ci]="[v=\\s]*("+R[Gs]+")(?:\\.("+R[Gs]+")(?:\\.("+R[Gs]+")(?:"+R[mu]+")?"+R[_n]+"?)?)?";var sm=H++;R[sm]="^"+R[_i]+"\\s*"+R[qr]+"$";var om=H++;R[om]="^"+R[_i]+"\\s*"+R[Ci]+"$";var am=H++;R[am]="(?:^|[^\\d])(\\d{1,"+lu+"})(?:\\.(\\d{1,"+lu+"}))?(?:\\.(\\d{1,"+lu+"}))?(?:$|[^\\d])";var Hs=H++;R[Hs]="(?:~>?)";var Ws=H++;R[Ws]="(\\s*)"+R[Hs]+"\\s+";se[Ws]=new RegExp(R[Ws],"g");var a_="$1~",um=H++;R[um]="^"+R[Hs]+R[qr]+"$";var cm=H++;R[cm]="^"+R[Hs]+R[Ci]+"$";var Vs=H++;R[Vs]="(?:\\^)";var Ys=H++;R[Ys]="(\\s*)"+R[Vs]+"\\s+";se[Ys]=new RegExp(R[Ys],"g");var u_="$1^",lm=H++;R[lm]="^"+R[Vs]+R[qr]+"$";var fm=H++;R[fm]="^"+R[Vs]+R[Ci]+"$";var Eu=H++;R[Eu]="^"+R[_i]+"\\s*("+vu+")$|^$";var wu=H++;R[wu]="^"+R[_i]+"\\s*("+nm+")$|^$";var Cn=H++;R[Cn]="(\\s*)"+R[_i]+"\\s*("+vu+"|"+R[qr]+")";se[Cn]=new RegExp(R[Cn],"g");var c_="$1$2$3",hm=H++;R[hm]="^\\s*("+R[qr]+")\\s+-\\s+("+R[qr]+")\\s*$";var pm=H++;R[pm]="^\\s*("+R[Ci]+")\\s+-\\s+("+R[Ci]+")\\s*$";var dm=H++;R[dm]="(<|>)?=?\\s*\\*";for(var jr=0;jrcu)return null;var r=e.loose?se[bu]:se[yu];if(!r.test(t))return null;try{return new W(t,e)}catch(i){return null}}$.valid=l_;function l_(t,e){var r=$r(t,e);return r?r.version:null}$.clean=f_;function f_(t,e){var r=$r(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null}$.SemVer=W;function W(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof W){if(t.loose===e.loose)return t;t=t.version}else if(typeof t!="string")throw new TypeError("Invalid Version: "+t);if(t.length>cu)throw new TypeError("version is longer than "+cu+" characters");if(!(this instanceof W))return new W(t,e);te("SemVer",t,e),this.options=e,this.loose=!!e.loose;var r=t.trim().match(e.loose?se[bu]:se[yu]);if(!r)throw new TypeError("Invalid Version: "+t);if(this.raw=t,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Us||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Us||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Us||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(i){if(/^[0-9]+$/.test(i)){var n=+i;if(n>=0&&n=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: "+t)}return this.format(),this.raw=this.version,this};$.inc=h_;function h_(t,e,r,i){typeof r=="string"&&(i=r,r=void 0);try{return new W(t,r).inc(e,i).version}catch(n){return null}}$.diff=p_;function p_(t,e){if(Su(t,e))return null;var r=$r(t),i=$r(e),n="";if(r.prerelease.length||i.prerelease.length){n="pre";var s="prerelease"}for(var o in r)if((o==="major"||o==="minor"||o==="patch")&&r[o]!==i[o])return n+o;return s}$.compareIdentifiers=Ai;var mm=/^[0-9]+$/;function Ai(t,e){var r=mm.test(t),i=mm.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:t0}$.lt=Xs;function Xs(t,e,r){return Ut(t,e,r)<0}$.eq=Su;function Su(t,e,r){return Ut(t,e,r)===0}$.neq=gm;function gm(t,e,r){return Ut(t,e,r)!==0}$.gte=Ou;function Ou(t,e,r){return Ut(t,e,r)>=0}$.lte=Ru;function Ru(t,e,r){return Ut(t,e,r)<=0}$.cmp=Ks;function Ks(t,e,r,i){switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Su(t,r,i);case"!=":return gm(t,r,i);case">":return An(t,r,i);case">=":return Ou(t,r,i);case"<":return Xs(t,r,i);case"<=":return Ru(t,r,i);default:throw new TypeError("Invalid operator: "+e)}}$.Comparator=ct;function ct(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof ct){if(t.loose===!!e.loose)return t;t=t.value}if(!(this instanceof ct))return new ct(t,e);te("comparator",t,e),this.options=e,this.loose=!!e.loose,this.parse(t),this.semver===Tn?this.value="":this.value=this.operator+this.semver.version,te("comp",this)}var Tn={};ct.prototype.parse=function(t){var e=this.options.loose?se[Eu]:se[wu],r=t.match(e);if(!r)throw new TypeError("Invalid comparator: "+t);this.operator=r[1],this.operator==="="&&(this.operator=""),r[2]?this.semver=new W(r[2],this.options.loose):this.semver=Tn};ct.prototype.toString=function(){return this.value};ct.prototype.test=function(t){return te("Comparator.test",t,this.options.loose),this.semver===Tn?!0:(typeof t=="string"&&(t=new W(t,this.options)),Ks(t,this.operator,this.semver,this.options))};ct.prototype.intersects=function(t,e){if(!(t instanceof ct))throw new TypeError("a Comparator is required");(!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1});var r;if(this.operator==="")return r=new fe(t.value,e),Zs(this.value,r,e);if(t.operator==="")return r=new fe(this.value,e),Zs(t.semver,r,e);var i=(this.operator===">="||this.operator===">")&&(t.operator===">="||t.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(t.operator==="<="||t.operator==="<"),s=this.semver.version===t.semver.version,o=(this.operator===">="||this.operator==="<=")&&(t.operator===">="||t.operator==="<="),a=Ks(this.semver,"<",t.semver,e)&&(this.operator===">="||this.operator===">")&&(t.operator==="<="||t.operator==="<"),u=Ks(this.semver,">",t.semver,e)&&(this.operator==="<="||this.operator==="<")&&(t.operator===">="||t.operator===">");return i||n||s&&o||a||u};$.Range=fe;function fe(t,e){if((!e||typeof e!="object")&&(e={loose:!!e,includePrerelease:!1}),t instanceof fe)return t.loose===!!e.loose&&t.includePrerelease===!!e.includePrerelease?t:new fe(t.raw,e);if(t instanceof ct)return new fe(t.value,e);if(!(this instanceof fe))return new fe(t,e);if(this.options=e,this.loose=!!e.loose,this.includePrerelease=!!e.includePrerelease,this.raw=t,this.set=t.split(/\s*\|\|\s*/).map(function(r){return this.parseRange(r.trim())},this).filter(function(r){return r.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+t);this.format()}fe.prototype.format=function(){return this.range=this.set.map(function(t){return t.join(" ").trim()}).join("||").trim(),this.range};fe.prototype.toString=function(){return this.range};fe.prototype.parseRange=function(t){var e=this.options.loose;t=t.trim();var r=e?se[pm]:se[hm];t=t.replace(r,O_),te("hyphen replace",t),t=t.replace(se[Cn],c_),te("comparator trim",t,se[Cn]),t=t.replace(se[Ws],a_),t=t.replace(se[Ys],u_),t=t.split(/\s+/).join(" ");var i=e?se[Eu]:se[wu],n=t.split(" ").map(function(s){return S_(s,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(n=n.filter(function(s){return!!s.match(i)})),n=n.map(function(s){return new ct(s,this.options)},this),n};fe.prototype.intersects=function(t,e){if(!(t instanceof fe))throw new TypeError("a Range is required");return this.set.some(function(r){return r.every(function(i){return t.set.some(function(n){return n.every(function(s){return i.intersects(s,e)})})})})};$.toComparators=R_;function R_(t,e){return new fe(t,e).set.map(function(r){return r.map(function(i){return i.value}).join(" ").trim().split(" ")})}function S_(t,e){return te("comp",t,e),t=C_(t,e),te("caret",t),t=__(t,e),te("tildes",t),t=A_(t,e),te("xrange",t),t=T_(t,e),te("stars",t),t}function Be(t){return!t||t.toLowerCase()==="x"||t==="*"}function __(t,e){return t.trim().split(/\s+/).map(function(r){return L_(r,e)}).join(" ")}function L_(t,e){var r=e.loose?se[cm]:se[um];return t.replace(r,function(i,n,s,o,a){te("tilde",t,i,n,s,o,a);var u;return Be(n)?u="":Be(s)?u=">="+n+".0.0 <"+(+n+1)+".0.0":Be(o)?u=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":a?(te("replaceTilde pr",a),u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+(+s+1)+".0"):u=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",te("tilde return",u),u})}function C_(t,e){return t.trim().split(/\s+/).map(function(r){return x_(r,e)}).join(" ")}function x_(t,e){te("caret",t,e);var r=e.loose?se[fm]:se[lm];return t.replace(r,function(i,n,s,o,a){te("caret",t,i,n,s,o,a);var u;return Be(n)?u="":Be(s)?u=">="+n+".0.0 <"+(+n+1)+".0.0":Be(o)?n==="0"?u=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+".0 <"+(+n+1)+".0.0":a?(te("replaceCaret pr",a),n==="0"?s==="0"?u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+s+"."+(+o+1):u=">="+n+"."+s+"."+o+"-"+a+" <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+"."+o+"-"+a+" <"+(+n+1)+".0.0"):(te("no pr"),n==="0"?s==="0"?u=">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):u=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":u=">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),te("caret return",u),u})}function A_(t,e){return te("replaceXRanges",t,e),t.split(/\s+/).map(function(r){return N_(r,e)}).join(" ")}function N_(t,e){t=t.trim();var r=e.loose?se[om]:se[sm];return t.replace(r,function(i,n,s,o,a,u){te("xRange",t,i,n,s,o,a,u);var c=Be(s),l=c||Be(o),f=l||Be(a),h=f;return n==="="&&h&&(n=""),c?n===">"||n==="<"?i="<0.0.0":i="*":n&&h?(l&&(o=0),a=0,n===">"?(n=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",l?s=+s+1:o=+o+1),i=n+s+"."+o+"."+a):l?i=">="+s+".0.0 <"+(+s+1)+".0.0":f&&(i=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),te("xRange return",i),i})}function T_(t,e){return te("replaceStars",t,e),t.trim().replace(se[dm],"")}function O_(t,e,r,i,n,s,o,a,u,c,l,f,h){return Be(r)?e="":Be(i)?e=">="+r+".0.0":Be(n)?e=">="+r+"."+i+".0":e=">="+e,Be(u)?a="":Be(c)?a="<"+(+u+1)+".0.0":Be(l)?a="<"+u+"."+(+c+1)+".0":f?a="<="+u+"."+c+"."+l+"-"+f:a="<="+a,(e+" "+a).trim()}fe.prototype.test=function(t){if(!t)return!1;typeof t=="string"&&(t=new W(t,this.options));for(var e=0;e0){var n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}$.satisfies=Zs;function Zs(t,e,r){try{e=new fe(e,r)}catch(i){return!1}return e.test(t)}$.maxSatisfying=P_;function P_(t,e,r){var i=null,n=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new W(i,r))}),i}$.minSatisfying=D_;function D_(t,e,r){var i=null,n=null;try{var s=new fe(e,r)}catch(o){return null}return t.forEach(function(o){s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new W(i,r))}),i}$.minVersion=F_;function F_(t,e){t=new fe(t,e);var r=new W("0.0.0");if(t.test(r)||(r=new W("0.0.0-0"),t.test(r)))return r;r=null;for(var i=0;i":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!r||An(r,o))&&(r=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+s.operator)}})}return r&&t.test(r)?r:null}$.validRange=k_;function k_(t,e){try{return new fe(t,e).range||"*"}catch(r){return null}}$.ltr=q_;function q_(t,e,r){return _u(t,e,"<",r)}$.gtr=j_;function j_(t,e,r){return _u(t,e,">",r)}$.outside=_u;function _u(t,e,r,i){t=new W(t,i),e=new fe(e,i);var n,s,o,a,u;switch(r){case">":n=An,s=Ru,o=Xs,a=">",u=">=";break;case"<":n=Xs,s=Ou,o=An,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Zs(t,e,i))return!1;for(var c=0;c=0.0.0")),f=f||y,h=h||y,n(y.semver,f.semver,i)?f=y:o(y.semver,h.semver,i)&&(h=y)}),f.operator===a||f.operator===u||(!h.operator||h.operator===a)&&s(t,h.semver))return!1;if(h.operator===u&&o(t,h.semver))return!1}return!0}$.prerelease=$_;function $_(t,e){var r=$r(t,e);return r&&r.prerelease.length?r.prerelease:null}$.intersects=M_;function M_(t,e,r){return t=new fe(t,r),e=new fe(e,r),t.intersects(e)}$.coerce=B_;function B_(t){if(t instanceof W)return t;if(typeof t!="string")return null;var e=t.match(se[am]);return e==null?null:$r(e[1]+"."+(e[2]||"0")+"."+(e[3]||"0"))}});var Cu=d((J5,vm)=>{vm.exports=["0BSD","AAL","ADSL","AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0","AGPL-1.0-only","AGPL-1.0-or-later","AGPL-3.0-only","AGPL-3.0-or-later","AMDPLPA","AML","AMPAS","ANTLR-PD","ANTLR-PD-fallback","APAFML","APL-1.0","APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0","Abstyles","Adobe-2006","Adobe-Glyph","Afmparse","Aladdin","Apache-1.0","Apache-1.1","Apache-2.0","Artistic-1.0","Artistic-1.0-Perl","Artistic-1.0-cl8","Artistic-2.0","BSD-1-Clause","BSD-2-Clause","BSD-2-Clause-Patent","BSD-2-Clause-Views","BSD-3-Clause","BSD-3-Clause-Attribution","BSD-3-Clause-Clear","BSD-3-Clause-LBNL","BSD-3-Clause-No-Nuclear-License","BSD-3-Clause-No-Nuclear-License-2014","BSD-3-Clause-No-Nuclear-Warranty","BSD-3-Clause-Open-MPI","BSD-4-Clause","BSD-4-Clause-UC","BSD-Protection","BSD-Source-Code","BSL-1.0","BUSL-1.1","Bahyph","Barr","Beerware","BitTorrent-1.0","BitTorrent-1.1","BlueOak-1.0.0","Borceux","CAL-1.0","CAL-1.0-Combined-Work-Exception","CATOSL-1.1","CC-BY-1.0","CC-BY-2.0","CC-BY-2.5","CC-BY-3.0","CC-BY-3.0-AT","CC-BY-3.0-US","CC-BY-4.0","CC-BY-NC-1.0","CC-BY-NC-2.0","CC-BY-NC-2.5","CC-BY-NC-3.0","CC-BY-NC-4.0","CC-BY-NC-ND-1.0","CC-BY-NC-ND-2.0","CC-BY-NC-ND-2.5","CC-BY-NC-ND-3.0","CC-BY-NC-ND-3.0-IGO","CC-BY-NC-ND-4.0","CC-BY-NC-SA-1.0","CC-BY-NC-SA-2.0","CC-BY-NC-SA-2.5","CC-BY-NC-SA-3.0","CC-BY-NC-SA-4.0","CC-BY-ND-1.0","CC-BY-ND-2.0","CC-BY-ND-2.5","CC-BY-ND-3.0","CC-BY-ND-4.0","CC-BY-SA-1.0","CC-BY-SA-2.0","CC-BY-SA-2.0-UK","CC-BY-SA-2.5","CC-BY-SA-3.0","CC-BY-SA-3.0-AT","CC-BY-SA-4.0","CC-PDDC","CC0-1.0","CDDL-1.0","CDDL-1.1","CDLA-Permissive-1.0","CDLA-Sharing-1.0","CECILL-1.0","CECILL-1.1","CECILL-2.0","CECILL-2.1","CECILL-B","CECILL-C","CERN-OHL-1.1","CERN-OHL-1.2","CERN-OHL-P-2.0","CERN-OHL-S-2.0","CERN-OHL-W-2.0","CNRI-Jython","CNRI-Python","CNRI-Python-GPL-Compatible","CPAL-1.0","CPL-1.0","CPOL-1.02","CUA-OPL-1.0","Caldera","ClArtistic","Condor-1.1","Crossword","CrystalStacker","Cube","D-FSL-1.0","DOC","DSDP","Dotseqn","ECL-1.0","ECL-2.0","EFL-1.0","EFL-2.0","EPICS","EPL-1.0","EPL-2.0","EUDatagrid","EUPL-1.0","EUPL-1.1","EUPL-1.2","Entessa","ErlPL-1.1","Eurosym","FSFAP","FSFUL","FSFULLR","FTL","Fair","Frameworx-1.0","FreeImage","GFDL-1.1-invariants-only","GFDL-1.1-invariants-or-later","GFDL-1.1-no-invariants-only","GFDL-1.1-no-invariants-or-later","GFDL-1.1-only","GFDL-1.1-or-later","GFDL-1.2-invariants-only","GFDL-1.2-invariants-or-later","GFDL-1.2-no-invariants-only","GFDL-1.2-no-invariants-or-later","GFDL-1.2-only","GFDL-1.2-or-later","GFDL-1.3-invariants-only","GFDL-1.3-invariants-or-later","GFDL-1.3-no-invariants-only","GFDL-1.3-no-invariants-or-later","GFDL-1.3-only","GFDL-1.3-or-later","GL2PS","GLWTPL","GPL-1.0-only","GPL-1.0-or-later","GPL-2.0-only","GPL-2.0-or-later","GPL-3.0-only","GPL-3.0-or-later","Giftware","Glide","Glulxe","HPND","HPND-sell-variant","HTMLTIDY","HaskellReport","Hippocratic-2.1","IBM-pibs","ICU","IJG","IPA","IPL-1.0","ISC","ImageMagick","Imlib2","Info-ZIP","Intel","Intel-ACPI","Interbase-1.0","JPNIC","JSON","JasPer-2.0","LAL-1.2","LAL-1.3","LGPL-2.0-only","LGPL-2.0-or-later","LGPL-2.1-only","LGPL-2.1-or-later","LGPL-3.0-only","LGPL-3.0-or-later","LGPLLR","LPL-1.0","LPL-1.02","LPPL-1.0","LPPL-1.1","LPPL-1.2","LPPL-1.3a","LPPL-1.3c","Latex2e","Leptonica","LiLiQ-P-1.1","LiLiQ-R-1.1","LiLiQ-Rplus-1.1","Libpng","Linux-OpenIB","MIT","MIT-0","MIT-CMU","MIT-advertising","MIT-enna","MIT-feh","MIT-open-group","MITNFA","MPL-1.0","MPL-1.1","MPL-2.0","MPL-2.0-no-copyleft-exception","MS-PL","MS-RL","MTLL","MakeIndex","MirOS","Motosoto","MulanPSL-1.0","MulanPSL-2.0","Multics","Mup","NASA-1.3","NBPL-1.0","NCGL-UK-2.0","NCSA","NGPL","NIST-PD","NIST-PD-fallback","NLOD-1.0","NLPL","NOSL","NPL-1.0","NPL-1.1","NPOSL-3.0","NRL","NTP","NTP-0","Naumen","Net-SNMP","NetCDF","Newsletr","Nokia","Noweb","O-UDA-1.0","OCCT-PL","OCLC-2.0","ODC-By-1.0","ODbL-1.0","OFL-1.0","OFL-1.0-RFN","OFL-1.0-no-RFN","OFL-1.1","OFL-1.1-RFN","OFL-1.1-no-RFN","OGC-1.0","OGL-Canada-2.0","OGL-UK-1.0","OGL-UK-2.0","OGL-UK-3.0","OGTSL","OLDAP-1.1","OLDAP-1.2","OLDAP-1.3","OLDAP-1.4","OLDAP-2.0","OLDAP-2.0.1","OLDAP-2.1","OLDAP-2.2","OLDAP-2.2.1","OLDAP-2.2.2","OLDAP-2.3","OLDAP-2.4","OLDAP-2.5","OLDAP-2.6","OLDAP-2.7","OLDAP-2.8","OML","OPL-1.0","OSET-PL-2.1","OSL-1.0","OSL-1.1","OSL-2.0","OSL-2.1","OSL-3.0","OpenSSL","PDDL-1.0","PHP-3.0","PHP-3.01","PSF-2.0","Parity-6.0.0","Parity-7.0.0","Plexus","PolyForm-Noncommercial-1.0.0","PolyForm-Small-Business-1.0.0","PostgreSQL","Python-2.0","QPL-1.0","Qhull","RHeCos-1.1","RPL-1.1","RPL-1.5","RPSL-1.0","RSA-MD","RSCPL","Rdisc","Ruby","SAX-PD","SCEA","SGI-B-1.0","SGI-B-1.1","SGI-B-2.0","SHL-0.5","SHL-0.51","SISSL","SISSL-1.2","SMLNJ","SMPPL","SNIA","SPL-1.0","SSH-OpenSSH","SSH-short","SSPL-1.0","SWL","Saxpath","Sendmail","Sendmail-8.23","SimPL-2.0","Sleepycat","Spencer-86","Spencer-94","Spencer-99","SugarCRM-1.1.3","TAPR-OHL-1.0","TCL","TCP-wrappers","TMate","TORQUE-1.1","TOSL","TU-Berlin-1.0","TU-Berlin-2.0","UCL-1.0","UPL-1.0","Unicode-DFS-2015","Unicode-DFS-2016","Unicode-TOU","Unlicense","VOSTROM","VSL-1.0","Vim","W3C","W3C-19980720","W3C-20150513","WTFPL","Watcom-1.0","Wsuipa","X11","XFree86-1.1","XSkat","Xerox","Xnet","YPL-1.0","YPL-1.1","ZPL-1.1","ZPL-2.0","ZPL-2.1","Zed","Zend-2.0","Zimbra-1.3","Zimbra-1.4","Zlib","blessing","bzip2-1.0.5","bzip2-1.0.6","copyleft-next-0.3.0","copyleft-next-0.3.1","curl","diffmark","dvipdfm","eGenix","etalab-2.0","gSOAP-1.3b","gnuplot","iMatix","libpng-2.0","libselinux-1.0","libtiff","mpich2","psfrag","psutils","xinetd","xpp","zlib-acknowledgement"]});var Em=d((Q5,bm)=>{bm.exports=["AGPL-1.0","AGPL-3.0","BSD-2-Clause-FreeBSD","BSD-2-Clause-NetBSD","GFDL-1.1","GFDL-1.2","GFDL-1.3","GPL-1.0","GPL-2.0","GPL-2.0-with-GCC-exception","GPL-2.0-with-autoconf-exception","GPL-2.0-with-bison-exception","GPL-2.0-with-classpath-exception","GPL-2.0-with-font-exception","GPL-3.0","GPL-3.0-with-GCC-exception","GPL-3.0-with-autoconf-exception","LGPL-2.0","LGPL-2.1","LGPL-3.0","Nunit","StandardML-NJ","eCos-2.0","wxWindows"]});var Sm=d((eF,wm)=>{wm.exports=["389-exception","Autoconf-exception-2.0","Autoconf-exception-3.0","Bison-exception-2.2","Bootloader-exception","Classpath-exception-2.0","CLISP-exception-2.0","DigiRule-FOSS-exception","eCos-exception-2.0","Fawkes-Runtime-exception","FLTK-exception","Font-exception-2.0","freertos-exception-2.0","GCC-exception-2.0","GCC-exception-3.1","gnu-javamail-exception","GPL-3.0-linking-exception","GPL-3.0-linking-source-exception","GPL-CC-1.0","i2p-gpl-java-exception","Libtool-exception","Linux-syscall-note","LLVM-exception","LZMA-exception","mif-exception","Nokia-Qt-exception-1.1","OCaml-LGPL-linking-exception","OCCT-exception-1.0","OpenJDK-assembly-exception-1.0","openvpn-openssl-exception","PS-or-PDF-font-exception-20170817","Qt-GPL-exception-1.0","Qt-LGPL-exception-1.1","Qwt-exception-1.0","Swift-exception","u-boot-exception-2.0","Universal-FOSS-exception-1.0","WxWindows-exception-3.1"]});var Rm=d((tF,Om)=>{"use strict";var U_=[].concat(Cu()).concat(Em()),G_=Sm();Om.exports=function(t){var e=0;function r(){return e1&&t[e-2]===" ")throw new Error("Space before `+`");return m&&{type:"OPERATOR",string:m}}function o(){return i(/[A-Za-z0-9-.]+/)}function a(){var m=o();if(!m)throw new Error("Expected idstring at offset "+e);return m}function u(){if(i("DocumentRef-")){var m=a();return{type:"DOCUMENTREF",string:m}}}function c(){if(i("LicenseRef-")){var m=a();return{type:"LICENSEREF",string:m}}}function l(){var m=e,p=o();if(U_.indexOf(p)!==-1)return{type:"LICENSE",string:p};if(G_.indexOf(p)!==-1)return{type:"EXCEPTION",string:p};e=m}function f(){return s()||u()||c()||l()}for(var h=[];r()&&(n(),!!r());){var y=f();if(!y)throw new Error("Unexpected `"+t[e]+"` at offset "+e);h.push(y)}return h}});var Cm=d((rF,_m)=>{"use strict";_m.exports=function(t){var e=0;function r(){return e{"use strict";var z_=Rm(),H_=Cm();Am.exports=function(t){return H_(z_(t))}});var Fm=d((nF,Tm)=>{var W_=Au(),V_=Cu();function Js(t){try{return W_(t),!0}catch(e){return!1}}var Lm=[["APGL","AGPL"],["Gpl","GPL"],["GLP","GPL"],["APL","Apache"],["ISD","ISC"],["GLP","GPL"],["IST","ISC"],["Claude","Clause"],[" or later","+"],[" International",""],["GNU","GPL"],["GUN","GPL"],["+",""],["GNU GPL","GPL"],["GNU/GPL","GPL"],["GNU GLP","GPL"],["GNU General Public License","GPL"],["Gnu public license","GPL"],["GNU Public License","GPL"],["GNU GENERAL PUBLIC LICENSE","GPL"],["MTI","MIT"],["Mozilla Public License","MPL"],["Universal Permissive License","UPL"],["WTH","WTF"],["-License",""]],Y_=0,X_=1,xm=[function(t){return t.toUpperCase()},function(t){return t.trim()},function(t){return t.replace(/\./g,"")},function(t){return t.replace(/\s+/g,"")},function(t){return t.replace(/\s+/g,"-")},function(t){return t.replace("v","-")},function(t){return t.replace(/,?\s*(\d)/,"-$1")},function(t){return t.replace(/,?\s*(\d)/,"-$1.0")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2")},function(t){return t.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/,"-$2.0")},function(t){return t[0].toUpperCase()+t.slice(1)},function(t){return t.replace("/","-")},function(t){return t.replace(/\s*V\s*(\d)/,"-$1").replace(/(\d)$/,"$1.0")},function(t){return t.indexOf("3.0")!==-1?t+"-or-later":t+"-only"},function(t){return t+"only"},function(t){return t.replace(/(\d)$/,"-$1.0")},function(t){return t.replace(/(-| )?(\d)$/,"-$2-Clause")},function(t){return t.replace(/(-| )clause(-| )(\d)/,"-$3-Clause")},function(t){return t.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i,"BSD-3-Clause")},function(t){return t.replace(/\bSimplified(-| )?BSD((-| )License)?/i,"BSD-2-Clause")},function(t){return t.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i,"BSD-2-Clause-$1BSD")},function(t){return t.replace(/\bClear(-| )?BSD((-| )License)?/i,"BSD-3-Clause-Clear")},function(t){return t.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i,"BSD-4-Clause")},function(t){return"CC-"+t},function(t){return"CC-"+t+"-4.0"},function(t){return t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")},function(t){return"CC-"+t.replace("Attribution","BY").replace("NonCommercial","NC").replace("NoDerivatives","ND").replace(/ (\d)/,"-$1").replace(/ ?International/,"")+"-4.0"}],Tu=V_.map(function(t){var e=/^(.*)-\d+\.\d+$/.exec(t);return e?[e[0],e[1]]:[t,null]}).reduce(function(t,e){var r=e[1];return t[r]=t[r]||[],t[r].push(e[0]),t},{}),K_=Object.keys(Tu).map(function(e){return[e,Tu[e]]}).filter(function(e){return e[1].length===1&&e[0]!==null&&e[0]!=="APL"}).map(function(e){return[e[0],e[1][0]]});Tu=void 0;var Nm=[["UNLI","Unlicense"],["WTF","WTFPL"],["2 CLAUSE","BSD-2-Clause"],["2-CLAUSE","BSD-2-Clause"],["3 CLAUSE","BSD-3-Clause"],["3-CLAUSE","BSD-3-Clause"],["AFFERO","AGPL-3.0-or-later"],["AGPL","AGPL-3.0-or-later"],["APACHE","Apache-2.0"],["ARTISTIC","Artistic-2.0"],["Affero","AGPL-3.0-or-later"],["BEER","Beerware"],["BOOST","BSL-1.0"],["BSD","BSD-2-Clause"],["CDDL","CDDL-1.1"],["ECLIPSE","EPL-1.0"],["FUCK","WTFPL"],["GNU","GPL-3.0-or-later"],["LGPL","LGPL-3.0-or-later"],["GPLV1","GPL-1.0-only"],["GPL-1","GPL-1.0-only"],["GPLV2","GPL-2.0-only"],["GPL-2","GPL-2.0-only"],["GPL","GPL-3.0-or-later"],["MIT +NO-FALSE-ATTRIBS","MITNFA"],["MIT","MIT"],["MPL","MPL-2.0"],["X11","X11"],["ZLIB","Zlib"]].concat(K_),Z_=0,J_=1,Im=function(t){for(var e=0;e-1)return i[J_]}return null},Dm=function(t,e){for(var r=0;r-1){var s=t.replace(n,i[X_]),o=e(s);if(o!==null)return o}}return null};Tm.exports=function(t,e){e=e||{};var r=e.upgrade===void 0?!0:!!e.upgrade;function i(a){return r?Q_(a):a}var n=typeof t=="string"&&t.trim().length!==0;if(!n)throw Error("Invalid argument. Expected non-empty string.");if(t=t.trim(),Js(t))return i(t);var s=t.replace(/\+$/,"").trim();if(Js(s))return i(s);var o=Im(t);return o!==null||(o=Dm(t,function(a){return Js(a)?a:Im(a)}),o!==null)||(o=Pm(t),o!==null)||(o=Dm(t,Pm),o!==null)?i(o):null};function Q_(t){return["GPL-1.0","LGPL-1.0","AGPL-1.0","GPL-2.0","LGPL-2.0","AGPL-2.0","LGPL-2.1"].indexOf(t)!==-1?t+"-only":["GPL-1.0+","GPL-2.0+","GPL-3.0+","LGPL-2.0+","LGPL-2.1+","LGPL-3.0+","AGPL-1.0+","AGPL-3.0+"].indexOf(t)!==-1?t.replace(/\+$/,"-or-later"):["GPL-3.0","LGPL-3.0","AGPL-3.0"].indexOf(t)!==-1?t+"-or-later":t}});var xu=d((sF,km)=>{var eC=Au(),tC=Fm(),qm='license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN "',rC=/^SEE LICEN[CS]E IN (.+)$/;function jm(t,e){return e.slice(0,t.length)===t}function Lu(t){if(t.hasOwnProperty("license")){var e=t.license;return jm("LicenseRef",e)||jm("DocumentRef",e)}else return Lu(t.left)||Lu(t.right)}km.exports=function(t){var e;try{e=eC(t)}catch(s){var r;if(t==="UNLICENSED"||t==="UNLICENCED")return{validForOldPackages:!0,validForNewPackages:!0,unlicensed:!0};if(r=rC.exec(t))return{validForOldPackages:!0,validForNewPackages:!0,inFile:r[1]};var i={validForOldPackages:!1,validForNewPackages:!1,warnings:[qm]};if(t.trim().length!==0){var n=tC(t);n&&i.warnings.push('license is similar to the valid expression "'+n+'"')}return i}return Lu(e)?{validForNewPackages:!1,validForOldPackages:!1,spdx:!0,warnings:[qm]}:{validForNewPackages:!0,validForOldPackages:!0,spdx:!0}}});var Nu=d((oF,$m)=>{"use strict";var Ln=$m.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Mm(t)}}},Bm={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Mm};Object.keys(Ln).forEach(function(t){Object.keys(Bm).forEach(function(e){Ln[t][e]||(Ln[t][e]=Bm[e])}),Ln[t].protocols_re=RegExp("^("+Ln[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Mm(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var zm=d((aF,Um)=>{"use strict";var Gm=Nu(),Ti=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;for(var i=Object.keys(r),n=i.length;n--;)e[i[n]]=r[i[n]];return e};Um.exports=Ie;function Ie(t,e,r,i,n,s,o){var a=this;a.type=t,Object.keys(Gm[t]).forEach(function(u){a[u]=Gm[t][u]}),a.user=e,a.auth=r,a.project=i,a.committish=n,a.default=s,a.opts=o||{}}Ie.prototype.hash=function(){return this.committish?"#"+this.committish:""};Ie.prototype._fill=function(t,e){if(!!t){var r=Ti({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Ti(Ti({},this.opts),e);var i=this;Object.keys(this).forEach(function(l){i[l]!=null&&r[l]==null&&(r[l]=i[l])});var n=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(h){return encodeURIComponent(h)}).join("/"):r[l]=encodeURIComponent(f)}),r["auth@"]=n?n+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Ie.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Ie.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Ie.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Ti({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Ie.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Ie.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Ie.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Ie.prototype.git=function(t){return this._fill(this.gittemplate,t)};Ie.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Ie.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Ie.prototype.tarball=function(t){var e=Ti({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Ie.prototype.file=function(t,e){return this._fill(this.filetemplate,Ti({path:t},e))};Ie.prototype.getDefaultRepresentation=function(){return this.default};Ie.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var Wm=d((uF,Iu)=>{"use strict";var Qs=require("url"),Hm=Nu(),iC=Iu.exports=zm(),nC={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function sC(t){return nC[t]||t.slice(0,-1)}var oC={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0},Pu={};Iu.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return r in Pu||(Pu[r]=aC(t,e)),Pu[r]}};function aC(t,e){if(!(t==null||t==="")){var r=cC(uC(t)?"github:"+t:t),i=lC(r),n=r.match(new RegExp("^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)")),s=Object.keys(Hm).map(function(o){try{var a=Hm[o],u=null;i.auth&&oC[i.protocol]&&(u=i.auth);var c=i.hash?decodeURIComponent(i.hash.substr(1)):null,l=null,f=null,h=null;if(n&&n[1]===o)l=n[2]&&decodeURIComponent(n[2]),f=decodeURIComponent(n[3]),h="shortcut";else{if(i.host&&i.host!==a.domain&&i.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(i.protocol)||!i.path)return;var y=a.pathmatch,m=i.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),h=sC(i.protocol)}return new iC(o,l,u,f,c,h,e)}catch(p){if(!(p instanceof URIError))throw p}}).filter(function(o){return o});if(s.length===1)return s[0]}}function uC(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function cC(t){var e=Qs.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function lC(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=Qs.parse(t);if(r.auth&&typeof Qs.URL=="function"){var i=t.match(/[^@]+@[^:/]+/);if(i){var n=new Qs.URL(i[0]);r.auth=n.username||"",n.password&&(r.auth+=":"+n.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var Du=d((cF,Vm)=>{Vm.exports=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(r,i){return i};var e=new Error().stack;return Error.prepareStackTrace=t,e[2].getFileName()}});var Ym=d((lF,xn)=>{"use strict";var fC=process.platform==="win32",hC=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,pC=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,Fu={};function dC(t){var e=hC.exec(t),r=(e[1]||"")+(e[2]||""),i=e[3]||"",n=pC.exec(i),s=n[1],o=n[2],a=n[3];return[r,s,o,a]}Fu.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=dC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};var mC=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,ku={};function gC(t){return mC.exec(t).slice(1)}ku.parse=function(t){if(typeof t!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e=gC(t);if(!e||e.length!==4)throw new TypeError("Invalid path '"+t+"'");return e[1]=e[1]||"",e[2]=e[2]||"",e[3]=e[3]||"",{root:e[0],dir:e[0]+e[1].slice(0,-1),base:e[2],ext:e[3],name:e[2].slice(0,e[2].length-e[3].length)}};fC?xn.exports=Fu.parse:xn.exports=ku.parse;xn.exports.posix=ku.parse;xn.exports.win32=Fu.parse});var qu=d((fF,Xm)=>{var Km=require("path"),Zm=Km.parse||Ym(),Jm=function(e,r){var i="/";/^([A-Za-z]:)/.test(e)?i="":/^\\\\/.test(e)&&(i="\\\\");for(var n=[e],s=Zm(e);s.dir!==n[n.length-1];)n.push(s.dir),s=Zm(s.dir);return n.reduce(function(o,a){return o.concat(r.map(function(u){return Km.resolve(i,a,u)}))},[])};Xm.exports=function(e,r,i){var n=r&&r.moduleDirectory?[].concat(r.moduleDirectory):["node_modules"];if(r&&typeof r.paths=="function")return r.paths(i,e,function(){return Jm(e,n)},r);var s=Jm(e,n);return r&&r.paths?s.concat(r.paths):s}});var ju=d((hF,Qm)=>{Qm.exports=function(t,e){return e||{}}});var t0=d((pF,e0)=>{"use strict";var yC="Function.prototype.bind called on incompatible ",$u=Array.prototype.slice,vC=Object.prototype.toString,bC="[object Function]";e0.exports=function(e){var r=this;if(typeof r!="function"||vC.call(r)!==bC)throw new TypeError(yC+r);for(var i=$u.call(arguments,1),n,s=function(){if(this instanceof n){var l=r.apply(this,i.concat($u.call(arguments)));return Object(l)===l?l:this}else return r.apply(e,i.concat($u.call(arguments)))},o=Math.max(0,r.length-i.length),a=[],u=0;u{"use strict";var EC=t0();r0.exports=Function.prototype.bind||EC});var s0=d((mF,n0)=>{"use strict";var wC=i0();n0.exports=wC.call(Function.call,Object.prototype.hasOwnProperty)});var a0=d((gF,o0)=>{o0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,"path/posix":">= 15.3","path/win32":">= 15.3",perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var eo=d((yF,u0)=>{"use strict";var SC=s0();function OC(t,e){for(var r=t.split("."),i=e.split(" "),n=i.length>1?i[0]:"=",s=(i.length>1?i[1]:i[0]).split("."),o=0;o<3;++o){var a=parseInt(r[o]||0,10),u=parseInt(s[o]||0,10);if(a!==u)return n==="<"?a="?a>=u:!1}return n===">="}function c0(t,e){var r=e.split(/ ?&& ?/);if(r.length===0)return!1;for(var i=0;i{var Mr=require("fs"),we=require("path"),_C=Du(),CC=qu(),AC=ju(),TC=eo(),LC=Mr.realpath&&typeof Mr.realpath.native=="function"?Mr.realpath.native:Mr.realpath,xC=function(e,r){Mr.stat(e,function(i,n){return i?i.code==="ENOENT"||i.code==="ENOTDIR"?r(null,!1):r(i):r(null,n.isFile()||n.isFIFO())})},NC=function(e,r){Mr.stat(e,function(i,n){return i?i.code==="ENOENT"||i.code==="ENOTDIR"?r(null,!1):r(i):r(null,n.isDirectory())})},IC=function(e,r){LC(e,function(i,n){i&&i.code!=="ENOENT"?r(i):r(null,i?e:n)})},Nn=function(e,r,i,n){i&&i.preserveSymlinks===!1?e(r,n):n(null,r)},PC=function(e,r,i){for(var n=CC(r,i,e),s=0;s{p0.exports={assert:!0,"assert/strict":">= 15",async_hooks:">= 8",buffer_ieee754:"< 0.9.7",buffer:!0,child_process:!0,cluster:!0,console:!0,constants:!0,crypto:!0,_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,diagnostics_channel:">= 15.1",dns:!0,"dns/promises":">= 15",domain:">= 0.7.12",events:!0,freelist:"< 6",fs:!0,"fs/promises":[">= 10 && < 10.1",">= 14"],_http_agent:">= 0.11.1",_http_client:">= 0.11.1",_http_common:">= 0.11.1",_http_incoming:">= 0.11.1",_http_outgoing:">= 0.11.1",_http_server:">= 0.11.1",http:!0,http2:">= 8.8",https:!0,inspector:">= 8.0.0",_linklist:"< 8",module:!0,net:!0,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12",os:!0,path:!0,perf_hooks:">= 8.5",process:">= 1",punycode:!0,querystring:!0,readline:!0,repl:!0,smalloc:">= 0.11.5 && < 3",_stream_duplex:">= 0.9.4",_stream_transform:">= 0.9.4",_stream_wrap:">= 1.4.1",_stream_passthrough:">= 0.9.4",_stream_readable:">= 0.9.4",_stream_writable:">= 0.9.4",stream:!0,"stream/promises":">= 15",string_decoder:!0,sys:[">= 0.6 && < 0.7",">= 0.8"],timers:!0,"timers/promises":">= 15",_tls_common:">= 0.11.13",_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3",tls:!0,trace_events:">= 10",tty:!0,url:!0,util:!0,"v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],v8:">= 1",vm:!0,wasi:">= 13.4 && < 13.5",worker_threads:">= 11.7",zlib:!0}});var v0=d((EF,m0)=>{var DC=process.versions&&process.versions.node&&process.versions.node.split(".")||[];function FC(t){for(var e=t.split(" "),r=e.length>1?e[0]:"=",i=(e.length>1?e[1]:e[0]).split("."),n=0;n<3;++n){var s=parseInt(DC[n]||0,10),o=parseInt(i[n]||0,10);if(s!==o)return r==="<"?s="?s>=o:!1}return r===">="}function g0(t){var e=t.split(/ ?&& ?/);if(e.length===0)return!1;for(var r=0;r{var qC=eo();b0.exports=function(e){return qC(e)}});var S0=d((SF,w0)=>{var jC=eo(),Br=require("fs"),Ze=require("path"),$C=Du(),MC=qu(),BC=ju(),UC=Br.realpathSync&&typeof Br.realpathSync.native=="function"?Br.realpathSync.native:Br.realpathSync,GC=function(e){try{var r=Br.statSync(e)}catch(i){if(i&&(i.code==="ENOENT"||i.code==="ENOTDIR"))return!1;throw i}return r.isFile()||r.isFIFO()},zC=function(e){try{var r=Br.statSync(e)}catch(i){if(i&&(i.code==="ENOENT"||i.code==="ENOTDIR"))return!1;throw i}return r.isDirectory()},HC=function(e){try{return UC(e)}catch(r){if(r.code!=="ENOENT")throw r}return e},In=function(e,r,i){return i&&i.preserveSymlinks===!1?e(r):r},WC=function(e,r,i){for(var n=MC(r,i,e),s=0;s{var to=h0();to.core=v0();to.isCore=E0();to.sync=S0();O0.exports=to});var _0=d((RF,R0)=>{R0.exports=VC;function VC(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` +`);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,i=e+1;i{C0.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var N0=d((AF,T0)=>{var L0=ym(),YC=xu(),ro=Wm(),XC=Uu().isCore,KC=["dependencies","devDependencies","optionalDependencies"],ZC=_0(),Gu=require("url"),fr=A0(),CF=T0.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=ro.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(fr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,fr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):fr.script[e]&&!t.scripts[fr.script[e]]&&this.warn("typo",e,fr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(i){return!i||typeof i!="string"?(this.warn("nonStringBundleDependency",i),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(i)||(this.warn("nonDependencyBundleDependency",i),t.dependencies[i]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;rA(t,this.warn),tA(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(i){if(i in t){if(!t[i]||typeof t[i]!="object"){this.warn("nonObjectDependencies",i),delete t[i];return}Object.keys(t[i]).forEach(function(n){var s=t[i][n];typeof s!="string"&&(this.warn("nonStringDependency",n,JSON.stringify(s)),delete t[i][n]);var o=ro.fromUrl(t[i][n]);o&&(t[i][n]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!L0.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=L0.clean(t.version,r),!0},fixPeople:function(t){x0(t,QC),x0(t,eA)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),JC(t.name,r,e.allowLegacyCase),XC(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=ZC(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=ro.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:Gu.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{iA(t.bugs,this.warn);var i=t.bugs;t.bugs={},i.url&&(typeof i.url=="string"&&Gu.parse(i.url).protocol?t.bugs.url=i.url:this.warn("nonUrlBugsUrlField")),i.email&&(typeof i.email=="string"&&r.test(i.email)?t.bugs.email=i.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=ro.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;Gu.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):YC(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function nA(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function sA(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function JC(t,e,r){if(t.charAt(0)==="."||!(nA(t)||sA(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function x0(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function QC(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,i=r?" ("+r+")":"",n=t.email||t.mail,s=n?" <"+n+">":"";return e+s+i}function eA(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),i=t.match(/<([^>]+)>/),n={};return e&&e[0].trim()&&(n.name=e[0].trim()),i&&(n.email=i[1]),r&&(n.url=r[1]),n}function tA(t,e){var r=t.optionalDependencies;if(!!r){var i=t.dependencies||{};Object.keys(r).forEach(function(n){i[n]=r[n]}),t.dependencies=i}}function oA(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var i={};return t.filter(function(n){return typeof n=="string"}).forEach(function(n){n=n.trim().split(/(:?[@\s><=])/);var s=n.shift(),o=n.join("");o=o.trim(),o=o.replace(/^@/,""),i[s]=o}),i}function rA(t,e){KC.forEach(function(r){!t[r]||(t[r]=oA(t[r],r,e))})}function iA(t,e){!t||Object.keys(t).forEach(function(r){fr.bugs[r]&&(e("typo",r,fr.bugs[r],"bugs"),t[fr.bugs[r]]=t[r],delete t[r])})}});var P0=d((TF,I0)=>{I0.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var k0=d((LF,D0)=>{var F0=require("util"),zu=P0();D0.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return aA.apply(null,t);var r=zu[e]?zu[e]:e+": '%s'";return t.unshift(r),F0.format.apply(null,t)};function aA(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),F0.format(zu.typo,t,e)}});var Vu=d((xF,q0)=>{q0.exports=j0;var Hu=N0();j0.fixer=Hu;var uA=k0(),cA=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],lA=["dependencies","people","typos"],Wu=cA.map(function(t){return $0(t)+"Field"});Wu=Wu.concat(lA);function j0(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(i){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),Hu.warn=function(){e(uA.apply(null,arguments))},Wu.forEach(function(i){Hu["fix"+$0(i)](t,r)}),t._id=t.name+"@"+t.version}function $0(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var G0=d((NF,Yu)=>{"use strict";var{promisify:fA}=require("util"),M0=require("fs"),B0=require("path"),U0=em(),hA=fA(M0.readFile);Yu.exports=async t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=B0.resolve(t.cwd,"package.json"),r=U0(await hA(e,"utf8"));return t.normalize&&Vu()(r),r};Yu.exports.sync=t=>{t={cwd:process.cwd(),normalize:!0,...t};let e=B0.resolve(t.cwd,"package.json"),r=U0(M0.readFileSync(e,"utf8"));return t.normalize&&Vu()(r),r}});var V0=d((IF,Xu)=>{"use strict";var z0=require("path"),H0=zp(),W0=G0();Xu.exports=async t=>{let e=await H0("package.json",t);if(!!e)return{packageJson:await W0({...t,cwd:z0.dirname(e)}),path:e}};Xu.exports.sync=t=>{let e=H0.sync("package.json",t);if(!!e)return{packageJson:W0.sync({...t,cwd:z0.dirname(e)}),path:e}}});var K0=d((PF,Ku)=>{"use strict";var pA=require("util"),Y0=!1,X0=(t=console.error)=>{Y0||(Y0=!0,process.on("unhandledRejection",e=>{e instanceof Error||(e=new Error(`Promise rejected with value: ${pA.inspect(e)}`)),t(e.stack),process.exit(1)}))};Ku.exports=X0;Ku.exports.default=X0});var Pn=d((DF,Z0)=>{var dA="2.0.0",mA=256,gA=Number.MAX_SAFE_INTEGER||9007199254740991,yA=16;Z0.exports={SEMVER_SPEC_VERSION:dA,MAX_LENGTH:mA,MAX_SAFE_INTEGER:gA,MAX_SAFE_COMPONENT_LENGTH:yA}});var Dn=d((FF,J0)=>{var vA=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};J0.exports=vA});var Ur=d((hr,Q0)=>{var{MAX_SAFE_COMPONENT_LENGTH:Zu}=Pn(),bA=Dn();hr=Q0.exports={};var EA=hr.re=[],L=hr.src=[],x=hr.t={},wA=0,U=(t,e,r)=>{let i=wA++;bA(i,e),x[t]=i,L[i]=e,EA[i]=new RegExp(e,r?"g":void 0)};U("NUMERICIDENTIFIER","0|[1-9]\\d*");U("NUMERICIDENTIFIERLOOSE","[0-9]+");U("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");U("MAINVERSION",`(${L[x.NUMERICIDENTIFIER]})\\.(${L[x.NUMERICIDENTIFIER]})\\.(${L[x.NUMERICIDENTIFIER]})`);U("MAINVERSIONLOOSE",`(${L[x.NUMERICIDENTIFIERLOOSE]})\\.(${L[x.NUMERICIDENTIFIERLOOSE]})\\.(${L[x.NUMERICIDENTIFIERLOOSE]})`);U("PRERELEASEIDENTIFIER",`(?:${L[x.NUMERICIDENTIFIER]}|${L[x.NONNUMERICIDENTIFIER]})`);U("PRERELEASEIDENTIFIERLOOSE",`(?:${L[x.NUMERICIDENTIFIERLOOSE]}|${L[x.NONNUMERICIDENTIFIER]})`);U("PRERELEASE",`(?:-(${L[x.PRERELEASEIDENTIFIER]}(?:\\.${L[x.PRERELEASEIDENTIFIER]})*))`);U("PRERELEASELOOSE",`(?:-?(${L[x.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${L[x.PRERELEASEIDENTIFIERLOOSE]})*))`);U("BUILDIDENTIFIER","[0-9A-Za-z-]+");U("BUILD",`(?:\\+(${L[x.BUILDIDENTIFIER]}(?:\\.${L[x.BUILDIDENTIFIER]})*))`);U("FULLPLAIN",`v?${L[x.MAINVERSION]}${L[x.PRERELEASE]}?${L[x.BUILD]}?`);U("FULL",`^${L[x.FULLPLAIN]}$`);U("LOOSEPLAIN",`[v=\\s]*${L[x.MAINVERSIONLOOSE]}${L[x.PRERELEASELOOSE]}?${L[x.BUILD]}?`);U("LOOSE",`^${L[x.LOOSEPLAIN]}$`);U("GTLT","((?:<|>)?=?)");U("XRANGEIDENTIFIERLOOSE",`${L[x.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);U("XRANGEIDENTIFIER",`${L[x.NUMERICIDENTIFIER]}|x|X|\\*`);U("XRANGEPLAIN",`[v=\\s]*(${L[x.XRANGEIDENTIFIER]})(?:\\.(${L[x.XRANGEIDENTIFIER]})(?:\\.(${L[x.XRANGEIDENTIFIER]})(?:${L[x.PRERELEASE]})?${L[x.BUILD]}?)?)?`);U("XRANGEPLAINLOOSE",`[v=\\s]*(${L[x.XRANGEIDENTIFIERLOOSE]})(?:\\.(${L[x.XRANGEIDENTIFIERLOOSE]})(?:\\.(${L[x.XRANGEIDENTIFIERLOOSE]})(?:${L[x.PRERELEASELOOSE]})?${L[x.BUILD]}?)?)?`);U("XRANGE",`^${L[x.GTLT]}\\s*${L[x.XRANGEPLAIN]}$`);U("XRANGELOOSE",`^${L[x.GTLT]}\\s*${L[x.XRANGEPLAINLOOSE]}$`);U("COERCE",`(^|[^\\d])(\\d{1,${Zu}})(?:\\.(\\d{1,${Zu}}))?(?:\\.(\\d{1,${Zu}}))?(?:$|[^\\d])`);U("COERCERTL",L[x.COERCE],!0);U("LONETILDE","(?:~>?)");U("TILDETRIM",`(\\s*)${L[x.LONETILDE]}\\s+`,!0);hr.tildeTrimReplace="$1~";U("TILDE",`^${L[x.LONETILDE]}${L[x.XRANGEPLAIN]}$`);U("TILDELOOSE",`^${L[x.LONETILDE]}${L[x.XRANGEPLAINLOOSE]}$`);U("LONECARET","(?:\\^)");U("CARETTRIM",`(\\s*)${L[x.LONECARET]}\\s+`,!0);hr.caretTrimReplace="$1^";U("CARET",`^${L[x.LONECARET]}${L[x.XRANGEPLAIN]}$`);U("CARETLOOSE",`^${L[x.LONECARET]}${L[x.XRANGEPLAINLOOSE]}$`);U("COMPARATORLOOSE",`^${L[x.GTLT]}\\s*(${L[x.LOOSEPLAIN]})$|^$`);U("COMPARATOR",`^${L[x.GTLT]}\\s*(${L[x.FULLPLAIN]})$|^$`);U("COMPARATORTRIM",`(\\s*)${L[x.GTLT]}\\s*(${L[x.LOOSEPLAIN]}|${L[x.XRANGEPLAIN]})`,!0);hr.comparatorTrimReplace="$1$2$3";U("HYPHENRANGE",`^\\s*(${L[x.XRANGEPLAIN]})\\s+-\\s+(${L[x.XRANGEPLAIN]})\\s*$`);U("HYPHENRANGELOOSE",`^\\s*(${L[x.XRANGEPLAINLOOSE]})\\s+-\\s+(${L[x.XRANGEPLAINLOOSE]})\\s*$`);U("STAR","(<|>)?=?\\s*\\*");U("GTE0","^\\s*>=\\s*0.0.0\\s*$");U("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Fn=d((kF,eg)=>{var SA=["includePrerelease","loose","rtl"],OA=t=>t?typeof t!="object"?{loose:!0}:SA.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};eg.exports=OA});var io=d((qF,tg)=>{var rg=/^[0-9]+$/,ig=(t,e)=>{let r=rg.test(t),i=rg.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tig(e,t);tg.exports={compareIdentifiers:ig,rcompareIdentifiers:RA}});var Pe=d((jF,ng)=>{var no=Dn(),{MAX_LENGTH:sg,MAX_SAFE_INTEGER:so}=Pn(),{re:og,t:ag}=Ur(),_A=Fn(),{compareIdentifiers:kn}=io(),lt=class{constructor(e,r){if(r=_A(r),e instanceof lt){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>sg)throw new TypeError(`version is longer than ${sg} characters`);no("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?og[ag.LOOSE]:og[ag.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>so||this.major<0)throw new TypeError("Invalid major version");if(this.minor>so||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>so||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};ng.exports=lt});var Gr=d(($F,ug)=>{var{MAX_LENGTH:CA}=Pn(),{re:cg,t:lg}=Ur(),fg=Pe(),AA=Fn(),TA=(t,e)=>{if(e=AA(e),t instanceof fg)return t;if(typeof t!="string"||t.length>CA||!(e.loose?cg[lg.LOOSE]:cg[lg.FULL]).test(t))return null;try{return new fg(t,e)}catch(i){return null}};ug.exports=TA});var pg=d((MF,hg)=>{var LA=Gr(),xA=(t,e)=>{let r=LA(t,e);return r?r.version:null};hg.exports=xA});var mg=d((BF,dg)=>{var NA=Gr(),IA=(t,e)=>{let r=NA(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};dg.exports=IA});var yg=d((UF,gg)=>{var PA=Pe(),DA=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new PA(t,r).inc(e,i).version}catch(n){return null}};gg.exports=DA});var ft=d((GF,vg)=>{var bg=Pe(),FA=(t,e,r)=>new bg(t,r).compare(new bg(e,r));vg.exports=FA});var oo=d((zF,Eg)=>{var kA=ft(),qA=(t,e,r)=>kA(t,e,r)===0;Eg.exports=qA});var Og=d((HF,wg)=>{var Sg=Gr(),jA=oo(),$A=(t,e)=>{if(jA(t,e))return null;{let r=Sg(t),i=Sg(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};wg.exports=$A});var _g=d((WF,Rg)=>{var MA=Pe(),BA=(t,e)=>new MA(t,e).major;Rg.exports=BA});var Ag=d((VF,Cg)=>{var UA=Pe(),GA=(t,e)=>new UA(t,e).minor;Cg.exports=GA});var Lg=d((YF,Tg)=>{var zA=Pe(),HA=(t,e)=>new zA(t,e).patch;Tg.exports=HA});var Ng=d((XF,xg)=>{var WA=Gr(),VA=(t,e)=>{let r=WA(t,e);return r&&r.prerelease.length?r.prerelease:null};xg.exports=VA});var Pg=d((KF,Ig)=>{var YA=ft(),XA=(t,e,r)=>YA(e,t,r);Ig.exports=XA});var Fg=d((ZF,Dg)=>{var KA=ft(),ZA=(t,e)=>KA(t,e,!0);Dg.exports=ZA});var ao=d((JF,kg)=>{var qg=Pe(),JA=(t,e,r)=>{let i=new qg(t,r),n=new qg(e,r);return i.compare(n)||i.compareBuild(n)};kg.exports=JA});var $g=d((QF,jg)=>{var QA=ao(),eT=(t,e)=>t.sort((r,i)=>QA(r,i,e));jg.exports=eT});var Bg=d((ek,Mg)=>{var tT=ao(),rT=(t,e)=>t.sort((r,i)=>tT(i,r,e));Mg.exports=rT});var qn=d((tk,Ug)=>{var iT=ft(),nT=(t,e,r)=>iT(t,e,r)>0;Ug.exports=nT});var uo=d((rk,Gg)=>{var sT=ft(),oT=(t,e,r)=>sT(t,e,r)<0;Gg.exports=oT});var Ju=d((ik,zg)=>{var aT=ft(),uT=(t,e,r)=>aT(t,e,r)!==0;zg.exports=uT});var co=d((nk,Hg)=>{var cT=ft(),lT=(t,e,r)=>cT(t,e,r)>=0;Hg.exports=lT});var lo=d((sk,Wg)=>{var fT=ft(),hT=(t,e,r)=>fT(t,e,r)<=0;Wg.exports=hT});var Qu=d((ok,Vg)=>{var pT=oo(),dT=Ju(),mT=qn(),gT=co(),yT=uo(),vT=lo(),bT=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return pT(t,r,i);case"!=":return dT(t,r,i);case">":return mT(t,r,i);case">=":return gT(t,r,i);case"<":return yT(t,r,i);case"<=":return vT(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};Vg.exports=bT});var Xg=d((ak,Yg)=>{var ET=Pe(),wT=Gr(),{re:fo,t:ho}=Ur(),ST=(t,e)=>{if(t instanceof ET)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(fo[ho.COERCE]);else{let i;for(;(i=fo[ho.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),fo[ho.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;fo[ho.COERCERTL].lastIndex=-1}return r===null?null:wT(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};Yg.exports=ST});var Zg=d((uk,Kg)=>{"use strict";Kg.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var ec=d((ck,Jg)=>{"use strict";Jg.exports=Y;Y.Node=zr;Y.create=Y;function Y(t){var e=this;if(e instanceof Y||(e=new Y),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Y.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Y.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Y.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Y.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Y;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Y.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var CT=ec(),Hr=Symbol("max"),Gt=Symbol("length"),Li=Symbol("lengthCalculator"),jn=Symbol("allowStale"),Wr=Symbol("maxAge"),zt=Symbol("dispose"),ey=Symbol("noDisposeOnSet"),Se=Symbol("lruList"),_t=Symbol("cache"),ty=Symbol("updateAgeOnGet"),tc=()=>1,ry=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Hr]=e.max||Infinity,i=e.length||tc;if(this[Li]=typeof i!="function"?tc:i,this[jn]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Wr]=e.maxAge||0,this[zt]=e.dispose,this[ey]=e.noDisposeOnSet||!1,this[ty]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Hr]=e||Infinity,$n(this)}get max(){return this[Hr]}set allowStale(e){this[jn]=!!e}get allowStale(){return this[jn]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Wr]=e,$n(this)}get maxAge(){return this[Wr]}set lengthCalculator(e){typeof e!="function"&&(e=tc),e!==this[Li]&&(this[Li]=e,this[Gt]=0,this[Se].forEach(r=>{r.length=this[Li](r.value,r.key),this[Gt]+=r.length})),$n(this)}get lengthCalculator(){return this[Li]}get length(){return this[Gt]}get itemCount(){return this[Se].length}rforEach(e,r){r=r||this;for(let i=this[Se].tail;i!==null;){let n=i.prev;ny(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Se].head;i!==null;){let n=i.next;ny(this,e,i,r),i=n}}keys(){return this[Se].toArray().map(e=>e.key)}values(){return this[Se].toArray().map(e=>e.value)}reset(){this[zt]&&this[Se]&&this[Se].length&&this[Se].forEach(e=>this[zt](e.key,e.value)),this[_t]=new Map,this[Se]=new CT,this[Gt]=0}dump(){return this[Se].map(e=>po(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Se]}set(e,r,i){if(i=i||this[Wr],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Li](r,e);if(this[_t].has(e)){if(s>this[Hr])return xi(this,this[_t].get(e)),!1;let u=this[_t].get(e).value;return this[zt]&&(this[ey]||this[zt](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[Gt]+=s-u.length,u.length=s,this.get(e),$n(this),!0}let o=new iy(e,r,s,n,i);return o.length>this[Hr]?(this[zt]&&this[zt](e,r),!1):(this[Gt]+=o.length,this[Se].unshift(o),this[_t].set(e,this[Se].head),$n(this),!0)}has(e){if(!this[_t].has(e))return!1;let r=this[_t].get(e).value;return!po(this,r)}get(e){return rc(this,e,!0)}peek(e){return rc(this,e,!1)}pop(){let e=this[Se].tail;return e?(xi(this,e),e.value):null}del(e){xi(this,this[_t].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[_t].forEach((e,r)=>rc(this,r,!1))}},rc=(t,e,r)=>{let i=t[_t].get(e);if(i){let n=i.value;if(po(t,n)){if(xi(t,i),!t[jn])return}else r&&(t[ty]&&(i.value.now=Date.now()),t[Se].unshiftNode(i));return n.value}},po=(t,e)=>{if(!e||!e.maxAge&&!t[Wr])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Wr]&&r>t[Wr]},$n=t=>{if(t[Gt]>t[Hr])for(let e=t[Se].tail;t[Gt]>t[Hr]&&e!==null;){let r=e.prev;xi(t,e),e=r}},xi=(t,e)=>{if(e){let r=e.value;t[zt]&&t[zt](r.key,r.value),t[Gt]-=r.length,t[_t].delete(r.key),t[Se].removeNode(e)}},iy=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},ny=(t,e,r,i)=>{let n=r.value;po(t,n)&&(xi(t,r),t[jn]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};Qg.exports=ry});var ht=d((fk,sy)=>{var Ni=class{constructor(e,r){if(r=AT(r),e instanceof Ni)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new Ni(e.raw,r);if(e instanceof nc)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!ay(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&IT(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=oy.get(i);if(n)return n;let s=this.options.loose,o=s?De[xe.HYPHENRANGELOOSE]:De[xe.HYPHENRANGE];e=e.replace(o,FT(this.options.includePrerelease)),pe("hyphen replace",e),e=e.replace(De[xe.COMPARATORTRIM],LT),pe("comparator trim",e,De[xe.COMPARATORTRIM]),e=e.replace(De[xe.TILDETRIM],xT),e=e.replace(De[xe.CARETTRIM],NT),e=e.split(/\s+/).join(" ");let a=s?De[xe.COMPARATORLOOSE]:De[xe.COMPARATOR],u=e.split(" ").map(h=>PT(h,this.options)).join(" ").split(/\s+/).map(h=>DT(h,this.options)).filter(this.options.loose?h=>!!h.match(a):()=>!0).map(h=>new nc(h,this.options)),c=u.length,l=new Map;for(let h of u){if(ay(h))return[h];l.set(h.value,h)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return oy.set(i,f),f}intersects(e,r){if(!(e instanceof Ni))throw new TypeError("a Range is required");return this.set.some(i=>uy(i,r)&&e.set.some(n=>uy(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new TT(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",IT=t=>t.value==="",uy=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},PT=(t,e)=>(pe("comp",t,e),t=$T(t,e),pe("caret",t),t=jT(t,e),pe("tildes",t),t=MT(t,e),pe("xrange",t),t=BT(t,e),pe("stars",t),t),Ue=t=>!t||t.toLowerCase()==="x"||t==="*",jT=(t,e)=>t.trim().split(/\s+/).map(r=>UT(r,e)).join(" "),UT=(t,e)=>{let r=e.loose?De[xe.TILDELOOSE]:De[xe.TILDE];return t.replace(r,(i,n,s,o,a)=>{pe("tilde",t,i,n,s,o,a);let u;return Ue(n)?u="":Ue(s)?u=`>=${n}.0.0 <${+n+1}.0.0-0`:Ue(o)?u=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(pe("replaceTilde pr",a),u=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):u=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,pe("tilde return",u),u})},$T=(t,e)=>t.trim().split(/\s+/).map(r=>GT(r,e)).join(" "),GT=(t,e)=>{pe("caret",t,e);let r=e.loose?De[xe.CARETLOOSE]:De[xe.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,u)=>{pe("caret",t,n,s,o,a,u);let c;return Ue(s)?c="":Ue(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ue(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:u?(pe("replaceCaret pr",u),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${u} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${u} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${u} <${+s+1}.0.0-0`):(pe("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),pe("caret return",c),c})},MT=(t,e)=>(pe("replaceXRanges",t,e),t.split(/\s+/).map(r=>zT(r,e)).join(" ")),zT=(t,e)=>{t=t.trim();let r=e.loose?De[xe.XRANGELOOSE]:De[xe.XRANGE];return t.replace(r,(i,n,s,o,a,u)=>{pe("xRange",t,i,n,s,o,a,u);let c=Ue(s),l=c||Ue(o),f=l||Ue(a),h=f;return n==="="&&h&&(n=""),u=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&h?(l&&(o=0),a=0,n===">"?(n=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",l?s=+s+1:o=+o+1),n==="<"&&(u="-0"),i=`${n+s}.${o}.${a}${u}`):l?i=`>=${s}.0.0${u} <${+s+1}.0.0-0`:f&&(i=`>=${s}.${o}.0${u} <${s}.${+o+1}.0-0`),pe("xRange return",i),i})},BT=(t,e)=>(pe("replaceStars",t,e),t.trim().replace(De[xe.STAR],"")),DT=(t,e)=>(pe("replaceGTE0",t,e),t.trim().replace(De[e.includePrerelease?xe.GTE0PRE:xe.GTE0],"")),FT=t=>(e,r,i,n,s,o,a,u,c,l,f,h,y)=>(Ue(i)?r="":Ue(n)?r=`>=${i}.0.0${t?"-0":""}`:Ue(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ue(c)?u="":Ue(l)?u=`<${+c+1}.0.0-0`:Ue(f)?u=`<${c}.${+l+1}.0-0`:h?u=`<=${c}.${l}.${f}-${h}`:t?u=`<${c}.${l}.${+f+1}-0`:u=`<=${u}`,`${r} ${u}`.trim()),kT=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Mn=d((hk,cy)=>{var Bn=Symbol("SemVer ANY"),Un=class{static get ANY(){return Bn}constructor(e,r){if(r=HT(r),e instanceof Un){if(e.loose===!!r.loose)return e;e=e.value}oc("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Bn?this.value="":this.value=this.operator+this.semver.version,oc("comp",this)}parse(e){let r=this.options.loose?ly[fy.COMPARATORLOOSE]:ly[fy.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new hy(i[2],this.options.loose):this.semver=Bn}toString(){return this.value}test(e){if(oc("Comparator.test",e,this.options.loose),this.semver===Bn||e===Bn)return!0;if(typeof e=="string")try{e=new hy(e,this.options)}catch(r){return!1}return sc(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Un))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new py(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new py(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=sc(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),u=sc(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||u}};cy.exports=Un;var HT=Fn(),{re:ly,t:fy}=Ur(),sc=Qu(),oc=Dn(),hy=Pe(),py=ht()});var Gn=d((pk,dy)=>{var WT=ht(),VT=(t,e,r)=>{try{e=new WT(e,r)}catch(i){return!1}return e.test(t)};dy.exports=VT});var gy=d((dk,my)=>{var YT=ht(),XT=(t,e)=>new YT(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));my.exports=XT});var vy=d((mk,yy)=>{var KT=Pe(),ZT=ht(),JT=(t,e,r)=>{let i=null,n=null,s=null;try{s=new ZT(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new KT(i,r))}),i};yy.exports=JT});var Ey=d((gk,by)=>{var QT=Pe(),eL=ht(),tL=(t,e,r)=>{let i=null,n=null,s=null;try{s=new eL(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new QT(i,r))}),i};by.exports=tL});var Oy=d((yk,wy)=>{var ac=Pe(),rL=ht(),Sy=qn(),iL=(t,e)=>{t=new rL(t,e);let r=new ac("0.0.0");if(t.test(r)||(r=new ac("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new ac(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||Sy(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||Sy(r,s))&&(r=s)}return r&&t.test(r)?r:null};wy.exports=iL});var _y=d((vk,Ry)=>{var nL=ht(),sL=(t,e)=>{try{return new nL(t,e).range||"*"}catch(r){return null}};Ry.exports=sL});var mo=d((bk,Cy)=>{var oL=Pe(),Ay=Mn(),{ANY:aL}=Ay,uL=ht(),cL=Gn(),Ty=qn(),Ly=uo(),lL=lo(),fL=co(),hL=(t,e,r,i)=>{t=new oL(t,i),e=new uL(e,i);let n,s,o,a,u;switch(r){case">":n=Ty,s=lL,o=Ly,a=">",u=">=";break;case"<":n=Ly,s=fL,o=Ty,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(cL(t,e,i))return!1;for(let c=0;c{y.semver===aL&&(y=new Ay(">=0.0.0")),f=f||y,h=h||y,n(y.semver,f.semver,i)?f=y:o(y.semver,h.semver,i)&&(h=y)}),f.operator===a||f.operator===u||(!h.operator||h.operator===a)&&s(t,h.semver))return!1;if(h.operator===u&&o(t,h.semver))return!1}return!0};Cy.exports=hL});var Ny=d((Ek,xy)=>{var pL=mo(),dL=(t,e,r)=>pL(t,e,">",r);xy.exports=dL});var Py=d((wk,Iy)=>{var mL=mo(),gL=(t,e,r)=>mL(t,e,"<",r);Iy.exports=gL});var ky=d((Sk,Dy)=>{var Fy=ht(),yL=(t,e,r)=>(t=new Fy(t,r),e=new Fy(e,r),t.intersects(e));Dy.exports=yL});var jy=d((Ok,qy)=>{var vL=Gn(),bL=ft();qy.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((l,f)=>bL(l,f,r));for(let l of o)vL(l,e,r)?(s=l,n||(n=l)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[l,f]of i)l===f?a.push(l):!f&&l===o[0]?a.push("*"):f?l===o[0]?a.push(`<=${f}`):a.push(`${l} - ${f}`):a.push(`>=${l}`);let u=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return u.length{var My=ht(),{ANY:By}=Mn(),zn=Gn(),uc=ft(),wL=(t,e,r)=>{if(t===e)return!0;t=new My(t,r),e=new My(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=EL(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},EL=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===By)return e.length===1&&e[0].semver===By;let i=new Set,n,s;for(let f of t)f.operator===">"||f.operator===">="?n=Uy(n,f,r):f.operator==="<"||f.operator==="<="?s=Gy(s,f,r):i.add(f.semver);if(i.size>1)return null;let o;if(n&&s){if(o=uc(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let f of i){if(n&&!zn(f,String(n),r)||s&&!zn(f,String(s),r))return null;for(let h of e)if(!zn(f,String(h),r))return!1;return!0}let a,u,c,l;for(let f of e){if(l=l||f.operator===">"||f.operator===">=",c=c||f.operator==="<"||f.operator==="<=",n){if(f.operator===">"||f.operator===">="){if(a=Uy(n,f,r),a===f&&a!==n)return!1}else if(n.operator===">="&&!zn(n.semver,String(f),r))return!1}if(s){if(f.operator==="<"||f.operator==="<="){if(u=Gy(s,f,r),u===f&&u!==s)return!1}else if(s.operator==="<="&&!zn(s.semver,String(f),r))return!1}if(!f.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&l&&!n&&o!==0)},Uy=(t,e,r)=>{if(!t)return e;let i=uc(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},Gy=(t,e,r)=>{if(!t)return e;let i=uc(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};$y.exports=wL});var Wy=d((_k,Hy)=>{var cc=Ur();Hy.exports={re:cc.re,src:cc.src,tokens:cc.t,SEMVER_SPEC_VERSION:Pn().SEMVER_SPEC_VERSION,SemVer:Pe(),compareIdentifiers:io().compareIdentifiers,rcompareIdentifiers:io().rcompareIdentifiers,parse:Gr(),valid:pg(),clean:mg(),inc:yg(),diff:Og(),major:_g(),minor:Ag(),patch:Lg(),prerelease:Ng(),compare:ft(),rcompare:Pg(),compareLoose:Fg(),compareBuild:ao(),sort:$g(),rsort:Bg(),gt:qn(),lt:uo(),eq:oo(),neq:Ju(),gte:co(),lte:lo(),cmp:Qu(),coerce:Xg(),Comparator:Mn(),Range:ht(),satisfies:Gn(),toComparators:gy(),maxSatisfying:vy(),minSatisfying:Ey(),minVersion:Oy(),validRange:_y(),outside:mo(),gtr:Ny(),ltr:Py(),intersects:ky(),simplifyRange:jy(),subset:zy()}});var lc=d((Ck,Vy)=>{"use strict";var Hn=Vy.exports={github:{protocols:["git","http","git+ssh","git+https","ssh","https"],domain:"github.com",treepath:"tree",filetemplate:"https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}",bugstemplate:"https://{domain}/{user}/{project}/issues",gittemplate:"git://{auth@}{domain}/{user}/{project}.git{#committish}",tarballtemplate:"https://codeload.{domain}/{user}/{project}/tar.gz/{committish}"},bitbucket:{protocols:["git+ssh","git+https","ssh","https"],domain:"bitbucket.org",treepath:"src",tarballtemplate:"https://{domain}/{user}/{project}/get/{committish}.tar.gz"},gitlab:{protocols:["git+ssh","git+https","ssh","https"],domain:"gitlab.com",treepath:"tree",bugstemplate:"https://{domain}/{user}/{project}/issues",httpstemplate:"git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}",tarballtemplate:"https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}",pathmatch:/^\/([^/]+)\/((?!.*(\/-\/|\/repository(\/[^/]+)?\/archive\.tar\.gz)).*?)(?:\.git|\/)?$/},gist:{protocols:["git","git+ssh","git+https","ssh","https"],domain:"gist.github.com",pathmatch:/^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,filetemplate:"https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}",bugstemplate:"https://{domain}/{project}",gittemplate:"git://{domain}/{project}.git{#committish}",sshtemplate:"git@{domain}:/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{project}.git{#committish}",browsetemplate:"https://{domain}/{project}{/committish}",browsefiletemplate:"https://{domain}/{project}{/committish}{#path}",docstemplate:"https://{domain}/{project}{/committish}",httpstemplate:"git+https://{domain}/{project}.git{#committish}",shortcuttemplate:"{type}:{project}{#committish}",pathtemplate:"{project}{#committish}",tarballtemplate:"https://codeload.github.com/gist/{project}/tar.gz/{committish}",hashformat:function(t){return"file-"+Yy(t)}}},Xy={sshtemplate:"git@{domain}:{user}/{project}.git{#committish}",sshurltemplate:"git+ssh://git@{domain}/{user}/{project}.git{#committish}",browsetemplate:"https://{domain}/{user}/{project}{/tree/committish}",browsefiletemplate:"https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}",docstemplate:"https://{domain}/{user}/{project}{/tree/committish}#readme",httpstemplate:"git+https://{auth@}{domain}/{user}/{project}.git{#committish}",filetemplate:"https://{domain}/{user}/{project}/raw/{committish}/{path}",shortcuttemplate:"{type}:{user}/{project}{#committish}",pathtemplate:"{user}/{project}{#committish}",pathmatch:/^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,hashformat:Yy};Object.keys(Hn).forEach(function(t){Object.keys(Xy).forEach(function(e){Hn[t][e]||(Hn[t][e]=Xy[e])}),Hn[t].protocols_re=RegExp("^("+Hn[t].protocols.map(function(e){return e.replace(/([\\+*{}()[\]$^|])/g,"\\$1")}).join("|")+"):$")});function Yy(t){return t.toLowerCase().replace(/^\W+|\/|\W+$/g,"").replace(/\W+/g,"-")}});var Jy=d((Ak,Ky)=>{"use strict";var Zy=lc(),Ii=Object.assign||function(e,r){if(r===null||typeof r!="object")return e;let i=Object.keys(r),n=i.length;for(;n--;)e[i[n]]=r[i[n]];return e};Ky.exports=Fe;function Fe(t,e,r,i,n,s,o){var a=this;a.type=t,Object.keys(Zy[t]).forEach(function(u){a[u]=Zy[t][u]}),a.user=e,a.auth=r,a.project=i,a.committish=n,a.default=s,a.opts=o||{}}Fe.prototype.hash=function(){return this.committish?"#"+this.committish:""};Fe.prototype._fill=function(t,e){if(!!t){var r=Ii({},e);r.path=r.path?r.path.replace(/^[/]+/g,""):"",e=Ii(Ii({},this.opts),e);var i=this;Object.keys(this).forEach(function(l){i[l]!=null&&r[l]==null&&(r[l]=i[l])});var n=r.auth,s=r.committish,o=r.fragment,a=r.path,u=r.project;Object.keys(r).forEach(function(l){var f=r[l];(l==="path"||l==="project")&&typeof f=="string"?r[l]=f.split("/").map(function(h){return encodeURIComponent(h)}).join("/"):l!=="domain"&&(r[l]=encodeURIComponent(f))}),r["auth@"]=n?n+"@":"",r["#fragment"]=o?"#"+this.hashformat(o):"",r.fragment=r.fragment?r.fragment:"",r["#path"]=a?"#"+this.hashformat(a):"",r["/path"]=r.path?"/"+r.path:"",r.projectPath=u.split("/").map(encodeURIComponent).join("/"),e.noCommittish?(r["#committish"]="",r["/tree/committish"]="",r["/committish"]="",r.committish=""):(r["#committish"]=s?"#"+s:"",r["/tree/committish"]=r.committish?"/"+r.treepath+"/"+r.committish:"",r["/committish"]=r.committish?"/"+r.committish:"",r.committish=r.committish||"master");var c=t;return Object.keys(r).forEach(function(l){c=c.replace(new RegExp("[{]"+l+"[}]","g"),r[l])}),e.noGitPlus?c.replace(/^git[+]/,""):c}};Fe.prototype.ssh=function(t){return this._fill(this.sshtemplate,t)};Fe.prototype.sshurl=function(t){return this._fill(this.sshurltemplate,t)};Fe.prototype.browse=function(t,e,r){return typeof t=="string"?(typeof e!="string"&&(r=e,e=null),this._fill(this.browsefiletemplate,Ii({fragment:e,path:t},r))):this._fill(this.browsetemplate,t)};Fe.prototype.docs=function(t){return this._fill(this.docstemplate,t)};Fe.prototype.bugs=function(t){return this._fill(this.bugstemplate,t)};Fe.prototype.https=function(t){return this._fill(this.httpstemplate,t)};Fe.prototype.git=function(t){return this._fill(this.gittemplate,t)};Fe.prototype.shortcut=function(t){return this._fill(this.shortcuttemplate,t)};Fe.prototype.path=function(t){return this._fill(this.pathtemplate,t)};Fe.prototype.tarball=function(t){var e=Ii({},t,{noCommittish:!1});return this._fill(this.tarballtemplate,e)};Fe.prototype.file=function(t,e){return this._fill(this.filetemplate,Ii({path:t},e))};Fe.prototype.getDefaultRepresentation=function(){return this.default};Fe.prototype.toString=function(t){return this.default&&typeof this[this.default]=="function"?this[this.default](t):this.sshurl(t)}});var ev=d((Tk,fc)=>{"use strict";var hc=require("url"),Qy=lc(),SL=fc.exports=Jy(),OL=ic(),pc=new OL({max:1e3}),RL={"git+ssh:":"sshurl","git+https:":"https","ssh:":"sshurl","git:":"git"};function _L(t){return RL[t]||t.slice(0,-1)}var CL={"git:":!0,"https:":!0,"git+https:":!0,"http:":!0,"git+http:":!0};fc.exports.fromUrl=function(t,e){if(typeof t=="string"){var r=t+JSON.stringify(e||{});return pc.has(r)||pc.set(r,AL(t,e)),pc.get(r)}};function AL(t,e){if(!(t==null||t==="")){var r=LL(TL(t)?"github:"+t:t),i=xL(r),n=r.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/),s=Object.keys(Qy).map(function(o){try{var a=Qy[o],u=null;i.auth&&CL[i.protocol]&&(u=i.auth);var c=i.hash?decodeURIComponent(i.hash.substr(1)):null,l=null,f=null,h=null;if(n&&n[1]===o)l=n[2]&&decodeURIComponent(n[2]),f=decodeURIComponent(n[3].replace(/\.git$/,"")),h="shortcut";else{if(i.host&&i.host!==a.domain&&i.host.replace(/^www[.]/,"")!==a.domain||!a.protocols_re.test(i.protocol)||!i.path)return;var y=a.pathmatch,m=i.path.match(y);if(!m)return;m[1]!==null&&m[1]!==void 0&&(l=decodeURIComponent(m[1].replace(/^:/,""))),f=decodeURIComponent(m[2]),h=_L(i.protocol)}return new SL(o,l,u,f,c,h,e)}catch(p){if(!(p instanceof URIError))throw p}}).filter(function(o){return o});if(s.length===1)return s[0]}}function TL(t){return/^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(t)}function LL(t){var e=hc.parse(t);return e.protocol==="gist:"&&e.host&&!e.path?e.protocol+"/"+e.host:t}function xL(t){var e=t.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/);if(!e){var r=hc.parse(t);if(r.auth){let n=t.match(/[^@]+@[^:/]+/);if(n){var i=new hc.URL(n[0]);r.auth=i.username||"",i.password&&(r.auth+=":"+i.password)}}return r}return{protocol:"git+ssh:",slashes:!0,auth:e[1],host:e[2],port:null,hostname:e[2],hash:e[4],search:null,query:null,pathname:"/"+e[3],path:"/"+e[3],href:"git+ssh://"+e[1]+"@"+e[2]+"/"+e[3]+(e[4]||"")}}});var rv=d((Lk,tv)=>{tv.exports=NL;function NL(t){if(!!t&&t!=="ERROR: No README data found!"){t=t.trim().split(` `);for(var e=0;t[e]&&t[e].trim().match(/^(#|$)/);e++);for(var r=t.length,i=e+1;i{iv.exports={topLevel:{dependancies:"dependencies",dependecies:"dependencies",depdenencies:"dependencies",devEependencies:"devDependencies",depends:"dependencies","dev-dependencies":"devDependencies",devDependences:"devDependencies",devDepenencies:"devDependencies",devdependencies:"devDependencies",repostitory:"repository",repo:"repository",prefereGlobal:"preferGlobal",hompage:"homepage",hampage:"homepage",autohr:"author",autor:"author",contributers:"contributors",publicationConfig:"publishConfig",script:"scripts"},bugs:{web:"url",name:"url"},script:{server:"start",tests:"test"}}});var uv=d((Ik,sv)=>{var ov=Wy(),IL=xu(),go=ev(),PL=Uu().isCore,DL=["dependencies","devDependencies","optionalDependencies"],FL=rv(),dc=require("url"),pr=nv(),Nk=sv.exports={warn:function(){},fixRepositoryField:function(t){if(t.repositories&&(this.warn("repositories"),t.repository=t.repositories[0]),!t.repository)return this.warn("missingRepository");typeof t.repository=="string"&&(t.repository={type:"git",url:t.repository});var e=t.repository.url||"";if(e){var r=go.fromUrl(e);r&&(e=t.repository.url=r.getDefaultRepresentation()=="shortcut"?r.https():r.toString())}e.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)&&this.warn("brokenGitUrl",e)},fixTypos:function(t){Object.keys(pr.topLevel).forEach(function(e){t.hasOwnProperty(e)&&this.warn("typo",e,pr.topLevel[e])},this)},fixScriptsField:function(t){if(!!t.scripts){if(typeof t.scripts!="object"){this.warn("nonObjectScripts"),delete t.scripts;return}Object.keys(t.scripts).forEach(function(e){typeof t.scripts[e]!="string"?(this.warn("nonStringScript"),delete t.scripts[e]):pr.script[e]&&!t.scripts[pr.script[e]]&&this.warn("typo",e,pr.script[e],"scripts")},this)}},fixFilesField:function(t){var e=t.files;e&&!Array.isArray(e)?(this.warn("nonArrayFiles"),delete t.files):t.files&&(t.files=t.files.filter(function(r){return!r||typeof r!="string"?(this.warn("invalidFilename",r),!1):!0},this))},fixBinField:function(t){if(!!t.bin&&typeof t.bin=="string"){var e={},r;(r=t.name.match(/^@[^/]+[/](.*)$/))?e[r[1]]=t.bin:e[t.name]=t.bin,t.bin=e}},fixManField:function(t){!t.man||typeof t.man=="string"&&(t.man=[t.man])},fixBundleDependenciesField:function(t){var e="bundledDependencies",r="bundleDependencies";t[e]&&!t[r]&&(t[r]=t[e],delete t[e]),t[r]&&!Array.isArray(t[r])?(this.warn("nonArrayBundleDependencies"),delete t[r]):t[r]&&(t[r]=t[r].filter(function(i){return!i||typeof i!="string"?(this.warn("nonStringBundleDependency",i),!1):(t.dependencies||(t.dependencies={}),t.dependencies.hasOwnProperty(i)||(this.warn("nonDependencyBundleDependency",i),t.dependencies[i]="*"),!0)},this))},fixDependencies:function(t,e){var r=!e;ML(t,this.warn),$L(t,this.warn),this.fixBundleDependenciesField(t),["dependencies","devDependencies"].forEach(function(i){if(i in t){if(!t[i]||typeof t[i]!="object"){this.warn("nonObjectDependencies",i),delete t[i];return}Object.keys(t[i]).forEach(function(n){var s=t[i][n];typeof s!="string"&&(this.warn("nonStringDependency",n,JSON.stringify(s)),delete t[i][n]);var o=go.fromUrl(t[i][n]);o&&(t[i][n]=o.toString())},this)}},this)},fixModulesField:function(t){t.modules&&(this.warn("deprecatedModules"),delete t.modules)},fixKeywordsField:function(t){typeof t.keywords=="string"&&(t.keywords=t.keywords.split(/,\s+/)),t.keywords&&!Array.isArray(t.keywords)?(delete t.keywords,this.warn("nonArrayKeywords")):t.keywords&&(t.keywords=t.keywords.filter(function(e){return typeof e!="string"||!e?(this.warn("nonStringKeyword"),!1):!0},this))},fixVersionField:function(t,e){var r=!e;if(!t.version)return t.version="",!0;if(!ov.valid(t.version,r))throw new Error('Invalid version: "'+t.version+'"');return t.version=ov.clean(t.version,r),!0},fixPeople:function(t){av(t,qL),av(t,jL)},fixNameField:function(t,e){typeof e=="boolean"?e={strict:e}:typeof e=="undefined"&&(e={});var r=e.strict;if(!t.name&&!r){t.name="";return}if(typeof t.name!="string")throw new Error("name field must be a string.");r||(t.name=t.name.trim()),kL(t.name,r,e.allowLegacyCase),PL(t.name)&&this.warn("conflictingName",t.name)},fixDescriptionField:function(t){t.description&&typeof t.description!="string"&&(this.warn("nonStringDescription"),delete t.description),t.readme&&!t.description&&(t.description=FL(t.readme)),t.description===void 0&&delete t.description,t.description||this.warn("missingDescription")},fixReadmeField:function(t){t.readme||(this.warn("missingReadme"),t.readme="ERROR: No README data found!")},fixBugsField:function(t){if(!t.bugs&&t.repository&&t.repository.url){var e=go.fromUrl(t.repository.url);e&&e.bugs()&&(t.bugs={url:e.bugs()})}else if(t.bugs){var r=/^.+@.*\..+$/;if(typeof t.bugs=="string")r.test(t.bugs)?t.bugs={email:t.bugs}:dc.parse(t.bugs).protocol?t.bugs={url:t.bugs}:this.warn("nonEmailUrlBugsString");else{BL(t.bugs,this.warn);var i=t.bugs;t.bugs={},i.url&&(typeof i.url=="string"&&dc.parse(i.url).protocol?t.bugs.url=i.url:this.warn("nonUrlBugsUrlField")),i.email&&(typeof i.email=="string"&&r.test(i.email)?t.bugs.email=i.email:this.warn("nonEmailBugsEmailField"))}!t.bugs.email&&!t.bugs.url&&(delete t.bugs,this.warn("emptyNormalizedBugs"))}},fixHomepageField:function(t){if(!t.homepage&&t.repository&&t.repository.url){var e=go.fromUrl(t.repository.url);e&&e.docs()&&(t.homepage=e.docs())}if(!!t.homepage){if(typeof t.homepage!="string")return this.warn("nonUrlHomepage"),delete t.homepage;dc.parse(t.homepage).protocol||(t.homepage="http://"+t.homepage)}},fixLicenseField:function(t){if(t.license)typeof t.license!="string"||t.license.length<1||t.license.trim()===""?this.warn("invalidLicense"):IL(t.license).validForNewPackages||this.warn("invalidLicense");else return this.warn("missingLicense")}};function UL(t){if(t.charAt(0)!=="@")return!1;var e=t.slice(1).split("/");return e.length!==2?!1:e[0]&&e[1]&&e[0]===encodeURIComponent(e[0])&&e[1]===encodeURIComponent(e[1])}function GL(t){return!t.match(/[\/@\s\+%:]/)&&t===encodeURIComponent(t)}function kL(t,e,r){if(t.charAt(0)==="."||!(UL(t)||GL(t))||e&&!r&&t!==t.toLowerCase()||t.toLowerCase()==="node_modules"||t.toLowerCase()==="favicon.ico")throw new Error("Invalid name: "+JSON.stringify(t))}function av(t,e){return t.author&&(t.author=e(t.author)),["maintainers","contributors"].forEach(function(r){!Array.isArray(t[r])||(t[r]=t[r].map(e))}),t}function qL(t){if(typeof t=="string")return t;var e=t.name||"",r=t.url||t.web,i=r?" ("+r+")":"",n=t.email||t.mail,s=n?" <"+n+">":"";return e+s+i}function jL(t){if(typeof t!="string")return t;var e=t.match(/^([^\(<]+)/),r=t.match(/\(([^\)]+)\)/),i=t.match(/<([^>]+)>/),n={};return e&&e[0].trim()&&(n.name=e[0].trim()),i&&(n.email=i[1]),r&&(n.url=r[1]),n}function $L(t,e){var r=t.optionalDependencies;if(!!r){var i=t.dependencies||{};Object.keys(r).forEach(function(n){i[n]=r[n]}),t.dependencies=i}}function zL(t,e,r){if(!t)return{};if(typeof t=="string"&&(t=t.trim().split(/[\n\r\s\t ,]+/)),!Array.isArray(t))return t;r("deprecatedArrayDependencies",e);var i={};return t.filter(function(n){return typeof n=="string"}).forEach(function(n){n=n.trim().split(/(:?[@\s><=])/);var s=n.shift(),o=n.join("");o=o.trim(),o=o.replace(/^@/,""),i[s]=o}),i}function ML(t,e){DL.forEach(function(r){!t[r]||(t[r]=zL(t[r],r,e))})}function BL(t,e){!t||Object.keys(t).forEach(function(r){pr.bugs[r]&&(e("typo",r,pr.bugs[r],"bugs"),t[pr.bugs[r]]=t[r],delete t[r])})}});var lv=d((Pk,cv)=>{cv.exports={repositories:"'repositories' (plural) Not supported. Please pick one as the 'repository' field",missingRepository:"No repository field.",brokenGitUrl:"Probably broken git url: %s",nonObjectScripts:"scripts must be an object",nonStringScript:"script values must be string commands",nonArrayFiles:"Invalid 'files' member",invalidFilename:"Invalid filename in 'files' list: %s",nonArrayBundleDependencies:"Invalid 'bundleDependencies' list. Must be array of package names",nonStringBundleDependency:"Invalid bundleDependencies member: %s",nonDependencyBundleDependency:"Non-dependency in bundleDependencies: %s",nonObjectDependencies:"%s field must be an object",nonStringDependency:"Invalid dependency: %s %s",deprecatedArrayDependencies:"specifying %s as array is deprecated",deprecatedModules:"modules field is deprecated",nonArrayKeywords:"keywords should be an array of strings",nonStringKeyword:"keywords should be an array of strings",conflictingName:"%s is also the name of a node core module.",nonStringDescription:"'description' field should be a string",missingDescription:"No description",missingReadme:"No README data",missingLicense:"No license field.",nonEmailUrlBugsString:"Bug string field must be url, email, or {email,url}",nonUrlBugsUrlField:"bugs.url field must be a string url. Deleted.",nonEmailBugsEmailField:"bugs.email field must be a string email. Deleted.",emptyNormalizedBugs:"Normalized value of bugs field is an empty object. Deleted.",nonUrlHomepage:"homepage field must be a string url. Deleted.",invalidLicense:"license should be a valid SPDX license expression",typo:"%s should probably be %s."}});var pv=d((Dk,fv)=>{var hv=require("util"),mc=lv();fv.exports=function(){var t=Array.prototype.slice.call(arguments,0),e=t.shift();if(e=="typo")return HL.apply(null,t);var r=mc[e]?mc[e]:e+": '%s'";return t.unshift(r),hv.format.apply(null,t)};function HL(t,e,r){return r&&(t=r+"['"+t+"']",e=r+"['"+e+"']"),hv.format(mc.typo,t,e)}});var yv=d((Fk,dv)=>{dv.exports=mv;var gc=uv();mv.fixer=gc;var WL=pv(),VL=["name","version","description","repository","modules","scripts","files","bin","man","bugs","keywords","readme","homepage","license"],YL=["dependencies","people","typos"],yc=VL.map(function(t){return gv(t)+"Field"});yc=yc.concat(YL);function mv(t,e,r){e===!0&&(e=null,r=!0),r||(r=!1),(!e||t.private)&&(e=function(i){}),t.scripts&&t.scripts.install==="node-gyp rebuild"&&!t.scripts.preinstall&&(t.gypfile=!0),gc.warn=function(){e(WL.apply(null,arguments))},yc.forEach(function(i){gc["fix"+gv(i)](t,r)}),t._id=t.name+"@"+t.version}function gv(t){return t.charAt(0).toUpperCase()+t.slice(1)}});var vv=d((kk,Wn)=>{"use strict";var XL=require("path"),KL=zh(),ZL=Qh(),JL=pp(),QL=$a(),ex=vp(),tx=bp(),rx=Ap(),ix=V0(),nx=K0(),sx=yv();delete require.cache[__filename];var ox=XL.dirname(Wn.parent&&Wn.parent.filename?Wn.parent.filename:"."),ax=(t,e,r,i)=>{let n=e[t],s=!0;if(typeof n.isRequired=="function"&&(s=n.isRequired(r,i),typeof s!="boolean"))throw new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof s} was returned.`);return typeof r[t]=="undefined"?s:n.isMultiple&&r[t].length===0},ux=(t,e,r)=>{let i=[];if(typeof t=="undefined")return[];for(let n of Object.keys(t))t[n].isRequired&&ax(n,t,e,r)&&i.push({key:n,...t[n]});return i},cx=t=>{console.error(`Missing required flag${t.length>1?"s":""}`);for(let e of t)console.error(` --${QL(e.key,"-")}${e.alias?`, -${e.alias}`:""}`)},lx=({flags:t})=>{let e=Object.keys(t).filter(r=>r.includes("-")&&r!=="--");if(e.length>0)throw new Error(`Flag keys may not contain '-': ${e.join(", ")}`)},fx=t=>{console.error([`Unknown flag${t.length>1?"s":""}`,...t].join(` `))},hx=({flags:t,booleanDefault:e})=>{let r={};for(let[i,n]of Object.entries(t)){let s={...n};typeof e!="undefined"&&s.type==="boolean"&&!Object.prototype.hasOwnProperty.call(s,"default")&&(s.default=s.isMultiple?[e]:e),s.isMultiple&&(s.type=s.type?`${s.type}-array`:"array",s.default=s.default||[],delete s.isMultiple),r[i]=s}return r},px=(t,e)=>{for(let[r,i]of Object.entries(e.flags))if(r!=="--"&&!i.isMultiple&&Array.isArray(t[r]))throw new Error(`The flag --${r} can only be set once.`)},dx=(t,e)=>{typeof t!="string"&&(e=t,t="");let r=ix.sync({cwd:ox,normalize:!1});e={pkg:r?r.packageJson:{},argv:process.argv.slice(2),flags:{},inferType:!1,input:"string",help:t,autoHelp:!0,autoVersion:!0,booleanDefault:!1,hardRejection:!0,allowUnknownFlags:!0,...e},e.hardRejection&&nx(),lx(e);let i={arguments:e.input,...hx(e)};i=ex(i,"-",{exclude:["stopEarly","--"]}),e.inferType&&delete i.arguments,i=KL(i),i.configuration={...i.configuration,"greedy-arrays":!1},i["--"]&&(i.configuration["populate--"]=!0),e.allowUnknownFlags||(i.configuration["unknown-options-as-args"]=!0);let{pkg:n}=e,s=ZL(e.argv,i),o=rx(tx((e.help||"").replace(/\t+\n*$/,"")),2);sx(n),process.title=n.bin?Object.keys(n.bin)[0]:n.name;let{description:a}=e;!a&&a!==!1&&({description:a}=n),o=(a?` ${a} @@ -21,19 +21,19 @@ ${o} `:` `);let u=m=>{console.log(o),process.exit(typeof m=="number"?m:2)},c=()=>{console.log(typeof e.version=="string"?e.version:n.version),process.exit(0)};s._.length===0&&e.argv.length===1&&(s.version===!0&&e.autoVersion&&c(),s.help===!0&&e.autoHelp&&u(0));let l=s._;if(delete s._,!e.allowUnknownFlags){let m=l.filter(p=>typeof p=="string"&&p.startsWith("-"));m.length>0&&(fx(m),process.exit(2))}let f=JL(s,{exclude:["--",/^\w$/]}),h={...f};px(f,e);for(let m of Object.values(e.flags))delete f[m.alias];let y=ux(e.flags,f,l);return y.length>0&&(cx(y),process.exit(2)),{input:l,flags:f,unnormalizedFlags:h,pkg:n,help:o,showHelp:u,showVersion:c}};Wn.exports=dx});var Pi=d((jk,Ev)=>{"use strict";var wv=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);Ev.exports=t=>t?Object.keys(t).map(e=>[wv.has(e)?wv.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var Di=d(($k,Sv)=>{"use strict";var gx=require("events"),Ov=require("stream"),Vn=ec(),Rv=require("string_decoder").StringDecoder,Ht=Symbol("EOF"),Yn=Symbol("maybeEmitEnd"),dr=Symbol("emittedEnd"),yo=Symbol("emittingEnd"),vo=Symbol("closed"),_v=Symbol("read"),bc=Symbol("flush"),Cv=Symbol("flushChunk"),Je=Symbol("encoding"),Wt=Symbol("decoder"),bo=Symbol("flowing"),Xn=Symbol("paused"),Kn=Symbol("resume"),Ge=Symbol("bufferLength"),Av=Symbol("bufferPush"),Ec=Symbol("bufferShift"),ke=Symbol("objectMode"),qe=Symbol("destroyed"),Tv=global._MP_NO_ITERATOR_SYMBOLS_!=="1",yx=Tv&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),vx=Tv&&Symbol.iterator||Symbol("iterator not implemented"),Lv=t=>t==="end"||t==="finish"||t==="prefinish",bx=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,Ex=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);Sv.exports=class xv extends Ov{constructor(e){super();this[bo]=!1,this[Xn]=!1,this.pipes=new Vn,this.buffer=new Vn,this[ke]=e&&e.objectMode||!1,this[ke]?this[Je]=null:this[Je]=e&&e.encoding||null,this[Je]==="buffer"&&(this[Je]=null),this[Wt]=this[Je]?new Rv(this[Je]):null,this[Ht]=!1,this[dr]=!1,this[yo]=!1,this[vo]=!1,this.writable=!0,this.readable=!0,this[Ge]=0,this[qe]=!1}get bufferLength(){return this[Ge]}get encoding(){return this[Je]}set encoding(e){if(this[ke])throw new Error("cannot set encoding in objectMode");if(this[Je]&&e!==this[Je]&&(this[Wt]&&this[Wt].lastNeed||this[Ge]))throw new Error("cannot change encoding");this[Je]!==e&&(this[Wt]=e?new Rv(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Wt].write(r)))),this[Je]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[ke]}set objectMode(e){this[ke]=this[ke]||!!e}write(e,r,i){if(this[Ht])throw new Error("write after end");return this[qe]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[ke]&&!Buffer.isBuffer(e)&&(Ex(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):bx(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[Ge]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[ke]&&!(r===this[Je]&&!this[Wt].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Je]&&(e=this[Wt].write(e)),this.flowing?(this[Ge]!==0&&this[bc](!0),this.emit("data",e)):this[Av](e),this[Ge]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[qe])return null;try{return this[Ge]===0||e===0||e>this[Ge]?null:(this[ke]&&(e=null),this.buffer.length>1&&!this[ke]&&(this.encoding?this.buffer=new Vn([Array.from(this.buffer).join("")]):this.buffer=new Vn([Buffer.concat(Array.from(this.buffer),this[Ge])])),this[_v](e||null,this.buffer.head.value))}finally{this[Yn]()}}[_v](e,r){return e===r.length||e===null?this[Ec]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[Ge]-=e),this.emit("data",r),!this.buffer.length&&!this[Ht]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[Ht]=!0,this.writable=!1,(this.flowing||!this[Xn])&&this[Yn](),this}[Kn](){this[qe]||(this[Xn]=!1,this[bo]=!0,this.emit("resume"),this.buffer.length?this[bc]():this[Ht]?this[Yn]():this.emit("drain"))}resume(){return this[Kn]()}pause(){this[bo]=!1,this[Xn]=!0}get destroyed(){return this[qe]}get flowing(){return this[bo]}get paused(){return this[Xn]}[Av](e){return this[ke]?this[Ge]+=1:this[Ge]+=e.length,this.buffer.push(e)}[Ec](){return this.buffer.length&&(this[ke]?this[Ge]-=1:this[Ge]-=this.buffer.head.value.length),this.buffer.shift()}[bc](e){do;while(this[Cv](this[Ec]()));!e&&!this.buffer.length&&!this[Ht]&&this.emit("drain")}[Cv](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[qe])return;let i=this[dr];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[Kn]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[Kn](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[Kn]():Lv(e)&&this[dr]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[dr]}[Yn](){!this[yo]&&!this[dr]&&!this[qe]&&this.buffer.length===0&&this[Ht]&&(this[yo]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[vo]&&this.emit("close"),this[yo]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==qe&&this[qe])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[dr]===!0)return;this[dr]=!0,this.readable=!1,this[Wt]&&(r=this[Wt].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[vo]=!0,!this[dr]&&!this[qe]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[ke]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[ke]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[ke]?Promise.reject(new Error("cannot concat in objectMode")):this[Je]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(qe,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[yx](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Ht])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[Ht]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},u=()=>s(new Error("stream destroyed"));return new Promise((c,l)=>{n=l,i=c,this.once(qe,u),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[vx](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[qe]?(e?this.emit("error",e):this.emit(qe),this):(this[qe]=!0,this.buffer=new Vn,this[Ge]=0,typeof this.close=="function"&&!this[vo]&&this.close(),e?this.emit("error",e):this.emit(qe),this)}static isStream(e){return!!e&&(e instanceof xv||e instanceof Ov||e instanceof gx&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Iv=d((Mk,Nv)=>{var wx=require("zlib").constants||{ZLIB_VERNUM:4736};Nv.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},wx))});var Lc=d(it=>{"use strict";var wc=require("assert"),mr=require("buffer").Buffer,Pv=require("zlib"),Vr=it.constants=Iv(),Sx=Di(),Dv=mr.concat,Yr=Symbol("_superWrite"),Zn=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Ox=Symbol("opts"),Jn=Symbol("flushFlag"),Fv=Symbol("finishFlushFlag"),Sc=Symbol("fullFlushFlag"),ue=Symbol("handle"),Eo=Symbol("onError"),Fi=Symbol("sawError"),Oc=Symbol("level"),Rc=Symbol("strategy"),_c=Symbol("ended"),Bk=Symbol("_defaultFullFlush"),Cc=class extends Sx{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[Fi]=!1,this[_c]=!1,this[Ox]=e,this[Jn]=e.flush,this[Fv]=e.finishFlush;try{this[ue]=new Pv[r](e)}catch(i){throw new Zn(i)}this[Eo]=i=>{this[Fi]||(this[Fi]=!0,this.close(),this.emit("error",i))},this[ue].on("error",i=>this[Eo](new Zn(i))),this.once("end",()=>this.close)}close(){this[ue]&&(this[ue].close(),this[ue]=null,this.emit("close"))}reset(){if(!this[Fi])return wc(this[ue],"zlib binding closed"),this[ue].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[Sc]),this.write(Object.assign(mr.alloc(0),{[Jn]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[Fv]),this[_c]=!0,super.end(null,null,i)}get ended(){return this[_c]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=mr.from(e,r)),this[Fi])return;wc(this[ue],"zlib binding closed");let n=this[ue]._handle,s=n.close;n.close=()=>{};let o=this[ue].close;this[ue].close=()=>{},mr.concat=c=>c;let a;try{let c=typeof e[Jn]=="number"?e[Jn]:this[Jn];a=this[ue]._processChunk(e,c),mr.concat=Dv}catch(c){mr.concat=Dv,this[Eo](new Zn(c))}finally{this[ue]&&(this[ue]._handle=n,n.close=s,this[ue].close=o,this[ue].removeAllListeners("error"))}this[ue]&&this[ue].on("error",c=>this[Eo](new Zn(c)));let u;if(a)if(Array.isArray(a)&&a.length>0){u=this[Yr](mr.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[ue].params(e,r)}finally{this[ue].flush=i}this[ue]&&(this[Oc]=e,this[Rc]=r)}}}},kv=class extends gr{constructor(e){super(e,"Deflate")}},qv=class extends gr{constructor(e){super(e,"Inflate")}},Ac=Symbol("_portable"),jv=class extends gr{constructor(e){super(e,"Gzip");this[Ac]=e&&!!e.portable}[Yr](e){return this[Ac]?(this[Ac]=!1,e[9]=255,super[Yr](e)):super[Yr](e)}},$v=class extends gr{constructor(e){super(e,"Gunzip")}},Mv=class extends gr{constructor(e){super(e,"DeflateRaw")}},Bv=class extends gr{constructor(e){super(e,"InflateRaw")}},Uv=class extends gr{constructor(e){super(e,"Unzip")}},Tc=class extends Cc{constructor(e,r){e=e||{},e.flush=e.flush||Vr.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Vr.BROTLI_OPERATION_FINISH,super(e,r),this[Sc]=Vr.BROTLI_OPERATION_FLUSH}},Gv=class extends Tc{constructor(e){super(e,"BrotliCompress")}},zv=class extends Tc{constructor(e){super(e,"BrotliDecompress")}};it.Deflate=kv;it.Inflate=qv;it.Gzip=jv;it.Gunzip=$v;it.DeflateRaw=Mv;it.InflateRaw=Bv;it.Unzip=Uv;typeof Pv.BrotliCompress=="function"?(it.BrotliCompress=Gv,it.BrotliDecompress=zv):it.BrotliCompress=it.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var wo=d((zk,Hv)=>{"use strict";var Rx=Di(),xc=Symbol("slurp");Hv.exports=class extends Rx{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[xc](r),i&&this[xc](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[xc](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var Nc=d(So=>{"use strict";So.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);So.code=new Map(Array.from(So.name).map(t=>[t[1],t[0]]))});var Xv=d((Wk,Wv)=>{"use strict";var Ax=(t,e)=>{if(Number.isSafeInteger(t))t<0?Cx(t,e):_x(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},_x=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Cx=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=Vv(n):n===0?e[i-1]=0:(r=!0,e[i-1]=Yv(n))}},xx=t=>{let e=t[0],r=e===128?Lx(t.slice(1,t.length)):e===255?Tx(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},Tx=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=Vv(s):s===0?o=s:(i=!0,o=Yv(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},Lx=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},Vv=t=>(255^t)&255,Yv=t=>(255^t)+1&255;Wv.exports={encode:Ax,parse:xx}});var qi=d((Vk,Kv)=>{"use strict";var Ic=Nc(),ki=require("path").posix,Zv=Xv(),Pc=Symbol("slurp"),nt=Symbol("type"),Jv=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[nt]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Xr(e,r,100),this.mode=yr(e,r+100,8),this.uid=yr(e,r+108,8),this.gid=yr(e,r+116,8),this.size=yr(e,r+124,12),this.mtime=Dc(e,r+136,12),this.cksum=yr(e,r+148,12),this[Pc](i),this[Pc](n,!0),this[nt]=Xr(e,r+156,1),this[nt]===""&&(this[nt]="0"),this[nt]==="0"&&this.path.substr(-1)==="/"&&(this[nt]="5"),this[nt]==="5"&&(this.size=0),this.linkpath=Xr(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Xr(e,r+265,32),this.gname=Xr(e,r+297,32),this.devmaj=yr(e,r+329,8),this.devmin=yr(e,r+337,8),e[r+475]!==0){let o=Xr(e,r+345,155);this.path=o+"/"+this.path}else{let o=Xr(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=Dc(e,r+476,12),this.ctime=Dc(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=Nx(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=Kr(e,r,100,s)||this.needPax,this.needPax=vr(e,r+100,8,this.mode)||this.needPax,this.needPax=vr(e,r+108,8,this.uid)||this.needPax,this.needPax=vr(e,r+116,8,this.gid)||this.needPax,this.needPax=vr(e,r+124,12,this.size)||this.needPax,this.needPax=Fc(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[nt].charCodeAt(0),this.needPax=Kr(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Kr(e,r+265,32,this.uname)||this.needPax,this.needPax=Kr(e,r+297,32,this.gname)||this.needPax,this.needPax=vr(e,r+329,8,this.devmaj)||this.needPax,this.needPax=vr(e,r+337,8,this.devmin)||this.needPax,this.needPax=Kr(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=Kr(e,r+345,155,o)||this.needPax:(this.needPax=Kr(e,r+345,130,o)||this.needPax,this.needPax=Fc(e,r+476,12,this.atime)||this.needPax,this.needPax=Fc(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let u=r;u{let r=100,i=t,n="",s,o=ki.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=ki.join(ki.basename(n),i),n=ki.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},Xr=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),Dc=(t,e,r)=>Ix(yr(t,e,r)),Ix=t=>t===null?null:new Date(t*1e3),yr=(t,e,r)=>t[e]&128?Zv.parse(t.slice(e,e+r)):Px(t,e,r),Dx=t=>isNaN(t)?null:t,Px=(t,e,r)=>Dx(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Fx={12:8589934591,8:2097151},vr=(t,e,r,i)=>i===null?!1:i>Fx[r]||i<0?(Zv.encode(i,t.slice(e,e+r)),!0):(kx(t,e,r,i),!1),kx=(t,e,r,i)=>t.write(qx(i,r),e,r,"ascii"),qx=(t,e)=>jx(Math.floor(t).toString(8),e),jx=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",Fc=(t,e,r,i)=>i===null?!1:vr(t,e,r,i.getTime()/1e3),$x=new Array(156).join("\0"),Kr=(t,e,r,i)=>i===null?!1:(t.write(i+$x,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);Kv.exports=Jv});var Ro=d((Yk,Qv)=>{"use strict";var Mx=qi(),Bx=require("path"),Oo=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new Mx({path:("PaxHeader/"+Bx.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Oo.parse=(t,e,r)=>new Oo(Ux(Gx(t),e),r);var Ux=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,Gx=t=>t.replace(/\n$/,"").split(` -`).reduce(zx,Object.create(null)),zx=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};Qv.exports=Oo});var _o=d((Xk,e1)=>{"use strict";e1.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var qc=d((Kk,t1)=>{"use strict";var Co=["|","<",">","?",":"],kc=Co.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Hx=new Map(Co.map((t,e)=>[t,kc[e]])),Wx=new Map(kc.map((t,e)=>[t,Co[e]]));t1.exports={encode:t=>Co.reduce((e,r)=>e.split(r).join(Hx.get(r)),t),decode:t=>kc.reduce((e,r)=>e.split(r).join(Wx.get(r)),t)}});var i1=d((Zk,r1)=>{"use strict";r1.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var zc=d((eq,n1)=>{"use strict";var s1=Di(),o1=Ro(),a1=qi(),Lt=require("fs"),ji=require("path"),Vx=16*1024*1024,u1=Symbol("process"),c1=Symbol("file"),l1=Symbol("directory"),jc=Symbol("symlink"),f1=Symbol("hardlink"),Qn=Symbol("header"),Ao=Symbol("read"),$c=Symbol("lstat"),To=Symbol("onlstat"),Mc=Symbol("onread"),Bc=Symbol("onreadlink"),Uc=Symbol("openfile"),Gc=Symbol("onopenfile"),Zr=Symbol("close"),Lo=Symbol("mode"),h1=_o(),Yx=qc(),p1=i1(),xo=h1(class extends s1{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Vx,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&ji.win32.isAbsolute(e)){let n=ji.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Yx.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||ji.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[To](this.statCache.get(this.absolute)):this[$c]()}[$c](){Lt.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[To](r)})}[To](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Xx(e),this.emit("stat",e),this[u1]()}[u1](){switch(this.type){case"File":return this[c1]();case"Directory":return this[l1]();case"SymbolicLink":return this[jc]();default:return this.end()}}[Lo](e){return p1(e,this.type==="Directory",this.portable)}[Qn](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new a1({path:this.path,linkpath:this.linkpath,mode:this[Lo](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new o1({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[l1](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Qn](),this.end()}[jc](){Lt.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Bc](r)})}[Bc](e){this.linkpath=e.replace(/\\/g,"/"),this[Qn](),this.end()}[f1](e){this.type="Link",this.linkpath=ji.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[Qn](),this.end()}[c1](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[f1](r)}this.linkCache.set(e,this.absolute)}if(this[Qn](),this.stat.size===0)return this.end();this[Uc]()}[Uc](){Lt.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[Gc](r)})}[Gc](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Ao](e,n,0,n.length,0,this.stat.size,r)}[Ao](e,r,i,n,s,o,a){Lt.read(e,r,i,n,s,(u,c)=>{if(u)return this[Zr](e,()=>this.emit("error",u));this[Mc](e,r,i,n,s,o,a,c)})}[Zr](e,r){Lt.close(e,r)}[Mc](e,r,i,n,s,o,a,u){if(u<=0&&o>0){let l=new Error("encountered unexpected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u>o){let l=new Error("did not encounter expected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u===o)for(let l=u;ll?this.emit("error",l):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Ao](e,r,i,n,s,o,a)}}),d1=class extends xo{[$c](){this[To](Lt.lstatSync(this.absolute))}[jc](){this[Bc](Lt.readlinkSync(this.absolute))}[Uc](){this[Gc](Lt.openSync(this.absolute,"r"))}[Ao](e,r,i,n,s,o,a){let u=!0;try{let c=Lt.readSync(e,r,i,n,s);this[Mc](e,r,i,n,s,o,a,c),u=!1}finally{if(u)try{this[Zr](e,()=>{})}catch(c){}}}[Zr](e,r){Lt.closeSync(e),r()}},Kx=h1(class extends s1{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[Lo](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(ji.isAbsolute(this.path)&&!this.preservePaths){let n=ji.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new a1({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new o1({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[Lo](e){return p1(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});xo.Sync=d1;xo.Tar=Kx;var Xx=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";n1.exports=xo});var g1=d((tq,m1)=>{"use strict";m1.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Hc=d((rq,y1)=>{"use strict";y1.exports=X;X.Node=Jr;X.create=X;function X(t){var e=this;if(e instanceof X||(e=new X),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};X.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};X.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};X.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};X.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new X;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};X.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Wc=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},eN=Di(),tN=Lc(),rN=wo(),Vc=zc(),iN=Vc.Sync,nN=Vc.Tar,sN=Hc(),b1=Buffer.alloc(1024),No=Symbol("onStat"),Io=Symbol("ended"),xt=Symbol("queue"),$i=Symbol("current"),Qr=Symbol("process"),Po=Symbol("processing"),E1=Symbol("processJob"),Nt=Symbol("jobs"),Yc=Symbol("jobDone"),Do=Symbol("addFSEntry"),w1=Symbol("addTarEntry"),Xc=Symbol("stat"),Kc=Symbol("readdir"),Fo=Symbol("onreaddir"),ko=Symbol("pipe"),S1=Symbol("entry"),Zc=Symbol("entryOpt"),Jc=Symbol("writeEntryClass"),O1=Symbol("write"),Qc=Symbol("ondrain"),qo=require("fs"),R1=require("path"),oN=_o(),el=oN(class extends eN{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[Jc]=Vc,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new tN.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[Qc]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[Qc]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[xt]=new sN,this[Nt]=0,this.jobs=+e.jobs||4,this[Po]=!1,this[Io]=!1}[O1](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Io]=!0,this[Qr](),this}write(e){if(this[Io])throw new Error("write after end");return e instanceof rN?this[w1](e):this[Do](e),this.flowing}[w1](e){let r=R1.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new Wc(e.path,r,!1);i.entry=new nN(e,this[Zc](i)),i.entry.on("end",n=>this[Yc](i)),this[Nt]+=1,this[xt].push(i)}this[Qr]()}[Do](e){let r=R1.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[xt].push(new Wc(e,r)),this[Qr]()}[Xc](e){e.pending=!0,this[Nt]+=1;let r=this.follow?"stat":"lstat";qo[r](e.absolute,(i,n)=>{e.pending=!1,this[Nt]-=1,i?this.emit("error",i):this[No](e,n)})}[No](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Qr]()}[Kc](e){e.pending=!0,this[Nt]+=1,qo.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[Nt]-=1,r)return this.emit("error",r);this[Fo](e,i)})}[Fo](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Qr]()}[Qr](){if(!this[Po]){this[Po]=!0;for(let e=this[xt].head;e!==null&&this[Nt]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[S1](e){this[Nt]+=1;try{return new this[Jc](e.path,this[Zc](e)).on("end",()=>this[Yc](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[Qc](){this[$i]&&this[$i].entry&&this[$i].entry.resume()}[ko](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Do](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),_1=class extends el{constructor(e){super(e);this[Jc]=iN}pause(){}resume(){}[Xc](e){let r=this.follow?"statSync":"lstatSync";this[No](e,qo[r](e.absolute))}[Kc](e,r){this[Fo](e,qo.readdirSync(e.absolute))}[ko](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Do](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[O1](n)})}};el.Sync=_1;v1.exports=el});var Vi=d(es=>{"use strict";var aN=Di(),uN=require("events").EventEmitter,Qe=require("fs"),tl=Qe.writev;if(!tl){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;tl=(r,i,n,s)=>{let o=(u,c)=>s(u,c,i),a=new e;a.oncomplete=o,t.writeBuffers(r,i,n,a)}}var Mi=Symbol("_autoClose"),_t=Symbol("_close"),ts=Symbol("_ended"),ne=Symbol("_fd"),C1=Symbol("_finished"),br=Symbol("_flags"),rl=Symbol("_flush"),il=Symbol("_handleChunk"),nl=Symbol("_makeBuf"),$o=Symbol("_mode"),Mo=Symbol("_needDrain"),Bi=Symbol("_onerror"),Ui=Symbol("_onopen"),sl=Symbol("_onread"),Gi=Symbol("_onwrite"),Er=Symbol("_open"),Vt=Symbol("_path"),ei=Symbol("_pos"),It=Symbol("_queue"),zi=Symbol("_read"),A1=Symbol("_readSize"),wr=Symbol("_reading"),Bo=Symbol("_remain"),T1=Symbol("_size"),Uo=Symbol("_write"),Hi=Symbol("_writing"),Go=Symbol("_defaultFlag"),Wi=Symbol("_errored"),ol=class extends aN{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Wi]=!1,this[ne]=typeof r.fd=="number"?r.fd:null,this[Vt]=e,this[A1]=r.readSize||16*1024*1024,this[wr]=!1,this[T1]=typeof r.size=="number"?r.size:Infinity,this[Bo]=this[T1],this[Mi]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ne]=="number"?this[zi]():this[Er]()}get fd(){return this[ne]}get path(){return this[Vt]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Er](){Qe.open(this[Vt],"r",(e,r)=>this[Ui](e,r))}[Ui](e,r){e?this[Bi](e):(this[ne]=r,this.emit("open",r),this[zi]())}[nl](){return Buffer.allocUnsafe(Math.min(this[A1],this[Bo]))}[zi](){if(!this[wr]){this[wr]=!0;let e=this[nl]();if(e.length===0)return process.nextTick(()=>this[sl](null,0,e));Qe.read(this[ne],e,0,e.length,null,(r,i,n)=>this[sl](r,i,n))}}[sl](e,r,i){this[wr]=!1,e?this[Bi](e):this[il](r,i)&&this[zi]()}[_t](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[Bi](e){this[wr]=!0,this[_t](),this.emit("error",e)}[il](e,r){let i=!1;return this[Bo]-=e,e>0&&(i=super.write(ethis[Ui](e,r))}[Ui](e,r){this[Go]&&this[br]==="r+"&&e&&e.code==="ENOENT"?(this[br]="w",this[Er]()):e?this[Bi](e):(this[ne]=r,this.emit("open",r),this[rl]())}end(e,r){return e&&this.write(e,r),this[ts]=!0,!this[Hi]&&!this[It].length&&typeof this[ne]=="number"&&this[Gi](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[ts]?(this.emit("error",new Error("write() after end()")),!1):this[ne]===null||this[Hi]||this[It].length?(this[It].push(e),this[Mo]=!0,!1):(this[Hi]=!0,this[Uo](e),!0)}[Uo](e){Qe.write(this[ne],e,0,e.length,this[ei],(r,i)=>this[Gi](r,i))}[Gi](e,r){e?this[Bi](e):(this[ei]!==null&&(this[ei]+=r),this[It].length?this[rl]():(this[Hi]=!1,this[ts]&&!this[C1]?(this[C1]=!0,this[_t](),this.emit("finish")):this[Mo]&&(this[Mo]=!1,this.emit("drain"))))}[rl](){if(this[It].length===0)this[ts]&&this[Gi](null,0);else if(this[It].length===1)this[Uo](this[It].pop());else{let e=this[It];this[It]=[],tl(this[ne],e,this[ei],(r,i)=>this[Gi](r,i))}}[_t](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},x1=class extends al{[Er](){let e;if(this[Go]&&this[br]==="r+")try{e=Qe.openSync(this[Vt],this[br],this[$o])}catch(r){if(r.code==="ENOENT")return this[br]="w",this[Er]();throw r}else e=Qe.openSync(this[Vt],this[br],this[$o]);this[Ui](null,e)}[_t](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.closeSync(e),this.emit("close")}}[Uo](e){let r=!0;try{this[Gi](null,Qe.writeSync(this[ne],e,0,e.length,this[ei])),r=!1}finally{if(r)try{this[_t]()}catch(i){}}}};es.ReadStream=ol;es.ReadStreamSync=L1;es.WriteStream=al;es.WriteStreamSync=x1});var Ko=d((aq,N1)=>{"use strict";var cN=_o(),lN=qi(),fN=require("events"),hN=Hc(),pN=1024*1024,dN=wo(),I1=Ro(),mN=Lc(),ul=Buffer.from([31,139]),ht=Symbol("state"),ti=Symbol("writeEntry"),Yt=Symbol("readEntry"),cl=Symbol("nextEntry"),P1=Symbol("processEntry"),pt=Symbol("extendedHeader"),rs=Symbol("globalExtendedHeader"),Sr=Symbol("meta"),D1=Symbol("emitMeta"),le=Symbol("buffer"),Xt=Symbol("queue"),ri=Symbol("ended"),F1=Symbol("emittedEnd"),ii=Symbol("emit"),et=Symbol("unzip"),zo=Symbol("consumeChunk"),Ho=Symbol("consumeChunkSub"),ll=Symbol("consumeBody"),k1=Symbol("consumeMeta"),q1=Symbol("consumeHeader"),Wo=Symbol("consuming"),fl=Symbol("bufferConcat"),hl=Symbol("maybeEnd"),is=Symbol("writing"),Or=Symbol("aborted"),Vo=Symbol("onDone"),ni=Symbol("sawValidEntry"),Yo=Symbol("sawNullBlock"),Xo=Symbol("sawEOF"),gN=t=>!0;N1.exports=cN(class extends fN{constructor(e){e=e||{},super(e),this.file=e.file||"",this[ni]=null,this.on(Vo,r=>{(this[ht]==="begin"||this[ni]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Vo,e.ondone):this.on(Vo,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||pN,this.filter=typeof e.filter=="function"?e.filter:gN,this.writable=!0,this.readable=!1,this[Xt]=new hN,this[le]=null,this[Yt]=null,this[ti]=null,this[ht]="begin",this[Sr]="",this[pt]=null,this[rs]=null,this[ri]=!1,this[et]=null,this[Or]=!1,this[Yo]=!1,this[Xo]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[q1](e,r){this[ni]===null&&(this[ni]=!1);let i;try{i=new lN(e,r,this[pt],this[rs])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[Yo]?(this[Xo]=!0,this[ht]==="begin"&&(this[ht]="header"),this[ii]("eof")):(this[Yo]=!0,this[ii]("nullBlock"));else if(this[Yo]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[ti]=new dN(i,this[pt],this[rs]);if(!this[ni])if(s.remain){let o=()=>{s.invalid||(this[ni]=!0)};s.on("end",o)}else this[ni]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[ii]("ignoredEntry",s),this[ht]="ignore",s.resume()):s.size>0&&(this[Sr]="",s.on("data",o=>this[Sr]+=o),this[ht]="meta"):(this[pt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[ii]("ignoredEntry",s),this[ht]=s.remain?"ignore":"header",s.resume()):(s.remain?this[ht]="body":(this[ht]="header",s.end()),this[Yt]?this[Xt].push(s):(this[Xt].push(s),this[cl]())))}}}[P1](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Yt]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[cl]()),r=!1)):(this[Yt]=null,r=!1),r}[cl](){do;while(this[P1](this[Xt].shift()));if(!this[Xt].length){let e=this[Yt];!e||e.flowing||e.size===e.remain?this[is]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[ll](e,r){let i=this[ti],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[ht]="header",this[ti]=null,i.end()),s.length}[k1](e,r){let i=this[ti],n=this[ll](e,r);return this[ti]||this[D1](i),n}[ii](e,r,i){!this[Xt].length&&!this[Yt]?this.emit(e,r,i):this[Xt].push([e,r,i])}[D1](e){switch(this[ii]("meta",this[Sr]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[pt]=I1.parse(this[Sr],this[pt],!1);break;case"GlobalExtendedHeader":this[rs]=I1.parse(this[Sr],this[rs],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[pt]=this[pt]||Object.create(null),this[pt].path=this[Sr].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[pt]=this[pt]||Object.create(null),this[pt].linkpath=this[Sr].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Or]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Or])return;if(this[et]===null&&e){if(this[le]&&(e=Buffer.concat([this[le],e]),this[le]=null),e.lengththis[zo](s)),this[et].on("error",s=>this.abort(s)),this[et].on("end",s=>{this[ri]=!0,this[zo]()}),this[is]=!0;let n=this[et][i?"end":"write"](e);return this[is]=!1,n}}this[is]=!0,this[et]?this[et].write(e):this[zo](e),this[is]=!1;let r=this[Xt].length?!1:this[Yt]?this[Yt].flowing:!0;return!r&&!this[Xt].length&&this[Yt].once("drain",i=>this.emit("drain")),r}[fl](e){e&&!this[Or]&&(this[le]=this[le]?Buffer.concat([this[le],e]):e)}[hl](){if(this[ri]&&!this[F1]&&!this[Or]&&!this[Wo]){this[F1]=!0;let e=this[ti];if(e&&e.blockRemain){let r=this[le]?this[le].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[le]&&e.write(this[le]),e.end()}this[ii](Vo)}}[zo](e){if(this[Wo])this[fl](e);else if(!e&&!this[le])this[hl]();else{if(this[Wo]=!0,this[le]){this[fl](e);let r=this[le];this[le]=null,this[Ho](r)}else this[Ho](e);for(;this[le]&&this[le].length>=512&&!this[Or]&&!this[Xo];){let r=this[le];this[le]=null,this[Ho](r)}this[Wo]=!1}(!this[le]||this[ri])&&this[hl]()}[Ho](e){let r=0,i=e.length;for(;r+512<=i&&!this[Or]&&!this[Xo];)switch(this[ht]){case"begin":case"header":this[q1](e,r),r+=512;break;case"ignore":case"body":r+=this[ll](e,r);break;case"meta":r+=this[k1](e,r);break;default:throw new Error("invalid state: "+this[ht])}r{"use strict";var yN=Pi(),$1=Ko(),Yi=require("fs"),vN=Vi(),M1=require("path");j1.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=yN(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&EN(i,e),i.noResume||bN(i),i.file&&i.sync?wN(i):i.file?SN(i,r):B1(i)};var bN=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},EN=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||M1.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):n(M1.dirname(s),a);return r.set(s,u),u};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},wN=t=>{let e=B1(t),r=t.file,i=!0,n;try{let s=Yi.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new $1(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),Yi.stat(n,(u,c)=>{if(u)a(u);else{let l=new vN.ReadStream(n,{readSize:i,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},B1=t=>new $1(t)});var V1=d((cq,U1)=>{"use strict";var ON=Pi(),Jo=jo(),G1=Vi(),z1=Zo(),H1=require("path");U1.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=ON(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?RN(i,e):i.file?_N(i,e,r):i.sync?CN(i,e):AN(i,e)};var RN=(t,e)=>{let r=new Jo.Sync(t),i=new G1.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),W1(r,e)},_N=(t,e,r)=>{let i=new Jo(t),n=new G1.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return pl(i,e),r?s.then(r,r):s},W1=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?z1({file:H1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},pl=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return z1({file:H1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>pl(t,e));t.add(r)}t.end()},CN=(t,e)=>{let r=new Jo.Sync(t);return W1(r,e),r},AN=(t,e)=>{let r=new Jo(t);return pl(r,e),r}});var dl=d((lq,Y1)=>{"use strict";var TN=Pi(),X1=jo(),dt=require("fs"),K1=Vi(),Z1=Zo(),J1=require("path"),Q1=qi();Y1.exports=(t,e,r)=>{let i=TN(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?LN(i,e):xN(i,e,r)};var LN=(t,e)=>{let r=new X1.Sync(t),i=!0,n,s;try{try{n=dt.openSync(t.file,"r+")}catch(u){if(u.code==="ENOENT")n=dt.openSync(t.file,"w+");else throw u}let o=dt.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(u.path,u.mtime)}i=!1,NN(t,r,s,n,e)}finally{if(i)try{dt.closeSync(n)}catch(o){}}},NN=(t,e,r,i,n)=>{let s=new K1.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),IN(e,n)},xN=(t,e,r)=>{e=Array.from(e);let i=new X1(t),n=(o,a,u)=>{let c=(m,p)=>{m?dt.close(o,E=>u(m)):u(null,p)},l=0;if(a===0)return c(null,0);let f=0,h=Buffer.alloc(512),y=(m,p)=>{if(m)return c(m);if(f+=p,f<512&&p)return dt.read(o,h,f,h.length-f,l+f,y);if(l===0&&h[0]===31&&h[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,l);let E=new Q1(h);if(!E.cksumValid)return c(null,l);let O=512*Math.ceil(E.size/512);if(l+O+512>a||(l+=O+512,l>=a))return c(null,l);t.mtimeCache&&t.mtimeCache.set(E.path,E.mtime),f=0,dt.read(o,h,0,512,l,y)};dt.read(o,h,0,512,l,y)},s=new Promise((o,a)=>{i.on("error",a);let u="r+",c=(l,f)=>{if(l&&l.code==="ENOENT"&&u==="r+")return u="w+",dt.open(t.file,u,c);if(l)return a(l);dt.fstat(f,(h,y)=>{if(h)return a(h);n(f,y.size,(m,p)=>{if(m)return a(m);let E=new K1.WriteStream(t.file,{fd:f,start:p});i.pipe(E),E.on("error",a),E.on("close",o),eb(i,e)})})};dt.open(t.file,u,c)});return r?s.then(r,r):s},IN=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?Z1({file:J1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},eb=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return Z1({file:J1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>eb(t,e));t.add(r)}t.end()}});var rb=d((fq,tb)=>{"use strict";var PN=Pi(),DN=dl();tb.exports=(t,e,r)=>{let i=PN(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),FN(i),DN(i,e,r)};var FN=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var sb=d((hq,ib)=>{var{promisify:nb}=require("util"),Rr=require("fs"),kN=t=>{if(!t)t={mode:511,fs:Rr};else if(typeof t=="object")t={mode:511,fs:Rr,...t};else if(typeof t=="number")t={mode:t,fs:Rr};else if(typeof t=="string")t={mode:parseInt(t,8),fs:Rr};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||Rr.mkdir,t.mkdirAsync=nb(t.mkdir),t.stat=t.stat||t.fs.stat||Rr.stat,t.statAsync=nb(t.stat),t.statSync=t.statSync||t.fs.statSync||Rr.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Rr.mkdirSync,t};ib.exports=kN});var ab=d((pq,ob)=>{var qN=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:jN,parse:$N}=require("path"),MN=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=jN(t),qN==="win32"){let e=/[*|"<>?:]/,{root:r}=$N(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};ob.exports=MN});var hb=d((dq,ub)=>{var{dirname:cb}=require("path"),lb=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?lb(t,cb(e),e):void 0),fb=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?fb(t,cb(e),e):void 0}};ub.exports={findMade:lb,findMadeSync:fb}});var yl=d((mq,pb)=>{var{dirname:db}=require("path"),ml=(t,e,r)=>{e.recursive=!1;let i=db(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ml(i,e).then(s=>ml(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},gl=(t,e,r)=>{let i=db(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return gl(t,e,gl(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};pb.exports={mkdirpManual:ml,mkdirpManualSync:gl}});var yb=d((gq,mb)=>{var{dirname:gb}=require("path"),{findMade:BN,findMadeSync:UN}=hb(),{mkdirpManual:GN,mkdirpManualSync:zN}=yl(),HN=(t,e)=>(e.recursive=!0,gb(t)===t?e.mkdirAsync(t,e):BN(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return GN(t,e);throw n}))),WN=(t,e)=>{if(e.recursive=!0,gb(t)===t)return e.mkdirSync(t,e);let i=UN(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return zN(t,e);throw n}};mb.exports={mkdirpNative:HN,mkdirpNativeSync:WN}});var wb=d((yq,vb)=>{var bb=require("fs"),VN=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,vl=VN.replace(/^v/,"").split("."),Eb=+vl[0]>10||+vl[0]==10&&+vl[1]>=12,YN=Eb?t=>t.mkdir===bb.mkdir:()=>!1,XN=Eb?t=>t.mkdirSync===bb.mkdirSync:()=>!1;vb.exports={useNative:YN,useNativeSync:XN}});var Ab=d((vq,Sb)=>{var Xi=sb(),Ki=ab(),{mkdirpNative:Ob,mkdirpNativeSync:Rb}=yb(),{mkdirpManual:_b,mkdirpManualSync:Cb}=yl(),{useNative:KN,useNativeSync:ZN}=wb(),Zi=(t,e)=>(t=Ki(t),e=Xi(e),KN(e)?Ob(t,e):_b(t,e)),JN=(t,e)=>(t=Ki(t),e=Xi(e),ZN(e)?Rb(t,e):Cb(t,e));Zi.sync=JN;Zi.native=(t,e)=>Ob(Ki(t),Xi(e));Zi.manual=(t,e)=>_b(Ki(t),Xi(e));Zi.nativeSync=(t,e)=>Rb(Ki(t),Xi(e));Zi.manualSync=(t,e)=>Cb(Ki(t),Xi(e));Sb.exports=Zi});var Db=d((bq,Tb)=>{"use strict";var mt=require("fs"),si=require("path"),QN=mt.lchown?"lchown":"chown",eI=mt.lchownSync?"lchownSync":"chownSync",Lb=mt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),xb=(t,e,r)=>{try{return mt[eI](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},tI=(t,e,r)=>{try{return mt.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},rI=Lb?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):mt.chown(t,e,r,i)}:(t,e,r,i)=>i,bl=Lb?(t,e,r)=>{try{return xb(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;tI(t,e,r)}}:(t,e,r)=>xb(t,e,r),iI=process.version,Nb=(t,e,r)=>mt.readdir(t,e,r),nI=(t,e)=>mt.readdirSync(t,e);/^v4\./.test(iI)&&(Nb=(t,e,r)=>mt.readdir(t,r));var Qo=(t,e,r,i)=>{mt[QN](t,e,r,rI(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Ib=(t,e,r,i,n)=>{if(typeof e=="string")return mt.lstat(si.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,Ib(t,o,r,i,n)});if(e.isDirectory())El(si.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=si.resolve(t,e.name);Qo(o,r,i,n)});else{let s=si.resolve(t,e.name);Qo(s,r,i,n)}},El=(t,e,r,i)=>{Nb(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return Qo(t,e,r,i);let o=s.length,a=null,u=c=>{if(!a){if(c)return i(a=c);if(--o==0)return Qo(t,e,r,i)}};s.forEach(c=>Ib(t,c,e,r,u))})},sI=(t,e,r,i)=>{if(typeof e=="string")try{let n=mt.lstatSync(si.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&Pb(si.resolve(t,e.name),r,i),bl(si.resolve(t,e.name),r,i)},Pb=(t,e,r)=>{let i;try{i=nI(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return bl(t,e,r);throw n}return i&&i.length&&i.forEach(n=>sI(t,n,e,r)),bl(t,e,r)};Tb.exports=El;El.sync=Pb});var jb=d((Eq,wl)=>{"use strict";var Fb=Ab(),gt=require("fs"),ea=require("path"),kb=Db(),Sl=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},ns=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}};wl.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,u=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,l=e.unlink,f=e.cache,h=e.cwd,y=(E,O)=>{E?r(E):(f.set(t,!0),O&&u?kb(O,o,a,T=>y(T)):s?gt.chmod(t,n,r):r())};if(f&&f.get(t)===!0)return y();if(t===h)return gt.stat(t,(E,O)=>{(E||!O.isDirectory())&&(E=new ns(t,E&&E.code||"ENOTDIR")),y(E)});if(c)return Fb(t,{mode:n}).then(E=>y(null,E),y);let p=ea.relative(h,t).split(/\/|\\/);ta(h,p,n,f,l,h,null,y)};var ta=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let u=e.shift(),c=t+"/"+u;if(i.get(c))return ta(c,e,r,i,n,s,o,a);gt.mkdir(c,r,qb(c,e,r,i,n,s,o,a))},qb=(t,e,r,i,n,s,o,a)=>u=>{if(u){if(u.path&&ea.dirname(u.path)===s&&(u.code==="ENOTDIR"||u.code==="ENOENT"))return a(new ns(s,u.code));gt.lstat(t,(c,l)=>{if(c)a(c);else if(l.isDirectory())ta(t,e,r,i,n,s,o,a);else if(n)gt.unlink(t,f=>{if(f)return a(f);gt.mkdir(t,r,qb(t,e,r,i,n,s,o,a))});else{if(l.isSymbolicLink())return a(new Sl(t,t+"/"+e.join("/")));a(u)}})}else o=o||t,ta(t,e,r,i,n,s,o,a)};wl.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),u=e.preserve,c=e.unlink,l=e.cache,f=e.cwd,h=E=>{l.set(t,!0),E&&a&&kb.sync(E,s,o),n&>.chmodSync(t,i)};if(l&&l.get(t)===!0)return h();if(t===f){let E=!1,O="ENOTDIR";try{E=gt.statSync(t).isDirectory()}catch(T){O=T.code}finally{if(!E)throw new ns(t,O)}h();return}if(u)return h(Fb.sync(t,i));let m=ea.relative(f,t).split(/\/|\\/),p=null;for(let E=m.shift(),O=f;E&&(O+="/"+E);E=m.shift())if(!l.get(O))try{gt.mkdirSync(O,i),p=p||O,l.set(O,!0)}catch(T){if(T.path&&ea.dirname(T.path)===f&&(T.code==="ENOTDIR"||T.code==="ENOENT"))return new ns(f,T.code);let q=gt.lstatSync(O);if(q.isDirectory()){l.set(O,!0);continue}else if(c){gt.unlinkSync(O),gt.mkdirSync(O,i),p=p||O,l.set(O,!0);continue}else if(q.isSymbolicLink())return new Sl(O,O+"/"+m.join("/"))}return h(p)}});var Bb=d((wq,$b)=>{var Mb=require("assert");$b.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=l=>r(l).split(/[\\/]/).slice(0,-1).reduce((f,h)=>f.length?f.concat(r(f[f.length-1],h)):[h],[]),n=new Set,s=l=>{let f=e.get(l);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(h=>t.get(h)),dirs:[...f.dirs].map(h=>t.get(h))}},o=l=>{let{paths:f,dirs:h}=s(l);return f.every(y=>y[0]===l)&&h.every(y=>y[0]instanceof Set&&y[0].has(l))},a=l=>n.has(l)||!o(l)?!1:(n.add(l),l(()=>u(l)),!0),u=l=>{if(!n.has(l))return!1;let{paths:f,dirs:h}=e.get(l),y=new Set;return f.forEach(m=>{let p=t.get(m);Mb.equal(p[0],l),p.length===1?t.delete(m):(p.shift(),typeof p[0]=="function"?y.add(p[0]):p[0].forEach(E=>y.add(E)))}),h.forEach(m=>{let p=t.get(m);Mb(p[0]instanceof Set),p[0].size===1&&p.length===1?t.delete(m):p[0].size===1?(p.shift(),y.add(p[0])):p[0].delete(l)}),n.delete(l),y.forEach(m=>a(m)),!0};return{check:o,reserve:(l,f)=>{let h=new Set(l.map(y=>i(y)).reduce((y,m)=>y.concat(m)));return e.set(f,{dirs:h,paths:l}),l.forEach(y=>{let m=t.get(y);m?m.push(f):t.set(y,[f])}),h.forEach(y=>{let m=t.get(y);m?m[m.length-1]instanceof Set?m[m.length-1].add(f):m.push(new Set([f])):t.set(y,[new Set([f])])}),a(f)}}}});var zb=d((Sq,Ub)=>{var oI=process.env.__FAKE_PLATFORM__||process.platform,aI=oI==="win32",uI=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:cI,O_TRUNC:lI,O_WRONLY:fI,UV_FS_O_FILEMAP:Gb=0}=uI.constants,hI=aI&&!!Gb,pI=512*1024,dI=Gb|lI|cI|fI;Ub.exports=hI?t=>t"w"});var xl=d((Oq,Hb)=>{"use strict";var mI=require("assert"),gI=Ko(),J=require("fs"),yI=Vi(),Kt=require("path"),Wb=jb(),Vb=qc(),vI=Bb(),Yb=Symbol("onEntry"),Ol=Symbol("checkFs"),Xb=Symbol("checkFs2"),Rl=Symbol("isReusable"),Zt=Symbol("makeFs"),_l=Symbol("file"),Cl=Symbol("directory"),ra=Symbol("link"),Kb=Symbol("symlink"),Zb=Symbol("hardlink"),Jb=Symbol("unsupported"),Qb=Symbol("checkPath"),Ji=Symbol("mkdir"),ze=Symbol("onError"),ia=Symbol("pending"),eE=Symbol("pend"),Qi=Symbol("unpend"),Al=Symbol("ended"),Tl=Symbol("maybeClose"),Ll=Symbol("skip"),ss=Symbol("doChown"),os=Symbol("uid"),as=Symbol("gid"),tE=require("crypto"),rE=zb(),na=()=>{throw new Error("sync function called cb somehow?!?")},bI=(t,e)=>{if(process.platform!=="win32")return J.unlink(t,e);let r=t+".DELETE."+tE.randomBytes(16).toString("hex");J.rename(t,r,i=>{if(i)return e(i);J.unlink(r,e)})},EI=t=>{if(process.platform!=="win32")return J.unlinkSync(t);let e=t+".DELETE."+tE.randomBytes(16).toString("hex");J.renameSync(t,e),J.unlinkSync(e)},iE=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,sa=class extends gI{constructor(e){if(e||(e={}),e.ondone=r=>{this[Al]=!0,this[Tl]()},super(e),this.reservations=vI(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[ia]=0,this[Al]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Kt.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[Yb](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[Tl](){this[Al]&&this[ia]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Qb](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Kt.win32.isAbsolute(r)){let i=Kt.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Kt.win32.parse(e.path);e.path=r.root===""?Vb.encode(e.path):r.root+Vb.encode(e.path.substr(r.root.length))}return Kt.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Kt.resolve(this.cwd,e.path),!0}[Yb](e){if(!this[Qb](e))return e.resume();switch(mI.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ol](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Jb](e)}}[ze](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Qi](),r.resume())}[Ji](e,r,i){Wb(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[ss](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[os](e){return iE(this.uid,e.uid,this.processUid)}[as](e){return iE(this.gid,e.gid,this.processGid)}[_l](e,r){let i=e.mode&4095||this.fmode,n=new yI.WriteStream(e.absolute,{flags:rE(e.size),mode:i,autoClose:!1});n.on("error",u=>this[ze](u,e));let s=1,o=u=>{if(u)return this[ze](u,e);--s==0&&J.close(n.fd,c=>{r(),c?this[ze](c,e):this[Qi]()})};n.on("finish",u=>{let c=e.absolute,l=n.fd;if(e.mtime&&!this.noMtime){s++;let f=e.atime||new Date,h=e.mtime;J.futimes(l,f,h,y=>y?J.utimes(c,f,h,m=>o(m&&y)):o())}if(this[ss](e)){s++;let f=this[os](e),h=this[as](e);J.fchown(l,f,h,y=>y?J.chown(c,f,h,m=>o(m&&y)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",u=>this[ze](u,e)),e.pipe(a)),a.pipe(n)}[Cl](e,r){let i=e.mode&4095||this.dmode;this[Ji](e.absolute,i,n=>{if(n)return r(),this[ze](n,e);let s=1,o=a=>{--s==0&&(r(),this[Qi](),e.resume())};e.mtime&&!this.noMtime&&(s++,J.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ss](e)&&(s++,J.chown(e.absolute,this[os](e),this[as](e),o)),o()})}[Jb](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Kb](e,r){this[ra](e,e.linkpath,"symlink",r)}[Zb](e,r){this[ra](e,Kt.resolve(this.cwd,e.linkpath),"link",r)}[eE](){this[ia]++}[Qi](){this[ia]--,this[Tl]()}[Ll](e){this[Qi](),e.resume()}[Rl](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[Ol](e){this[eE]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[Xb](e,i))}[Xb](e,r){this[Ji](Kt.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[ze](i,e);J.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[Ll](e),r()):n||this[Rl](e,s)?this[Zt](null,e,r):s.isDirectory()?e.type==="Directory"?!this.noChmod&&(!e.mode||(s.mode&4095)===e.mode)?this[Zt](null,e,r):J.chmod(e.absolute,e.mode,o=>this[Zt](o,e,r)):J.rmdir(e.absolute,o=>this[Zt](o,e,r)):bI(e.absolute,o=>this[Zt](o,e,r))})})}[Zt](e,r,i){if(e)return this[ze](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[_l](r,i);case"Link":return this[Zb](r,i);case"SymbolicLink":return this[Kb](r,i);case"Directory":case"GNUDumpDir":return this[Cl](r,i)}}[ra](e,r,i,n){J[i](r,e.absolute,s=>{if(s)return this[ze](s,e);n(),this[Qi](),e.resume()})}},nE=class extends sa{[Ol](e){let r=this[Ji](Kt.dirname(e.absolute),this.dmode,na);if(r)return this[ze](r,e);try{let i=J.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[Ll](e);if(this[Rl](e,i))return this[Zt](null,e,na);try{return i.isDirectory()?e.type==="Directory"?!this.noChmod&&e.mode&&(i.mode&4095)!==e.mode&&J.chmodSync(e.absolute,e.mode):J.rmdirSync(e.absolute):EI(e.absolute),this[Zt](null,e,na)}catch(n){return this[ze](n,e)}}catch(i){return this[Zt](null,e,na)}}[_l](e,r){let i=e.mode&4095||this.fmode,n=a=>{let u;try{J.closeSync(s)}catch(c){u=c}(a||u)&&this[ze](a||u,e)},s;try{s=J.openSync(e.absolute,rE(e.size),i)}catch(a){return n(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[ze](a,e)),e.pipe(o)),o.on("data",a=>{try{J.writeSync(s,a,0,a.length)}catch(u){n(u)}}),o.on("end",a=>{let u=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,l=e.mtime;try{J.futimesSync(s,c,l)}catch(f){try{J.utimesSync(e.absolute,c,l)}catch(h){u=f}}}if(this[ss](e)){let c=this[os](e),l=this[as](e);try{J.fchownSync(s,c,l)}catch(f){try{J.chownSync(e.absolute,c,l)}catch(h){u=u||f}}}n(u)})}[Cl](e,r){let i=e.mode&4095||this.dmode,n=this[Ji](e.absolute,i);if(n)return this[ze](n,e);if(e.mtime&&!this.noMtime)try{J.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ss](e))try{J.chownSync(e.absolute,this[os](e),this[as](e))}catch(s){}e.resume()}[Ji](e,r){try{return Wb.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[ra](e,r,i,n){try{J[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[ze](s,e)}}};sa.Sync=nE;Hb.exports=sa});var cE=d((Rq,sE)=>{"use strict";var wI=Pi(),oa=xl(),oE=require("fs"),aE=Vi(),uE=require("path");sE.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=wI(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&SI(i,e),i.file&&i.sync?OI(i):i.file?RI(i,r):i.sync?_I(i):CI(i)};var SI=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||uE.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):n(uE.dirname(s),a);return r.set(s,u),u};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},OI=t=>{let e=new oa.Sync(t),r=t.file,i=oE.statSync(r),n=t.maxReadSize||16*1024*1024;new aE.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(e)},RI=(t,e)=>{let r=new oa(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),oE.stat(n,(u,c)=>{if(u)a(u);else{let l=new aE.ReadStream(n,{readSize:i,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},_I=t=>new oa.Sync(t),CI=t=>new oa(t)});var lE=d(ve=>{"use strict";ve.c=ve.create=V1();ve.r=ve.replace=dl();ve.t=ve.list=Zo();ve.u=ve.update=rb();ve.x=ve.extract=cE();ve.Pack=jo();ve.Unpack=xl();ve.Parse=Ko();ve.ReadEntry=wo();ve.WriteEntry=zc();ve.Header=qi();ve.Pax=Ro();ve.types=Nc()});var fE=d(Nl=>{var oi=require("path"),_r=process.platform==="win32",Cr=require("fs"),AI=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function TI(){var t;if(AI){var e=new Error;t=r}else t=i;return t;function r(n){n&&(e.message=n.message,n=e,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function LI(t){return typeof t=="function"?t:TI()}var Cq=oi.normalize;_r?Jt=/(.*?)(?:[\/\\]+|$)/g:Jt=/(.*?)(?:[\/]+|$)/g;var Jt;_r?us=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:us=/^[\/]*/;var us;Nl.realpathSync=function(e,r){if(e=oi.resolve(e),r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];var i=e,n={},s={},o,a,u,c;l();function l(){var E=us.exec(e);o=E[0].length,a=E[0],u=E[0],c="",_r&&!s[u]&&(Cr.lstatSync(u),s[u]=!0)}for(;o=e.length)return r&&(r[n]=e),i(null,e);Jt.lastIndex=a;var E=Jt.exec(e);return l=u,u+=E[0],c=l+E[1],a=Jt.lastIndex,o[c]||r&&r[c]===c?process.nextTick(h):r&&Object.prototype.hasOwnProperty.call(r,c)?p(r[c]):Cr.lstat(c,y)}function y(E,O){if(E)return i(E);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(h);if(!_r){var T=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(T))return m(null,s[T],c)}Cr.stat(c,function(q){if(q)return i(q);Cr.readlink(c,function(A,V){_r||(s[T]=V),m(A,V)})})}function m(E,O,T){if(E)return i(E);var q=oi.resolve(l,O);r&&(r[T]=q),p(q)}function p(E){e=oi.resolve(E,e.slice(a)),f()}}});var Fl=d((Tq,hE)=>{hE.exports=Ar;Ar.realpath=Ar;Ar.sync=Il;Ar.realpathSync=Il;Ar.monkeypatch=xI;Ar.unmonkeypatch=NI;var en=require("fs"),Pl=en.realpath,Dl=en.realpathSync,II=process.version,pE=/^v[0-5]\./.test(II),dE=fE();function mE(t){return t&&t.syscall==="realpath"&&(t.code==="ELOOP"||t.code==="ENOMEM"||t.code==="ENAMETOOLONG")}function Ar(t,e,r){if(pE)return Pl(t,e,r);typeof e=="function"&&(r=e,e=null),Pl(t,e,function(i,n){mE(i)?dE.realpath(t,e,r):r(i,n)})}function Il(t,e){if(pE)return Dl(t,e);try{return Dl(t,e)}catch(r){if(mE(r))return dE.realpathSync(t,e);throw r}}function xI(){en.realpath=Ar,en.realpathSync=Il}function NI(){en.realpath=Pl,en.realpathSync=Dl}});var yE=d((Lq,gE)=>{gE.exports=function(t,e){for(var r=[],i=0;i{"use strict";vE.exports=bE;function bE(t,e,r){t instanceof RegExp&&(t=EE(t,r)),e instanceof RegExp&&(e=EE(e,r));var i=wE(t,e,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+t.length,i[1]),post:r.slice(i[1]+e.length)}}function EE(t,e){var r=e.match(t);return r?r[0]:null}bE.range=wE;function wE(t,e,r){var i,n,s,o,a,u=r.indexOf(t),c=r.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(i=[],s=r.length;l>=0&&!a;)l==u?(i.push(l),u=r.indexOf(t,l+1)):i.length==1?a=[i.pop(),c]:(n=i.pop(),n=0?u:c;i.length&&(a=[s,o])}return a}});var xE=d((Nq,OE)=>{var DI=yE(),RE=SE();OE.exports=FI;var _E="\0SLASH"+Math.random()+"\0",CE="\0OPEN"+Math.random()+"\0",kl="\0CLOSE"+Math.random()+"\0",AE="\0COMMA"+Math.random()+"\0",TE="\0PERIOD"+Math.random()+"\0";function ql(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function kI(t){return t.split("\\\\").join(_E).split("\\{").join(CE).split("\\}").join(kl).split("\\,").join(AE).split("\\.").join(TE)}function qI(t){return t.split(_E).join("\\").split(CE).join("{").split(kl).join("}").split(AE).join(",").split(TE).join(".")}function LE(t){if(!t)return[""];var e=[],r=RE("{","}",t);if(!r)return t.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var a=LE(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function FI(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),tn(kI(t),!0).map(qI)):[]}function jI(t){return"{"+t+"}"}function $I(t){return/^-?0\d/.test(t)}function MI(t,e){return t<=e}function BI(t,e){return t>=e}function tn(t,e){var r=[],i=RE("{","}",t);if(!i||/\$$/.test(i.pre))return[t];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,a=i.body.indexOf(",")>=0;if(!o&&!a)return i.post.match(/,.*\}/)?(t=i.pre+"{"+i.body+kl+i.post,tn(t)):[t];var u;if(o)u=i.body.split(/\.\./);else if(u=LE(i.body),u.length===1&&(u=tn(u[0],!1).map(jI),u.length===1)){var l=i.post.length?tn(i.post,!1):[""];return l.map(function(M){return i.pre+u[0]+M})}var c=i.pre,l=i.post.length?tn(i.post,!1):[""],f;if(o){var h=ql(u[0]),y=ql(u[1]),m=Math.max(u[0].length,u[1].length),p=u.length==3?Math.abs(ql(u[2])):1,E=MI,O=y0){var k=new Array(V+1).join("0");q<0?A="-"+k+A.slice(1):A=k+A}}f.push(A)}}else f=DI(u,function(I){return tn(I,!1)});for(var G=0;G{NE.exports=yt;yt.Minimatch=Oe;var cs={sep:"/"};try{cs=require("path")}catch(t){}var jl=yt.GLOBSTAR=Oe.GLOBSTAR={},UI=xE(),IE={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},$l="[^/]",Ml=$l+"*?",GI="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",zI="(?:(?!(?:\\/|^)\\.).)*?",PE=HI("().*{}+?[]^$\\!");function HI(t){return t.split("").reduce(function(e,r){return e[r]=!0,e},{})}var DE=/\/+/;yt.filter=WI;function WI(t,e){return e=e||{},function(r,i,n){return yt(r,t,e)}}function FE(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(i){r[i]=e[i]}),Object.keys(t).forEach(function(i){r[i]=t[i]}),r}yt.defaults=function(t){if(!t||!Object.keys(t).length)return yt;var e=yt,r=function(n,s,o){return e.minimatch(n,s,FE(t,o))};return r.Minimatch=function(n,s){return new e.Minimatch(n,FE(t,s))},r};Oe.defaults=function(t){return!t||!Object.keys(t).length?Oe:yt.defaults(t).Minimatch};function yt(t,e,r){if(typeof e!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&e.charAt(0)==="#"?!1:e.trim()===""?t==="":new Oe(e,r).match(t)}function Oe(t,e){if(!(this instanceof Oe))return new Oe(t,e);if(typeof t!="string")throw new TypeError("glob pattern string required");e||(e={}),t=t.trim(),cs.sep!=="/"&&(t=t.split(cs.sep).join("/")),this.options=e,this.set=[],this.pattern=t,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}Oe.prototype.debug=function(){};Oe.prototype.make=VI;function VI(){if(!this._made){var t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(DE)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}Oe.prototype.parseNegate=YI;function YI(){var t=this.pattern,e=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=t.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&t==="**")return jl;if(t==="")return"";var i="",n=!!r.nocase,s=!1,o=[],a=[],u,c=!1,l=-1,f=-1,h=t.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",y=this;function m(){if(u){switch(u){case"*":i+=Ml,n=!0;break;case"?":i+=$l,n=!0;break;default:i+="\\"+u;break}y.debug("clearStateChar %j %j",u,i),u=!1}}for(var p=0,E=t.length,O;p-1;j--){var S=a[j],I=i.slice(0,S.reStart),M=i.slice(S.reStart,S.reEnd-8),F=i.slice(S.reEnd-8,S.reEnd),B=i.slice(S.reEnd);F+=B;var he=I.split("(").length-1,Z=B;for(p=0;p=0&&(n=t[s],!n);s--);for(s=0;s{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};Qv.exports=Oo});var _o=d((Xk,e1)=>{"use strict";e1.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var qc=d((Kk,t1)=>{"use strict";var Co=["|","<",">","?",":"],kc=Co.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Hx=new Map(Co.map((t,e)=>[t,kc[e]])),Wx=new Map(kc.map((t,e)=>[t,Co[e]]));t1.exports={encode:t=>Co.reduce((e,r)=>e.split(r).join(Hx.get(r)),t),decode:t=>kc.reduce((e,r)=>e.split(r).join(Wx.get(r)),t)}});var i1=d((Zk,r1)=>{"use strict";r1.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var zc=d((eq,n1)=>{"use strict";var s1=Di(),o1=Ro(),a1=qi(),xt=require("fs"),ji=require("path"),Vx=16*1024*1024,u1=Symbol("process"),c1=Symbol("file"),l1=Symbol("directory"),jc=Symbol("symlink"),f1=Symbol("hardlink"),Qn=Symbol("header"),Ao=Symbol("read"),$c=Symbol("lstat"),To=Symbol("onlstat"),Mc=Symbol("onread"),Bc=Symbol("onreadlink"),Uc=Symbol("openfile"),Gc=Symbol("onopenfile"),Zr=Symbol("close"),Lo=Symbol("mode"),h1=_o(),Yx=qc(),p1=i1(),xo=h1(class extends s1{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Vx,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&ji.win32.isAbsolute(e)){let n=ji.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Yx.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||ji.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[To](this.statCache.get(this.absolute)):this[$c]()}[$c](){xt.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[To](r)})}[To](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Xx(e),this.emit("stat",e),this[u1]()}[u1](){switch(this.type){case"File":return this[c1]();case"Directory":return this[l1]();case"SymbolicLink":return this[jc]();default:return this.end()}}[Lo](e){return p1(e,this.type==="Directory",this.portable)}[Qn](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new a1({path:this.path,linkpath:this.linkpath,mode:this[Lo](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new o1({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[l1](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Qn](),this.end()}[jc](){xt.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Bc](r)})}[Bc](e){this.linkpath=e.replace(/\\/g,"/"),this[Qn](),this.end()}[f1](e){this.type="Link",this.linkpath=ji.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[Qn](),this.end()}[c1](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[f1](r)}this.linkCache.set(e,this.absolute)}if(this[Qn](),this.stat.size===0)return this.end();this[Uc]()}[Uc](){xt.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[Gc](r)})}[Gc](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Ao](e,n,0,n.length,0,this.stat.size,r)}[Ao](e,r,i,n,s,o,a){xt.read(e,r,i,n,s,(u,c)=>{if(u)return this[Zr](e,()=>this.emit("error",u));this[Mc](e,r,i,n,s,o,a,c)})}[Zr](e,r){xt.close(e,r)}[Mc](e,r,i,n,s,o,a,u){if(u<=0&&o>0){let l=new Error("encountered unexpected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u>o){let l=new Error("did not encounter expected EOF");return l.path=this.absolute,l.syscall="read",l.code="EOF",this[Zr](e,()=>this.emit("error",l))}if(u===o)for(let l=u;ll?this.emit("error",l):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Ao](e,r,i,n,s,o,a)}}),d1=class extends xo{[$c](){this[To](xt.lstatSync(this.absolute))}[jc](){this[Bc](xt.readlinkSync(this.absolute))}[Uc](){this[Gc](xt.openSync(this.absolute,"r"))}[Ao](e,r,i,n,s,o,a){let u=!0;try{let c=xt.readSync(e,r,i,n,s);this[Mc](e,r,i,n,s,o,a,c),u=!1}finally{if(u)try{this[Zr](e,()=>{})}catch(c){}}}[Zr](e,r){xt.closeSync(e),r()}},Kx=h1(class extends s1{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[Lo](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(ji.isAbsolute(this.path)&&!this.preservePaths){let n=ji.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new a1({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new o1({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[Lo](e){return p1(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});xo.Sync=d1;xo.Tar=Kx;var Xx=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";n1.exports=xo});var g1=d((tq,m1)=>{"use strict";m1.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Hc=d((rq,y1)=>{"use strict";y1.exports=X;X.Node=Jr;X.create=X;function X(t){var e=this;if(e instanceof X||(e=new X),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};X.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};X.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};X.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};X.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new X;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};X.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Wc=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},eN=Di(),tN=Lc(),rN=wo(),Vc=zc(),iN=Vc.Sync,nN=Vc.Tar,sN=Hc(),b1=Buffer.alloc(1024),No=Symbol("onStat"),Io=Symbol("ended"),Nt=Symbol("queue"),$i=Symbol("current"),Qr=Symbol("process"),Po=Symbol("processing"),E1=Symbol("processJob"),It=Symbol("jobs"),Yc=Symbol("jobDone"),Do=Symbol("addFSEntry"),w1=Symbol("addTarEntry"),Xc=Symbol("stat"),Kc=Symbol("readdir"),Fo=Symbol("onreaddir"),ko=Symbol("pipe"),S1=Symbol("entry"),Zc=Symbol("entryOpt"),Jc=Symbol("writeEntryClass"),O1=Symbol("write"),Qc=Symbol("ondrain"),qo=require("fs"),R1=require("path"),oN=_o(),el=oN(class extends eN{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[Jc]=Vc,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new tN.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[Qc]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[Qc]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[Nt]=new sN,this[It]=0,this.jobs=+e.jobs||4,this[Po]=!1,this[Io]=!1}[O1](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Io]=!0,this[Qr](),this}write(e){if(this[Io])throw new Error("write after end");return e instanceof rN?this[w1](e):this[Do](e),this.flowing}[w1](e){let r=R1.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new Wc(e.path,r,!1);i.entry=new nN(e,this[Zc](i)),i.entry.on("end",n=>this[Yc](i)),this[It]+=1,this[Nt].push(i)}this[Qr]()}[Do](e){let r=R1.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[Nt].push(new Wc(e,r)),this[Qr]()}[Xc](e){e.pending=!0,this[It]+=1;let r=this.follow?"stat":"lstat";qo[r](e.absolute,(i,n)=>{e.pending=!1,this[It]-=1,i?this.emit("error",i):this[No](e,n)})}[No](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Qr]()}[Kc](e){e.pending=!0,this[It]+=1,qo.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[It]-=1,r)return this.emit("error",r);this[Fo](e,i)})}[Fo](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Qr]()}[Qr](){if(!this[Po]){this[Po]=!0;for(let e=this[Nt].head;e!==null&&this[It]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[S1](e){this[It]+=1;try{return new this[Jc](e.path,this[Zc](e)).on("end",()=>this[Yc](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[Qc](){this[$i]&&this[$i].entry&&this[$i].entry.resume()}[ko](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Do](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),_1=class extends el{constructor(e){super(e);this[Jc]=iN}pause(){}resume(){}[Xc](e){let r=this.follow?"statSync":"lstatSync";this[No](e,qo[r](e.absolute))}[Kc](e,r){this[Fo](e,qo.readdirSync(e.absolute))}[ko](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[Do](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[O1](n)})}};el.Sync=_1;v1.exports=el});var Vi=d(es=>{"use strict";var aN=Di(),uN=require("events").EventEmitter,Qe=require("fs"),tl=Qe.writev;if(!tl){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;tl=(r,i,n,s)=>{let o=(u,c)=>s(u,c,i),a=new e;a.oncomplete=o,t.writeBuffers(r,i,n,a)}}var Mi=Symbol("_autoClose"),Ct=Symbol("_close"),ts=Symbol("_ended"),ne=Symbol("_fd"),C1=Symbol("_finished"),br=Symbol("_flags"),rl=Symbol("_flush"),il=Symbol("_handleChunk"),nl=Symbol("_makeBuf"),$o=Symbol("_mode"),Mo=Symbol("_needDrain"),Bi=Symbol("_onerror"),Ui=Symbol("_onopen"),sl=Symbol("_onread"),Gi=Symbol("_onwrite"),Er=Symbol("_open"),Vt=Symbol("_path"),ei=Symbol("_pos"),Pt=Symbol("_queue"),zi=Symbol("_read"),A1=Symbol("_readSize"),wr=Symbol("_reading"),Bo=Symbol("_remain"),T1=Symbol("_size"),Uo=Symbol("_write"),Hi=Symbol("_writing"),Go=Symbol("_defaultFlag"),Wi=Symbol("_errored"),ol=class extends aN{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Wi]=!1,this[ne]=typeof r.fd=="number"?r.fd:null,this[Vt]=e,this[A1]=r.readSize||16*1024*1024,this[wr]=!1,this[T1]=typeof r.size=="number"?r.size:Infinity,this[Bo]=this[T1],this[Mi]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ne]=="number"?this[zi]():this[Er]()}get fd(){return this[ne]}get path(){return this[Vt]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Er](){Qe.open(this[Vt],"r",(e,r)=>this[Ui](e,r))}[Ui](e,r){e?this[Bi](e):(this[ne]=r,this.emit("open",r),this[zi]())}[nl](){return Buffer.allocUnsafe(Math.min(this[A1],this[Bo]))}[zi](){if(!this[wr]){this[wr]=!0;let e=this[nl]();if(e.length===0)return process.nextTick(()=>this[sl](null,0,e));Qe.read(this[ne],e,0,e.length,null,(r,i,n)=>this[sl](r,i,n))}}[sl](e,r,i){this[wr]=!1,e?this[Bi](e):this[il](r,i)&&this[zi]()}[Ct](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[Bi](e){this[wr]=!0,this[Ct](),this.emit("error",e)}[il](e,r){let i=!1;return this[Bo]-=e,e>0&&(i=super.write(ethis[Ui](e,r))}[Ui](e,r){this[Go]&&this[br]==="r+"&&e&&e.code==="ENOENT"?(this[br]="w",this[Er]()):e?this[Bi](e):(this[ne]=r,this.emit("open",r),this[rl]())}end(e,r){return e&&this.write(e,r),this[ts]=!0,!this[Hi]&&!this[Pt].length&&typeof this[ne]=="number"&&this[Gi](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[ts]?(this.emit("error",new Error("write() after end()")),!1):this[ne]===null||this[Hi]||this[Pt].length?(this[Pt].push(e),this[Mo]=!0,!1):(this[Hi]=!0,this[Uo](e),!0)}[Uo](e){Qe.write(this[ne],e,0,e.length,this[ei],(r,i)=>this[Gi](r,i))}[Gi](e,r){e?this[Bi](e):(this[ei]!==null&&(this[ei]+=r),this[Pt].length?this[rl]():(this[Hi]=!1,this[ts]&&!this[C1]?(this[C1]=!0,this[Ct](),this.emit("finish")):this[Mo]&&(this[Mo]=!1,this.emit("drain"))))}[rl](){if(this[Pt].length===0)this[ts]&&this[Gi](null,0);else if(this[Pt].length===1)this[Uo](this[Pt].pop());else{let e=this[Pt];this[Pt]=[],tl(this[ne],e,this[ei],(r,i)=>this[Gi](r,i))}}[Ct](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},x1=class extends al{[Er](){let e;if(this[Go]&&this[br]==="r+")try{e=Qe.openSync(this[Vt],this[br],this[$o])}catch(r){if(r.code==="ENOENT")return this[br]="w",this[Er]();throw r}else e=Qe.openSync(this[Vt],this[br],this[$o]);this[Ui](null,e)}[Ct](){if(this[Mi]&&typeof this[ne]=="number"){let e=this[ne];this[ne]=null,Qe.closeSync(e),this.emit("close")}}[Uo](e){let r=!0;try{this[Gi](null,Qe.writeSync(this[ne],e,0,e.length,this[ei])),r=!1}finally{if(r)try{this[Ct]()}catch(i){}}}};es.ReadStream=ol;es.ReadStreamSync=L1;es.WriteStream=al;es.WriteStreamSync=x1});var Ko=d((aq,N1)=>{"use strict";var cN=_o(),lN=qi(),fN=require("events"),hN=Hc(),pN=1024*1024,dN=wo(),I1=Ro(),mN=Lc(),ul=Buffer.from([31,139]),pt=Symbol("state"),ti=Symbol("writeEntry"),Yt=Symbol("readEntry"),cl=Symbol("nextEntry"),P1=Symbol("processEntry"),dt=Symbol("extendedHeader"),rs=Symbol("globalExtendedHeader"),Sr=Symbol("meta"),D1=Symbol("emitMeta"),le=Symbol("buffer"),Xt=Symbol("queue"),ri=Symbol("ended"),F1=Symbol("emittedEnd"),ii=Symbol("emit"),et=Symbol("unzip"),zo=Symbol("consumeChunk"),Ho=Symbol("consumeChunkSub"),ll=Symbol("consumeBody"),k1=Symbol("consumeMeta"),q1=Symbol("consumeHeader"),Wo=Symbol("consuming"),fl=Symbol("bufferConcat"),hl=Symbol("maybeEnd"),is=Symbol("writing"),Or=Symbol("aborted"),Vo=Symbol("onDone"),ni=Symbol("sawValidEntry"),Yo=Symbol("sawNullBlock"),Xo=Symbol("sawEOF"),gN=t=>!0;N1.exports=cN(class extends fN{constructor(e){e=e||{},super(e),this.file=e.file||"",this[ni]=null,this.on(Vo,r=>{(this[pt]==="begin"||this[ni]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Vo,e.ondone):this.on(Vo,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||pN,this.filter=typeof e.filter=="function"?e.filter:gN,this.writable=!0,this.readable=!1,this[Xt]=new hN,this[le]=null,this[Yt]=null,this[ti]=null,this[pt]="begin",this[Sr]="",this[dt]=null,this[rs]=null,this[ri]=!1,this[et]=null,this[Or]=!1,this[Yo]=!1,this[Xo]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[q1](e,r){this[ni]===null&&(this[ni]=!1);let i;try{i=new lN(e,r,this[dt],this[rs])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[Yo]?(this[Xo]=!0,this[pt]==="begin"&&(this[pt]="header"),this[ii]("eof")):(this[Yo]=!0,this[ii]("nullBlock"));else if(this[Yo]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[ti]=new dN(i,this[dt],this[rs]);if(!this[ni])if(s.remain){let o=()=>{s.invalid||(this[ni]=!0)};s.on("end",o)}else this[ni]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[ii]("ignoredEntry",s),this[pt]="ignore",s.resume()):s.size>0&&(this[Sr]="",s.on("data",o=>this[Sr]+=o),this[pt]="meta"):(this[dt]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[ii]("ignoredEntry",s),this[pt]=s.remain?"ignore":"header",s.resume()):(s.remain?this[pt]="body":(this[pt]="header",s.end()),this[Yt]?this[Xt].push(s):(this[Xt].push(s),this[cl]())))}}}[P1](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Yt]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[cl]()),r=!1)):(this[Yt]=null,r=!1),r}[cl](){do;while(this[P1](this[Xt].shift()));if(!this[Xt].length){let e=this[Yt];!e||e.flowing||e.size===e.remain?this[is]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[ll](e,r){let i=this[ti],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[pt]="header",this[ti]=null,i.end()),s.length}[k1](e,r){let i=this[ti],n=this[ll](e,r);return this[ti]||this[D1](i),n}[ii](e,r,i){!this[Xt].length&&!this[Yt]?this.emit(e,r,i):this[Xt].push([e,r,i])}[D1](e){switch(this[ii]("meta",this[Sr]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[dt]=I1.parse(this[Sr],this[dt],!1);break;case"GlobalExtendedHeader":this[rs]=I1.parse(this[Sr],this[rs],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[dt]=this[dt]||Object.create(null),this[dt].path=this[Sr].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[dt]=this[dt]||Object.create(null),this[dt].linkpath=this[Sr].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Or]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Or])return;if(this[et]===null&&e){if(this[le]&&(e=Buffer.concat([this[le],e]),this[le]=null),e.lengththis[zo](s)),this[et].on("error",s=>this.abort(s)),this[et].on("end",s=>{this[ri]=!0,this[zo]()}),this[is]=!0;let n=this[et][i?"end":"write"](e);return this[is]=!1,n}}this[is]=!0,this[et]?this[et].write(e):this[zo](e),this[is]=!1;let r=this[Xt].length?!1:this[Yt]?this[Yt].flowing:!0;return!r&&!this[Xt].length&&this[Yt].once("drain",i=>this.emit("drain")),r}[fl](e){e&&!this[Or]&&(this[le]=this[le]?Buffer.concat([this[le],e]):e)}[hl](){if(this[ri]&&!this[F1]&&!this[Or]&&!this[Wo]){this[F1]=!0;let e=this[ti];if(e&&e.blockRemain){let r=this[le]?this[le].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[le]&&e.write(this[le]),e.end()}this[ii](Vo)}}[zo](e){if(this[Wo])this[fl](e);else if(!e&&!this[le])this[hl]();else{if(this[Wo]=!0,this[le]){this[fl](e);let r=this[le];this[le]=null,this[Ho](r)}else this[Ho](e);for(;this[le]&&this[le].length>=512&&!this[Or]&&!this[Xo];){let r=this[le];this[le]=null,this[Ho](r)}this[Wo]=!1}(!this[le]||this[ri])&&this[hl]()}[Ho](e){let r=0,i=e.length;for(;r+512<=i&&!this[Or]&&!this[Xo];)switch(this[pt]){case"begin":case"header":this[q1](e,r),r+=512;break;case"ignore":case"body":r+=this[ll](e,r);break;case"meta":r+=this[k1](e,r);break;default:throw new Error("invalid state: "+this[pt])}r{"use strict";var yN=Pi(),$1=Ko(),Yi=require("fs"),vN=Vi(),M1=require("path");j1.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=yN(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&EN(i,e),i.noResume||bN(i),i.file&&i.sync?wN(i):i.file?SN(i,r):B1(i)};var bN=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},EN=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||M1.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):n(M1.dirname(s),a);return r.set(s,u),u};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},wN=t=>{let e=B1(t),r=t.file,i=!0,n;try{let s=Yi.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new $1(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),Yi.stat(n,(u,c)=>{if(u)a(u);else{let l=new vN.ReadStream(n,{readSize:i,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},B1=t=>new $1(t)});var V1=d((cq,U1)=>{"use strict";var ON=Pi(),Jo=jo(),G1=Vi(),z1=Zo(),H1=require("path");U1.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=ON(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?RN(i,e):i.file?_N(i,e,r):i.sync?CN(i,e):AN(i,e)};var RN=(t,e)=>{let r=new Jo.Sync(t),i=new G1.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),W1(r,e)},_N=(t,e,r)=>{let i=new Jo(t),n=new G1.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return pl(i,e),r?s.then(r,r):s},W1=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?z1({file:H1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},pl=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return z1({file:H1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>pl(t,e));t.add(r)}t.end()},CN=(t,e)=>{let r=new Jo.Sync(t);return W1(r,e),r},AN=(t,e)=>{let r=new Jo(t);return pl(r,e),r}});var dl=d((lq,Y1)=>{"use strict";var TN=Pi(),X1=jo(),mt=require("fs"),K1=Vi(),Z1=Zo(),J1=require("path"),Q1=qi();Y1.exports=(t,e,r)=>{let i=TN(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?LN(i,e):xN(i,e,r)};var LN=(t,e)=>{let r=new X1.Sync(t),i=!0,n,s;try{try{n=mt.openSync(t.file,"r+")}catch(u){if(u.code==="ENOENT")n=mt.openSync(t.file,"w+");else throw u}let o=mt.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(u.path,u.mtime)}i=!1,NN(t,r,s,n,e)}finally{if(i)try{mt.closeSync(n)}catch(o){}}},NN=(t,e,r,i,n)=>{let s=new K1.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),IN(e,n)},xN=(t,e,r)=>{e=Array.from(e);let i=new X1(t),n=(o,a,u)=>{let c=(m,p)=>{m?mt.close(o,E=>u(m)):u(null,p)},l=0;if(a===0)return c(null,0);let f=0,h=Buffer.alloc(512),y=(m,p)=>{if(m)return c(m);if(f+=p,f<512&&p)return mt.read(o,h,f,h.length-f,l+f,y);if(l===0&&h[0]===31&&h[1]===139)return c(new Error("cannot append to compressed archives"));if(f<512)return c(null,l);let E=new Q1(h);if(!E.cksumValid)return c(null,l);let O=512*Math.ceil(E.size/512);if(l+O+512>a||(l+=O+512,l>=a))return c(null,l);t.mtimeCache&&t.mtimeCache.set(E.path,E.mtime),f=0,mt.read(o,h,0,512,l,y)};mt.read(o,h,0,512,l,y)},s=new Promise((o,a)=>{i.on("error",a);let u="r+",c=(l,f)=>{if(l&&l.code==="ENOENT"&&u==="r+")return u="w+",mt.open(t.file,u,c);if(l)return a(l);mt.fstat(f,(h,y)=>{if(h)return a(h);n(f,y.size,(m,p)=>{if(m)return a(m);let E=new K1.WriteStream(t.file,{fd:f,start:p});i.pipe(E),E.on("error",a),E.on("close",o),eb(i,e)})})};mt.open(t.file,u,c)});return r?s.then(r,r):s},IN=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?Z1({file:J1.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},eb=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return Z1({file:J1.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>eb(t,e));t.add(r)}t.end()}});var rb=d((fq,tb)=>{"use strict";var PN=Pi(),DN=dl();tb.exports=(t,e,r)=>{let i=PN(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),FN(i),DN(i,e,r)};var FN=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var sb=d((hq,ib)=>{var{promisify:nb}=require("util"),Rr=require("fs"),kN=t=>{if(!t)t={mode:511,fs:Rr};else if(typeof t=="object")t={mode:511,fs:Rr,...t};else if(typeof t=="number")t={mode:t,fs:Rr};else if(typeof t=="string")t={mode:parseInt(t,8),fs:Rr};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||Rr.mkdir,t.mkdirAsync=nb(t.mkdir),t.stat=t.stat||t.fs.stat||Rr.stat,t.statAsync=nb(t.stat),t.statSync=t.statSync||t.fs.statSync||Rr.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Rr.mkdirSync,t};ib.exports=kN});var ab=d((pq,ob)=>{var qN=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:jN,parse:$N}=require("path"),MN=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=jN(t),qN==="win32"){let e=/[*|"<>?:]/,{root:r}=$N(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};ob.exports=MN});var hb=d((dq,ub)=>{var{dirname:cb}=require("path"),lb=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?lb(t,cb(e),e):void 0),fb=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?fb(t,cb(e),e):void 0}};ub.exports={findMade:lb,findMadeSync:fb}});var yl=d((mq,pb)=>{var{dirname:db}=require("path"),ml=(t,e,r)=>{e.recursive=!1;let i=db(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ml(i,e).then(s=>ml(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},gl=(t,e,r)=>{let i=db(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return gl(t,e,gl(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};pb.exports={mkdirpManual:ml,mkdirpManualSync:gl}});var yb=d((gq,mb)=>{var{dirname:gb}=require("path"),{findMade:BN,findMadeSync:UN}=hb(),{mkdirpManual:GN,mkdirpManualSync:zN}=yl(),HN=(t,e)=>(e.recursive=!0,gb(t)===t?e.mkdirAsync(t,e):BN(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return GN(t,e);throw n}))),WN=(t,e)=>{if(e.recursive=!0,gb(t)===t)return e.mkdirSync(t,e);let i=UN(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return zN(t,e);throw n}};mb.exports={mkdirpNative:HN,mkdirpNativeSync:WN}});var wb=d((yq,vb)=>{var bb=require("fs"),VN=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,vl=VN.replace(/^v/,"").split("."),Eb=+vl[0]>10||+vl[0]==10&&+vl[1]>=12,YN=Eb?t=>t.mkdir===bb.mkdir:()=>!1,XN=Eb?t=>t.mkdirSync===bb.mkdirSync:()=>!1;vb.exports={useNative:YN,useNativeSync:XN}});var Ab=d((vq,Sb)=>{var Xi=sb(),Ki=ab(),{mkdirpNative:Ob,mkdirpNativeSync:Rb}=yb(),{mkdirpManual:_b,mkdirpManualSync:Cb}=yl(),{useNative:KN,useNativeSync:ZN}=wb(),Zi=(t,e)=>(t=Ki(t),e=Xi(e),KN(e)?Ob(t,e):_b(t,e)),JN=(t,e)=>(t=Ki(t),e=Xi(e),ZN(e)?Rb(t,e):Cb(t,e));Zi.sync=JN;Zi.native=(t,e)=>Ob(Ki(t),Xi(e));Zi.manual=(t,e)=>_b(Ki(t),Xi(e));Zi.nativeSync=(t,e)=>Rb(Ki(t),Xi(e));Zi.manualSync=(t,e)=>Cb(Ki(t),Xi(e));Sb.exports=Zi});var Db=d((bq,Tb)=>{"use strict";var gt=require("fs"),si=require("path"),QN=gt.lchown?"lchown":"chown",eI=gt.lchownSync?"lchownSync":"chownSync",Lb=gt.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),xb=(t,e,r)=>{try{return gt[eI](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},tI=(t,e,r)=>{try{return gt.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},rI=Lb?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):gt.chown(t,e,r,i)}:(t,e,r,i)=>i,bl=Lb?(t,e,r)=>{try{return xb(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;tI(t,e,r)}}:(t,e,r)=>xb(t,e,r),iI=process.version,Nb=(t,e,r)=>gt.readdir(t,e,r),nI=(t,e)=>gt.readdirSync(t,e);/^v4\./.test(iI)&&(Nb=(t,e,r)=>gt.readdir(t,r));var Qo=(t,e,r,i)=>{gt[QN](t,e,r,rI(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},Ib=(t,e,r,i,n)=>{if(typeof e=="string")return gt.lstat(si.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,Ib(t,o,r,i,n)});if(e.isDirectory())El(si.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=si.resolve(t,e.name);Qo(o,r,i,n)});else{let s=si.resolve(t,e.name);Qo(s,r,i,n)}},El=(t,e,r,i)=>{Nb(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return Qo(t,e,r,i);let o=s.length,a=null,u=c=>{if(!a){if(c)return i(a=c);if(--o==0)return Qo(t,e,r,i)}};s.forEach(c=>Ib(t,c,e,r,u))})},sI=(t,e,r,i)=>{if(typeof e=="string")try{let n=gt.lstatSync(si.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&Pb(si.resolve(t,e.name),r,i),bl(si.resolve(t,e.name),r,i)},Pb=(t,e,r)=>{let i;try{i=nI(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return bl(t,e,r);throw n}return i&&i.length&&i.forEach(n=>sI(t,n,e,r)),bl(t,e,r)};Tb.exports=El;El.sync=Pb});var jb=d((Eq,wl)=>{"use strict";var Fb=Ab(),yt=require("fs"),ea=require("path"),kb=Db(),Sl=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},ns=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}};wl.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,u=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,l=e.unlink,f=e.cache,h=e.cwd,y=(E,O)=>{E?r(E):(f.set(t,!0),O&&u?kb(O,o,a,T=>y(T)):s?yt.chmod(t,n,r):r())};if(f&&f.get(t)===!0)return y();if(t===h)return yt.stat(t,(E,O)=>{(E||!O.isDirectory())&&(E=new ns(t,E&&E.code||"ENOTDIR")),y(E)});if(c)return Fb(t,{mode:n}).then(E=>y(null,E),y);let p=ea.relative(h,t).split(/\/|\\/);ta(h,p,n,f,l,h,null,y)};var ta=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let u=e.shift(),c=t+"/"+u;if(i.get(c))return ta(c,e,r,i,n,s,o,a);yt.mkdir(c,r,qb(c,e,r,i,n,s,o,a))},qb=(t,e,r,i,n,s,o,a)=>u=>{if(u){if(u.path&&ea.dirname(u.path)===s&&(u.code==="ENOTDIR"||u.code==="ENOENT"))return a(new ns(s,u.code));yt.lstat(t,(c,l)=>{if(c)a(c);else if(l.isDirectory())ta(t,e,r,i,n,s,o,a);else if(n)yt.unlink(t,f=>{if(f)return a(f);yt.mkdir(t,r,qb(t,e,r,i,n,s,o,a))});else{if(l.isSymbolicLink())return a(new Sl(t,t+"/"+e.join("/")));a(u)}})}else o=o||t,ta(t,e,r,i,n,s,o,a)};wl.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),u=e.preserve,c=e.unlink,l=e.cache,f=e.cwd,h=E=>{l.set(t,!0),E&&a&&kb.sync(E,s,o),n&&yt.chmodSync(t,i)};if(l&&l.get(t)===!0)return h();if(t===f){let E=!1,O="ENOTDIR";try{E=yt.statSync(t).isDirectory()}catch(T){O=T.code}finally{if(!E)throw new ns(t,O)}h();return}if(u)return h(Fb.sync(t,i));let m=ea.relative(f,t).split(/\/|\\/),p=null;for(let E=m.shift(),O=f;E&&(O+="/"+E);E=m.shift())if(!l.get(O))try{yt.mkdirSync(O,i),p=p||O,l.set(O,!0)}catch(T){if(T.path&&ea.dirname(T.path)===f&&(T.code==="ENOTDIR"||T.code==="ENOENT"))return new ns(f,T.code);let q=yt.lstatSync(O);if(q.isDirectory()){l.set(O,!0);continue}else if(c){yt.unlinkSync(O),yt.mkdirSync(O,i),p=p||O,l.set(O,!0);continue}else if(q.isSymbolicLink())return new Sl(O,O+"/"+m.join("/"))}return h(p)}});var Bb=d((wq,$b)=>{var Mb=require("assert");$b.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=l=>r(l).split(/[\\/]/).slice(0,-1).reduce((f,h)=>f.length?f.concat(r(f[f.length-1],h)):[h],[]),n=new Set,s=l=>{let f=e.get(l);if(!f)throw new Error("function does not have any path reservations");return{paths:f.paths.map(h=>t.get(h)),dirs:[...f.dirs].map(h=>t.get(h))}},o=l=>{let{paths:f,dirs:h}=s(l);return f.every(y=>y[0]===l)&&h.every(y=>y[0]instanceof Set&&y[0].has(l))},a=l=>n.has(l)||!o(l)?!1:(n.add(l),l(()=>u(l)),!0),u=l=>{if(!n.has(l))return!1;let{paths:f,dirs:h}=e.get(l),y=new Set;return f.forEach(m=>{let p=t.get(m);Mb.equal(p[0],l),p.length===1?t.delete(m):(p.shift(),typeof p[0]=="function"?y.add(p[0]):p[0].forEach(E=>y.add(E)))}),h.forEach(m=>{let p=t.get(m);Mb(p[0]instanceof Set),p[0].size===1&&p.length===1?t.delete(m):p[0].size===1?(p.shift(),y.add(p[0])):p[0].delete(l)}),n.delete(l),y.forEach(m=>a(m)),!0};return{check:o,reserve:(l,f)=>{let h=new Set(l.map(y=>i(y)).reduce((y,m)=>y.concat(m)));return e.set(f,{dirs:h,paths:l}),l.forEach(y=>{let m=t.get(y);m?m.push(f):t.set(y,[f])}),h.forEach(y=>{let m=t.get(y);m?m[m.length-1]instanceof Set?m[m.length-1].add(f):m.push(new Set([f])):t.set(y,[new Set([f])])}),a(f)}}}});var zb=d((Sq,Ub)=>{var oI=process.env.__FAKE_PLATFORM__||process.platform,aI=oI==="win32",uI=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:cI,O_TRUNC:lI,O_WRONLY:fI,UV_FS_O_FILEMAP:Gb=0}=uI.constants,hI=aI&&!!Gb,pI=512*1024,dI=Gb|lI|cI|fI;Ub.exports=hI?t=>t"w"});var xl=d((Oq,Hb)=>{"use strict";var mI=require("assert"),gI=Ko(),J=require("fs"),yI=Vi(),Kt=require("path"),Wb=jb(),Vb=qc(),vI=Bb(),Yb=Symbol("onEntry"),Ol=Symbol("checkFs"),Xb=Symbol("checkFs2"),Rl=Symbol("isReusable"),Zt=Symbol("makeFs"),_l=Symbol("file"),Cl=Symbol("directory"),ra=Symbol("link"),Kb=Symbol("symlink"),Zb=Symbol("hardlink"),Jb=Symbol("unsupported"),Qb=Symbol("checkPath"),Ji=Symbol("mkdir"),ze=Symbol("onError"),ia=Symbol("pending"),eE=Symbol("pend"),Qi=Symbol("unpend"),Al=Symbol("ended"),Tl=Symbol("maybeClose"),Ll=Symbol("skip"),ss=Symbol("doChown"),os=Symbol("uid"),as=Symbol("gid"),tE=require("crypto"),rE=zb(),na=()=>{throw new Error("sync function called cb somehow?!?")},bI=(t,e)=>{if(process.platform!=="win32")return J.unlink(t,e);let r=t+".DELETE."+tE.randomBytes(16).toString("hex");J.rename(t,r,i=>{if(i)return e(i);J.unlink(r,e)})},EI=t=>{if(process.platform!=="win32")return J.unlinkSync(t);let e=t+".DELETE."+tE.randomBytes(16).toString("hex");J.renameSync(t,e),J.unlinkSync(e)},iE=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,sa=class extends gI{constructor(e){if(e||(e={}),e.ondone=r=>{this[Al]=!0,this[Tl]()},super(e),this.reservations=vI(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[ia]=0,this[Al]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Kt.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[Yb](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[Tl](){this[Al]&&this[ia]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Qb](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Kt.win32.isAbsolute(r)){let i=Kt.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Kt.win32.parse(e.path);e.path=r.root===""?Vb.encode(e.path):r.root+Vb.encode(e.path.substr(r.root.length))}return Kt.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Kt.resolve(this.cwd,e.path),!0}[Yb](e){if(!this[Qb](e))return e.resume();switch(mI.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Ol](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Jb](e)}}[ze](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Qi](),r.resume())}[Ji](e,r,i){Wb(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},i)}[ss](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[os](e){return iE(this.uid,e.uid,this.processUid)}[as](e){return iE(this.gid,e.gid,this.processGid)}[_l](e,r){let i=e.mode&4095||this.fmode,n=new yI.WriteStream(e.absolute,{flags:rE(e.size),mode:i,autoClose:!1});n.on("error",u=>this[ze](u,e));let s=1,o=u=>{if(u)return this[ze](u,e);--s==0&&J.close(n.fd,c=>{r(),c?this[ze](c,e):this[Qi]()})};n.on("finish",u=>{let c=e.absolute,l=n.fd;if(e.mtime&&!this.noMtime){s++;let f=e.atime||new Date,h=e.mtime;J.futimes(l,f,h,y=>y?J.utimes(c,f,h,m=>o(m&&y)):o())}if(this[ss](e)){s++;let f=this[os](e),h=this[as](e);J.fchown(l,f,h,y=>y?J.chown(c,f,h,m=>o(m&&y)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",u=>this[ze](u,e)),e.pipe(a)),a.pipe(n)}[Cl](e,r){let i=e.mode&4095||this.dmode;this[Ji](e.absolute,i,n=>{if(n)return r(),this[ze](n,e);let s=1,o=a=>{--s==0&&(r(),this[Qi](),e.resume())};e.mtime&&!this.noMtime&&(s++,J.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ss](e)&&(s++,J.chown(e.absolute,this[os](e),this[as](e),o)),o()})}[Jb](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Kb](e,r){this[ra](e,e.linkpath,"symlink",r)}[Zb](e,r){this[ra](e,Kt.resolve(this.cwd,e.linkpath),"link",r)}[eE](){this[ia]++}[Qi](){this[ia]--,this[Tl]()}[Ll](e){this[Qi](),e.resume()}[Rl](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[Ol](e){this[eE]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[Xb](e,i))}[Xb](e,r){this[Ji](Kt.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[ze](i,e);J.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[Ll](e),r()):n||this[Rl](e,s)?this[Zt](null,e,r):s.isDirectory()?e.type==="Directory"?!this.noChmod&&(!e.mode||(s.mode&4095)===e.mode)?this[Zt](null,e,r):J.chmod(e.absolute,e.mode,o=>this[Zt](o,e,r)):J.rmdir(e.absolute,o=>this[Zt](o,e,r)):bI(e.absolute,o=>this[Zt](o,e,r))})})}[Zt](e,r,i){if(e)return this[ze](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[_l](r,i);case"Link":return this[Zb](r,i);case"SymbolicLink":return this[Kb](r,i);case"Directory":case"GNUDumpDir":return this[Cl](r,i)}}[ra](e,r,i,n){J[i](r,e.absolute,s=>{if(s)return this[ze](s,e);n(),this[Qi](),e.resume()})}},nE=class extends sa{[Ol](e){let r=this[Ji](Kt.dirname(e.absolute),this.dmode,na);if(r)return this[ze](r,e);try{let i=J.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[Ll](e);if(this[Rl](e,i))return this[Zt](null,e,na);try{return i.isDirectory()?e.type==="Directory"?!this.noChmod&&e.mode&&(i.mode&4095)!==e.mode&&J.chmodSync(e.absolute,e.mode):J.rmdirSync(e.absolute):EI(e.absolute),this[Zt](null,e,na)}catch(n){return this[ze](n,e)}}catch(i){return this[Zt](null,e,na)}}[_l](e,r){let i=e.mode&4095||this.fmode,n=a=>{let u;try{J.closeSync(s)}catch(c){u=c}(a||u)&&this[ze](a||u,e)},s;try{s=J.openSync(e.absolute,rE(e.size),i)}catch(a){return n(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[ze](a,e)),e.pipe(o)),o.on("data",a=>{try{J.writeSync(s,a,0,a.length)}catch(u){n(u)}}),o.on("end",a=>{let u=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,l=e.mtime;try{J.futimesSync(s,c,l)}catch(f){try{J.utimesSync(e.absolute,c,l)}catch(h){u=f}}}if(this[ss](e)){let c=this[os](e),l=this[as](e);try{J.fchownSync(s,c,l)}catch(f){try{J.chownSync(e.absolute,c,l)}catch(h){u=u||f}}}n(u)})}[Cl](e,r){let i=e.mode&4095||this.dmode,n=this[Ji](e.absolute,i);if(n)return this[ze](n,e);if(e.mtime&&!this.noMtime)try{J.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ss](e))try{J.chownSync(e.absolute,this[os](e),this[as](e))}catch(s){}e.resume()}[Ji](e,r){try{return Wb.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[ra](e,r,i,n){try{J[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[ze](s,e)}}};sa.Sync=nE;Hb.exports=sa});var cE=d((Rq,sE)=>{"use strict";var wI=Pi(),oa=xl(),oE=require("fs"),aE=Vi(),uE=require("path");sE.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=wI(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&SI(i,e),i.file&&i.sync?OI(i):i.file?RI(i,r):i.sync?_I(i):CI(i)};var SI=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||uE.parse(s).root||".",u=s===a?!1:r.has(s)?r.get(s):n(uE.dirname(s),a);return r.set(s,u),u};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},OI=t=>{let e=new oa.Sync(t),r=t.file,i=oE.statSync(r),n=t.maxReadSize||16*1024*1024;new aE.ReadStreamSync(r,{readSize:n,size:i.size}).pipe(e)},RI=(t,e)=>{let r=new oa(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),oE.stat(n,(u,c)=>{if(u)a(u);else{let l=new aE.ReadStream(n,{readSize:i,size:c.size});l.on("error",a),l.pipe(r)}})});return e?s.then(e,e):s},_I=t=>new oa.Sync(t),CI=t=>new oa(t)});var lE=d(ve=>{"use strict";ve.c=ve.create=V1();ve.r=ve.replace=dl();ve.t=ve.list=Zo();ve.u=ve.update=rb();ve.x=ve.extract=cE();ve.Pack=jo();ve.Unpack=xl();ve.Parse=Ko();ve.ReadEntry=wo();ve.WriteEntry=zc();ve.Header=qi();ve.Pax=Ro();ve.types=Nc()});var fE=d(Nl=>{var oi=require("path"),_r=process.platform==="win32",Cr=require("fs"),AI=process.env.NODE_DEBUG&&/fs/.test(process.env.NODE_DEBUG);function TI(){var t;if(AI){var e=new Error;t=r}else t=i;return t;function r(n){n&&(e.message=n.message,n=e,i(n))}function i(n){if(n){if(process.throwDeprecation)throw n;if(!process.noDeprecation){var s="fs: missing callback "+(n.stack||n.message);process.traceDeprecation?console.trace(s):console.error(s)}}}}function LI(t){return typeof t=="function"?t:TI()}var Cq=oi.normalize;_r?Jt=/(.*?)(?:[\/\\]+|$)/g:Jt=/(.*?)(?:[\/]+|$)/g;var Jt;_r?us=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/:us=/^[\/]*/;var us;Nl.realpathSync=function(e,r){if(e=oi.resolve(e),r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];var i=e,n={},s={},o,a,u,c;l();function l(){var E=us.exec(e);o=E[0].length,a=E[0],u=E[0],c="",_r&&!s[u]&&(Cr.lstatSync(u),s[u]=!0)}for(;o=e.length)return r&&(r[n]=e),i(null,e);Jt.lastIndex=a;var E=Jt.exec(e);return l=u,u+=E[0],c=l+E[1],a=Jt.lastIndex,o[c]||r&&r[c]===c?process.nextTick(h):r&&Object.prototype.hasOwnProperty.call(r,c)?p(r[c]):Cr.lstat(c,y)}function y(E,O){if(E)return i(E);if(!O.isSymbolicLink())return o[c]=!0,r&&(r[c]=c),process.nextTick(h);if(!_r){var T=O.dev.toString(32)+":"+O.ino.toString(32);if(s.hasOwnProperty(T))return m(null,s[T],c)}Cr.stat(c,function(q){if(q)return i(q);Cr.readlink(c,function(A,V){_r||(s[T]=V),m(A,V)})})}function m(E,O,T){if(E)return i(E);var q=oi.resolve(l,O);r&&(r[T]=q),p(q)}function p(E){e=oi.resolve(E,e.slice(a)),f()}}});var Fl=d((Tq,hE)=>{hE.exports=Ar;Ar.realpath=Ar;Ar.sync=Il;Ar.realpathSync=Il;Ar.monkeypatch=xI;Ar.unmonkeypatch=NI;var en=require("fs"),Pl=en.realpath,Dl=en.realpathSync,II=process.version,pE=/^v[0-5]\./.test(II),dE=fE();function mE(t){return t&&t.syscall==="realpath"&&(t.code==="ELOOP"||t.code==="ENOMEM"||t.code==="ENAMETOOLONG")}function Ar(t,e,r){if(pE)return Pl(t,e,r);typeof e=="function"&&(r=e,e=null),Pl(t,e,function(i,n){mE(i)?dE.realpath(t,e,r):r(i,n)})}function Il(t,e){if(pE)return Dl(t,e);try{return Dl(t,e)}catch(r){if(mE(r))return dE.realpathSync(t,e);throw r}}function xI(){en.realpath=Ar,en.realpathSync=Il}function NI(){en.realpath=Pl,en.realpathSync=Dl}});var yE=d((Lq,gE)=>{gE.exports=function(t,e){for(var r=[],i=0;i{"use strict";vE.exports=bE;function bE(t,e,r){t instanceof RegExp&&(t=EE(t,r)),e instanceof RegExp&&(e=EE(e,r));var i=wE(t,e,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+t.length,i[1]),post:r.slice(i[1]+e.length)}}function EE(t,e){var r=e.match(t);return r?r[0]:null}bE.range=wE;function wE(t,e,r){var i,n,s,o,a,u=r.indexOf(t),c=r.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(i=[],s=r.length;l>=0&&!a;)l==u?(i.push(l),u=r.indexOf(t,l+1)):i.length==1?a=[i.pop(),c]:(n=i.pop(),n=0?u:c;i.length&&(a=[s,o])}return a}});var xE=d((Nq,OE)=>{var DI=yE(),RE=SE();OE.exports=FI;var _E="\0SLASH"+Math.random()+"\0",CE="\0OPEN"+Math.random()+"\0",kl="\0CLOSE"+Math.random()+"\0",AE="\0COMMA"+Math.random()+"\0",TE="\0PERIOD"+Math.random()+"\0";function ql(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function kI(t){return t.split("\\\\").join(_E).split("\\{").join(CE).split("\\}").join(kl).split("\\,").join(AE).split("\\.").join(TE)}function qI(t){return t.split(_E).join("\\").split(CE).join("{").split(kl).join("}").split(AE).join(",").split(TE).join(".")}function LE(t){if(!t)return[""];var e=[],r=RE("{","}",t);if(!r)return t.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var a=LE(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function FI(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),tn(kI(t),!0).map(qI)):[]}function jI(t){return"{"+t+"}"}function $I(t){return/^-?0\d/.test(t)}function MI(t,e){return t<=e}function BI(t,e){return t>=e}function tn(t,e){var r=[],i=RE("{","}",t);if(!i||/\$$/.test(i.pre))return[t];var n=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),o=n||s,a=i.body.indexOf(",")>=0;if(!o&&!a)return i.post.match(/,.*\}/)?(t=i.pre+"{"+i.body+kl+i.post,tn(t)):[t];var u;if(o)u=i.body.split(/\.\./);else if(u=LE(i.body),u.length===1&&(u=tn(u[0],!1).map(jI),u.length===1)){var l=i.post.length?tn(i.post,!1):[""];return l.map(function(M){return i.pre+u[0]+M})}var c=i.pre,l=i.post.length?tn(i.post,!1):[""],f;if(o){var h=ql(u[0]),y=ql(u[1]),m=Math.max(u[0].length,u[1].length),p=u.length==3?Math.abs(ql(u[2])):1,E=MI,O=y0){var k=new Array(V+1).join("0");q<0?A="-"+k+A.slice(1):A=k+A}}f.push(A)}}else f=DI(u,function(I){return tn(I,!1)});for(var G=0;G{NE.exports=vt;vt.Minimatch=Oe;var cs={sep:"/"};try{cs=require("path")}catch(t){}var jl=vt.GLOBSTAR=Oe.GLOBSTAR={},UI=xE(),IE={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},$l="[^/]",Ml=$l+"*?",GI="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",zI="(?:(?!(?:\\/|^)\\.).)*?",PE=HI("().*{}+?[]^$\\!");function HI(t){return t.split("").reduce(function(e,r){return e[r]=!0,e},{})}var DE=/\/+/;vt.filter=WI;function WI(t,e){return e=e||{},function(r,i,n){return vt(r,t,e)}}function FE(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(i){r[i]=e[i]}),Object.keys(t).forEach(function(i){r[i]=t[i]}),r}vt.defaults=function(t){if(!t||!Object.keys(t).length)return vt;var e=vt,r=function(n,s,o){return e.minimatch(n,s,FE(t,o))};return r.Minimatch=function(n,s){return new e.Minimatch(n,FE(t,s))},r};Oe.defaults=function(t){return!t||!Object.keys(t).length?Oe:vt.defaults(t).Minimatch};function vt(t,e,r){if(typeof e!="string")throw new TypeError("glob pattern string required");return r||(r={}),!r.nocomment&&e.charAt(0)==="#"?!1:e.trim()===""?t==="":new Oe(e,r).match(t)}function Oe(t,e){if(!(this instanceof Oe))return new Oe(t,e);if(typeof t!="string")throw new TypeError("glob pattern string required");e||(e={}),t=t.trim(),cs.sep!=="/"&&(t=t.split(cs.sep).join("/")),this.options=e,this.set=[],this.pattern=t,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}Oe.prototype.debug=function(){};Oe.prototype.make=VI;function VI(){if(!this._made){var t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate();var r=this.globSet=this.braceExpand();e.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(i){return i.split(DE)}),this.debug(this.pattern,r),r=r.map(function(i,n,s){return i.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(i){return i.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}Oe.prototype.parseNegate=YI;function YI(){var t=this.pattern,e=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=t.length;n1024*64)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&t==="**")return jl;if(t==="")return"";var i="",n=!!r.nocase,s=!1,o=[],a=[],u,c=!1,l=-1,f=-1,h=t.charAt(0)==="."?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",y=this;function m(){if(u){switch(u){case"*":i+=Ml,n=!0;break;case"?":i+=$l,n=!0;break;default:i+="\\"+u;break}y.debug("clearStateChar %j %j",u,i),u=!1}}for(var p=0,E=t.length,O;p-1;j--){var S=a[j],I=i.slice(0,S.reStart),M=i.slice(S.reStart,S.reEnd-8),F=i.slice(S.reEnd-8,S.reEnd),B=i.slice(S.reEnd);F+=B;var he=I.split("(").length-1,Z=B;for(p=0;p=0&&(n=t[s],!n);s--);for(s=0;s>> no match, partial?`,t,l,e,f),l===o))}var y;if(typeof u=="string"?(i.nocase?y=c.toLowerCase()===u.toLowerCase():y=c===u,this.debug("string match",u,c,y)):(y=c.match(u),this.debug("pattern match",u,c,y)),!y)return!1}if(n===o&&s===a)return!0;if(n===o)return r;if(s===a){var m=n===o-1&&t[n]==="";return m}throw new Error("wtf?")};function KI(t){return t.replace(/\\(.)/g,"$1")}function JI(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var qE=d((Pq,Bl)=>{typeof Object.create=="function"?Bl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Bl.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var jE=d((Dq,Ul)=>{try{if(Gl=require("util"),typeof Gl.inherits!="function")throw"";Ul.exports=Gl.inherits}catch(t){Ul.exports=qE()}var Gl});var la=d((Fq,ca)=>{"use strict";function $E(t){return t.charAt(0)==="/"}function ME(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=e.exec(t),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}ca.exports=process.platform==="win32"?ME:$E;ca.exports.posix=$E;ca.exports.win32=ME});var Hl=d(Pt=>{Pt.alphasort=BE;Pt.alphasorti=UE;Pt.setopts=e3;Pt.ownProp=GE;Pt.makeAbs=ls;Pt.finish=t3;Pt.mark=r3;Pt.isIgnored=zE;Pt.childrenIgnored=i3;function GE(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var rn=require("path"),n3=ua(),HE=la(),zl=n3.Minimatch;function UE(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function BE(t,e){return t.localeCompare(e)}function o3(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(s3))}function s3(t){var e=null;if(t.slice(-3)==="/**"){var r=t.replace(/(\/\*\*)+$/,"");e=new zl(r,{dot:!0})}return{matcher:new zl(t,{dot:!0}),gmatcher:e}}function e3(t,e,r){if(r||(r={}),r.matchBase&&e.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!r.silent,t.pattern=e,t.strict=r.strict!==!1,t.realpath=!!r.realpath,t.realpathCache=r.realpathCache||Object.create(null),t.follow=!!r.follow,t.dot=!!r.dot,t.mark=!!r.mark,t.nodir=!!r.nodir,t.nodir&&(t.mark=!0),t.sync=!!r.sync,t.nounique=!!r.nounique,t.nonull=!!r.nonull,t.nosort=!!r.nosort,t.nocase=!!r.nocase,t.stat=!!r.stat,t.noprocess=!!r.noprocess,t.absolute=!!r.absolute,t.maxLength=r.maxLength||Infinity,t.cache=r.cache||Object.create(null),t.statCache=r.statCache||Object.create(null),t.symlinks=r.symlinks||Object.create(null),o3(t,r),t.changedCwd=!1;var i=process.cwd();GE(r,"cwd")?(t.cwd=rn.resolve(r.cwd),t.changedCwd=t.cwd!==i):t.cwd=i,t.root=r.root||rn.resolve(t.cwd,"/"),t.root=rn.resolve(t.root),process.platform==="win32"&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=HE(t.cwd)?t.cwd:ls(t,t.cwd),process.platform==="win32"&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,t.minimatch=new zl(e,r),t.options=t.minimatch.options}function t3(t){for(var e=t.nounique,r=e?[]:Object.create(null),i=0,n=t.matches.length;i{WE.exports=VE;VE.GlobSync=be;var fa=require("fs"),a3=Fl(),YE=ua(),qq=YE.Minimatch,jq=Wl().Glob,$q=require("util"),Vl=require("path"),XE=require("assert"),ha=la(),Qt=Hl(),Mq=Qt.alphasort,Bq=Qt.alphasorti,u3=Qt.setopts,Yl=Qt.ownProp,c3=Qt.childrenIgnored,l3=Qt.isIgnored;function VE(t,e){if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob +>>> no match, partial?`,t,l,e,f),l===o))}var y;if(typeof u=="string"?(i.nocase?y=c.toLowerCase()===u.toLowerCase():y=c===u,this.debug("string match",u,c,y)):(y=c.match(u),this.debug("pattern match",u,c,y)),!y)return!1}if(n===o&&s===a)return!0;if(n===o)return r;if(s===a){var m=n===o-1&&t[n]==="";return m}throw new Error("wtf?")};function KI(t){return t.replace(/\\(.)/g,"$1")}function JI(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}});var qE=d((Pq,Bl)=>{typeof Object.create=="function"?Bl.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Bl.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var jE=d((Dq,Ul)=>{try{if(Gl=require("util"),typeof Gl.inherits!="function")throw"";Ul.exports=Gl.inherits}catch(t){Ul.exports=qE()}var Gl});var la=d((Fq,ca)=>{"use strict";function $E(t){return t.charAt(0)==="/"}function ME(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=e.exec(t),i=r[1]||"",n=Boolean(i&&i.charAt(1)!==":");return Boolean(r[2]||n)}ca.exports=process.platform==="win32"?ME:$E;ca.exports.posix=$E;ca.exports.win32=ME});var Hl=d(Dt=>{Dt.alphasort=BE;Dt.alphasorti=UE;Dt.setopts=e3;Dt.ownProp=GE;Dt.makeAbs=ls;Dt.finish=t3;Dt.mark=r3;Dt.isIgnored=zE;Dt.childrenIgnored=i3;function GE(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var rn=require("path"),n3=ua(),HE=la(),zl=n3.Minimatch;function UE(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function BE(t,e){return t.localeCompare(e)}function o3(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(s3))}function s3(t){var e=null;if(t.slice(-3)==="/**"){var r=t.replace(/(\/\*\*)+$/,"");e=new zl(r,{dot:!0})}return{matcher:new zl(t,{dot:!0}),gmatcher:e}}function e3(t,e,r){if(r||(r={}),r.matchBase&&e.indexOf("/")===-1){if(r.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!r.silent,t.pattern=e,t.strict=r.strict!==!1,t.realpath=!!r.realpath,t.realpathCache=r.realpathCache||Object.create(null),t.follow=!!r.follow,t.dot=!!r.dot,t.mark=!!r.mark,t.nodir=!!r.nodir,t.nodir&&(t.mark=!0),t.sync=!!r.sync,t.nounique=!!r.nounique,t.nonull=!!r.nonull,t.nosort=!!r.nosort,t.nocase=!!r.nocase,t.stat=!!r.stat,t.noprocess=!!r.noprocess,t.absolute=!!r.absolute,t.maxLength=r.maxLength||Infinity,t.cache=r.cache||Object.create(null),t.statCache=r.statCache||Object.create(null),t.symlinks=r.symlinks||Object.create(null),o3(t,r),t.changedCwd=!1;var i=process.cwd();GE(r,"cwd")?(t.cwd=rn.resolve(r.cwd),t.changedCwd=t.cwd!==i):t.cwd=i,t.root=r.root||rn.resolve(t.cwd,"/"),t.root=rn.resolve(t.root),process.platform==="win32"&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=HE(t.cwd)?t.cwd:ls(t,t.cwd),process.platform==="win32"&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,t.minimatch=new zl(e,r),t.options=t.minimatch.options}function t3(t){for(var e=t.nounique,r=e?[]:Object.create(null),i=0,n=t.matches.length;i{WE.exports=VE;VE.GlobSync=be;var fa=require("fs"),a3=Fl(),YE=ua(),qq=YE.Minimatch,jq=Wl().Glob,$q=require("util"),Vl=require("path"),XE=require("assert"),ha=la(),Qt=Hl(),Mq=Qt.alphasort,Bq=Qt.alphasorti,u3=Qt.setopts,Yl=Qt.ownProp,c3=Qt.childrenIgnored,l3=Qt.isIgnored;function VE(t,e){if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob See: https://github.com/isaacs/node-glob/issues/167`);return new be(t,e).found}function be(t,e){if(!t)throw new Error("must provide pattern");if(typeof e=="function"||arguments.length===3)throw new TypeError(`callback provided to sync glob -See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof be))return new be(t,e);if(u3(this,t,e),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&Yl(this.cache,e)){var o=this.cache[e];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[e];if(!n){var s;try{s=fa.lstatSync(e)}catch(a){if(a&&(a.code==="ENOENT"||a.code==="ENOTDIR"))return this.statCache[e]=!1,!1}if(s&&s.isSymbolicLink())try{n=fa.statSync(e)}catch(a){n=s}else n=s}this.statCache[e]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,r&&o==="FILE"?!1:o};be.prototype._mark=function(t){return Qt.mark(this,t)};be.prototype._makeAbs=function(t){return Qt.makeAbs(this,t)}});var Xl=d((Gq,ZE)=>{ZE.exports=JE;function JE(t,e){if(t&&e)return JE(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var QE=Xl();Kl.exports=QE(pa);Kl.exports.strict=QE(ew);pa.proto=pa(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return pa(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return ew(this)},configurable:!0})});function pa(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function ew(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var rw=d((Hq,tw)=>{var f3=Xl(),fs=Object.create(null),h3=Zl();tw.exports=f3(p3);function p3(t,e){return fs[t]?(fs[t].push(e),null):(fs[t]=[e],d3(t))}function d3(t){return h3(function e(){var r=fs[t],i=r.length,n=m3(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){e.apply(null,n)})):delete fs[t]}})}function m3(t){for(var e=t.length,r=[],i=0;i{iw.exports=ai;var da=require("fs"),g3=Fl(),nw=ua(),Wq=nw.Minimatch,y3=jE(),v3=require("events").EventEmitter,Jl=require("path"),Ql=require("assert"),hs=la(),ef=KE(),er=Hl(),Vq=er.alphasort,Yq=er.alphasorti,b3=er.setopts,tf=er.ownProp,rf=rw(),Xq=require("util"),E3=er.childrenIgnored,w3=er.isIgnored,S3=Zl();function ai(t,e,r){if(typeof e=="function"&&(r=e,e={}),e||(e={}),e.sync){if(r)throw new TypeError("callback provided to sync glob");return ef(t,e)}return new Q(t,e,r)}ai.sync=ef;var O3=ai.GlobSync=ef.GlobSync;ai.glob=ai;function R3(t,e){if(e===null||typeof e!="object")return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t}ai.hasMagic=function(t,e){var r=R3({},e);r.noprocess=!0;var i=new Q(t,r),n=i.minimatch.set;if(!t)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return e();if(!this.stat&&tf(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return e(null,n);if(i&&n==="FILE")return e()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return e(null,o);var a=o.isDirectory()?"DIR":"FILE";return i&&a==="FILE"?e():e(null,a,o)}var u=this,c=rf("stat\0"+r,l);c&&da.lstat(r,c);function l(f,h){if(h&&h.isSymbolicLink())return da.stat(r,function(y,m){y?u._stat2(t,r,null,h,e):u._stat2(t,r,y,m,e)});u._stat2(t,r,f,h,e)}};Q.prototype._stat2=function(t,e,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[e]=!1,n();var s=t.slice(-1)==="/";if(this.statCache[e]=i,e.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,s&&o==="FILE"?n():n(null,o,i)}});var ya=d((Zq,sw)=>{var oe=require("assert"),ow=require("path"),aw=require("fs"),nn;try{nn=Wl()}catch(t){}var C3={nosort:!0,silent:!0},nf=0,ps=process.platform==="win32",uw=t=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{t[r]=t[r]||aw[r],r=r+"Sync",t[r]=t[r]||aw[r]}),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,t.glob===!1&&(t.disableGlob=!0),t.disableGlob!==!0&&nn===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");t.disableGlob=t.disableGlob||!1,t.glob=t.glob||C3},of=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),oe(t,"rimraf: missing path"),oe.equal(typeof t,"string","rimraf: path should be a string"),oe.equal(typeof r,"function","rimraf: callback function required"),oe(e,"rimraf: invalid options argument provided"),oe.equal(typeof e,"object","rimraf: options should be object"),uw(e);let i=0,n=null,s=0,o=u=>{n=n||u,--s==0&&r(n)},a=(u,c)=>{if(u)return r(u);if(s=c.length,s===0)return r();c.forEach(l=>{let f=h=>{if(h){if((h.code==="EBUSY"||h.code==="ENOTEMPTY"||h.code==="EPERM")&&isf(l,e,f),i*100);if(h.code==="EMFILE"&&nfsf(l,e,f),nf++);h.code==="ENOENT"&&(h=null)}nf=0,o(h)};sf(l,e,f)})};if(e.disableGlob||!nn.hasMagic(t))return a(null,[t]);e.lstat(t,(u,c)=>{if(!u)return a(null,[t]);nn(t,e.glob,a)})},sf=(t,e,r)=>{oe(t),oe(e),oe(typeof r=="function"),e.lstat(t,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&ps&&cw(t,e,i,r),n&&n.isDirectory())return ma(t,e,i,r);e.unlink(t,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return ps?cw(t,e,s,r):ma(t,e,s,r);if(s.code==="EISDIR")return ma(t,e,s,r)}return r(s)})})},cw=(t,e,r,i)=>{oe(t),oe(e),oe(typeof i=="function"),e.chmod(t,438,n=>{n?i(n.code==="ENOENT"?null:r):e.stat(t,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?ma(t,e,r,i):e.unlink(t,i)})})},lw=(t,e,r)=>{oe(t),oe(e);try{e.chmodSync(t,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=e.statSync(t)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?ga(t,e,r):e.unlinkSync(t)},ma=(t,e,r,i)=>{oe(t),oe(e),oe(typeof i=="function"),e.rmdir(t,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?A3(t,e,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},A3=(t,e,r)=>{oe(t),oe(e),oe(typeof r=="function"),e.readdir(t,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return e.rmdir(t,r);let o;n.forEach(a=>{of(ow.join(t,a),e,u=>{if(!o){if(u)return r(o=u);--s==0&&e.rmdir(t,r)}})})})},fw=(t,e)=>{e=e||{},uw(e),oe(t,"rimraf: missing path"),oe.equal(typeof t,"string","rimraf: path should be a string"),oe(e,"rimraf: missing options"),oe.equal(typeof e,"object","rimraf: options should be object");let r;if(e.disableGlob||!nn.hasMagic(t))r=[t];else try{e.lstatSync(t),r=[t]}catch(i){r=nn.sync(t,e.glob)}if(!!r.length)for(let i=0;i{oe(t),oe(e);try{e.rmdirSync(t)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&T3(t,e)}},T3=(t,e)=>{oe(t),oe(e),e.readdirSync(t).forEach(n=>fw(ow.join(t,n),e));let r=ps?100:1,i=0;do{let n=!0;try{let s=e.rmdirSync(t,e);return n=!1,s}finally{if(++i{var Re=require("fs"),af=require("os"),st=require("path"),hw=require("crypto"),Dt={fs:Re.constants,os:af.constants},pw=ya(),dw="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mw=/XXXXXX/,L3=3,gw=(Dt.O_CREAT||Dt.fs.O_CREAT)|(Dt.O_EXCL||Dt.fs.O_EXCL)|(Dt.O_RDWR||Dt.fs.O_RDWR),x3=af.platform()==="win32",N3=Dt.EBADF||Dt.os.errno.EBADF,I3=Dt.ENOENT||Dt.os.errno.ENOENT,yw=448,vw=384,P3="exit",sn=[],bw=Re.rmdirSync.bind(Re),Ew=pw.sync,ww=!1;function uf(t,e){let r=on(t,e),i=r[0],n=r[1];try{Ow(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let a=Sw(i);Re.stat(a,function(u){if(!u)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+a));n(null,a)})}catch(a){n(a)}})()}function cf(t){let e=on(t),r=e[0];Ow(r);let i=r.tries;do{let n=Sw(r);try{Re.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function D3(t,e){let r=on(t,e),i=r[0],n=r[1];uf(i,function(o,a){if(o)return n(o);Re.open(a,gw,i.mode||vw,function(c,l){if(c)return n(c);if(i.discardDescriptor)return Re.close(l,function(h){return n(h,a,void 0,lf(a,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,a,l,lf(a,f?-1:l,i,!1))}})})}function F3(t){let e=on(t),r=e[0],i=r.discardDescriptor||r.detachDescriptor,n=cf(r);var s=Re.openSync(n,gw,r.mode||vw);return r.discardDescriptor&&(Re.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:lf(n,i?-1:s,r,!0)}}function k3(t,e){let r=on(t,e),i=r[0],n=r[1];uf(i,function(o,a){if(o)return n(o);Re.mkdir(a,i.mode||yw,function(c){if(c)return n(c);n(null,a,Rw(a,i,!1))})})}function q3(t){let e=on(t),r=e[0],i=cf(r);return Re.mkdirSync(i,r.mode||yw),{name:i,removeCallback:Rw(i,r,!0)}}function j3(t,e){let r=function(i){if(i&&!ff(i))return e(i);e()};0<=t[0]?Re.close(t[0],function(){Re.unlink(t[1],r)}):Re.unlink(t[1],r)}function M3(t){let e=null;try{0<=t[0]&&Re.closeSync(t[0])}catch(r){if(!$3(r)&&!ff(r))throw r}finally{try{Re.unlinkSync(t[1])}catch(r){ff(r)||(e=r)}}if(e!==null)throw e}function lf(t,e,r,i){let n=va(M3,[e,t],i),s=va(j3,[e,t],i,n);return r.keep||sn.unshift(n),i?n:s}function Rw(t,e,r){let i=e.unsafeCleanup?pw:Re.rmdir.bind(Re),n=e.unsafeCleanup?Ew:bw,s=va(n,t,r),o=va(i,t,r,s);return e.keep||sn.unshift(s),r?s:o}function va(t,e,r,i){let n=!1;return function s(o){if(!n){let a=i||s,u=sn.indexOf(a);return u>=0&&sn.splice(u,1),n=!0,r||t===bw||t===Ew?t(e):t(e,o||function(){})}}}function B3(){if(!!ww)for(;sn.length;)try{sn[0]()}catch(t){}}function _w(t){let e=[],r=null;try{r=hw.randomBytes(t)}catch(n){r=hw.pseudoRandomBytes(t)}for(var i=0;i{Zf(G3);K2(G3,{FetchError:()=>je,Headers:()=>ot,Request:()=>sr,Response:()=>bt,default:()=>tP});var vt=Te(require("stream")),mf=Te(require("http")),ba=Te(require("url")),xw=Te(require("https")),Tr=Te(require("zlib")),z3=vt.default.Readable,rr=Symbol("buffer"),gf=Symbol("type"),ui=class{constructor(){this[gf]="";let e=arguments[0],r=arguments[1],i=[],n=0;if(e){let o=e,a=Number(o.length);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:{},i=r.size;let n=i===void 0?0:i;var s=r.timeout;let o=s===void 0?0:s;t==null?t=null:Iw(t)?t=Buffer.from(t.toString()):ds(t)||Buffer.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=Buffer.from(t):ArrayBuffer.isView(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof vt.default||(t=Buffer.from(String(t)))),this[ir]={body:t,disturbed:!1,error:null},this.size=n,this.timeout=o,t instanceof vt.default&&t.on("error",function(a){let u=a.name==="AbortError"?a:new je(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a);e[ir].error=u})}_e.prototype={get body(){return this[ir].body},get bodyUsed(){return this[ir].disturbed},arrayBuffer(){return an.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return an.call(this).then(function(e){return Object.assign(new ui([],{type:t.toLowerCase()}),{[rr]:e})})},json(){var t=this;return an.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(r){return _e.Promise.reject(new je(`invalid json response body at ${t.url} reason: ${r.message}`,"invalid-json"))}})},text(){return an.call(this).then(function(t){return t.toString()})},buffer(){return an.call(this)},textConverted(){var t=this;return an.call(this).then(function(e){return H3(e,t.headers)})}};Object.defineProperties(_e.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});_e.mixIn=function(t){for(let e of Object.getOwnPropertyNames(_e.prototype))if(!(e in t)){let r=Object.getOwnPropertyDescriptor(_e.prototype,e);Object.defineProperty(t,e,r)}};function an(){var t=this;if(this[ir].disturbed)return _e.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[ir].disturbed=!0,this[ir].error)return _e.Promise.reject(this[ir].error);let e=this.body;if(e===null)return _e.Promise.resolve(Buffer.alloc(0));if(ds(e)&&(e=e.stream()),Buffer.isBuffer(e))return _e.Promise.resolve(e);if(!(e instanceof vt.default))return _e.Promise.resolve(Buffer.alloc(0));let r=[],i=0,n=!1;return new _e.Promise(function(s,o){let a;t.timeout&&(a=setTimeout(function(){n=!0,o(new je(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(u){u.name==="AbortError"?(n=!0,o(u)):o(new je(`Invalid response body while trying to fetch ${t.url}: ${u.message}`,"system",u))}),e.on("data",function(u){if(!(n||u===null)){if(t.size&&i+u.length>t.size){n=!0,o(new je(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}i+=u.length,r.push(u)}}),e.on("end",function(){if(!n){clearTimeout(a);try{s(Buffer.concat(r,i))}catch(u){o(new je(`Could not create Buffer from response body for ${t.url}: ${u.message}`,"system",u))}}})})}function H3(t,e){if(typeof yf!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=e.get("content-type"),i="utf-8",n,s;return r&&(n=/charset=([^;]*)/i.exec(r)),s=t.slice(0,1024).toString(),!n&&s&&(n=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[de]=Object.create(null),e instanceof ot){let r=e.raw(),i=Object.keys(r);for(let n of i)for(let s of r[n])this.append(n,s);return}if(e!=null)if(typeof e=="object"){let r=e[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let i=[];for(let n of e){if(typeof n!="object"||typeof n[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");i.push(Array.from(n))}for(let n of i){if(n.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(n[0],n[1])}}else for(let i of Object.keys(e)){let n=e[i];this.append(i,n)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,ms(e);let r=un(this[de],e);return r===void 0?null:this[de][r].join(", ")}forEach(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=bf(this),n=0;for(;n1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[de]).sort().map(e==="key"?function(i){return i.toLowerCase()}:e==="value"?function(i){return t[de][i].join(", ")}:function(i){return[i.toLowerCase(),t[de][i].join(", ")]})}var wf=Symbol("internal");function Ef(t,e){let r=Object.create(Sf);return r[wf]={target:t,kind:e,index:0},r}var Sf=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Sf)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[wf];let e=t.target,r=t.kind,i=t.index,n=bf(e,r),s=n.length;return i>=s?{value:void 0,done:!0}:(this[wf].index=i+1,{value:n[i],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Sf,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function V3(t){let e=Object.assign({__proto__:null},t[de]),r=un(t[de],"Host");return r!==void 0&&(e[r]=e[r][0]),e}function Y3(t){let e=new ot;for(let r of Object.keys(t))if(!kw.test(r))if(Array.isArray(t[r]))for(let i of t[r])vf.test(i)||(e[de][r]===void 0?e[de][r]=[i]:e[de][r].push(i));else vf.test(t[r])||(e[de][r]=[t[r]]);return e}var Lr=Symbol("Response internals"),X3=mf.default.STATUS_CODES,bt=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};_e.call(this,e,r);let i=r.status||200,n=new ot(r.headers);if(e!=null&&!n.has("Content-Type")){let s=Dw(e);s&&n.append("Content-Type",s)}this[Lr]={url:r.url,status:i,statusText:r.statusText||X3[i],headers:n,counter:r.counter}}get url(){return this[Lr].url||""}get status(){return this[Lr].status}get ok(){return this[Lr].status>=200&&this[Lr].status<300}get redirected(){return this[Lr].counter>0}get statusText(){return this[Lr].statusText}get headers(){return this[Lr].headers}clone(){return new bt(Pw(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};_e.mixIn(bt.prototype);Object.defineProperties(bt.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(bt.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var nr=Symbol("Request internals"),Of=ba.default.parse,K3=ba.default.format,Z3="destroy"in vt.default.Readable.prototype;function Ea(t){return typeof t=="object"&&typeof t[nr]=="object"}function J3(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var sr=class{constructor(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i;Ea(e)?i=Of(e.url):(e&&e.href?i=Of(e.href):i=Of(`${e}`),e={});let n=r.method||e.method||"GET";if(n=n.toUpperCase(),(r.body!=null||Ea(e)&&e.body!==null)&&(n==="GET"||n==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:Ea(e)&&e.body!==null?Pw(e):null;_e.call(this,s,{timeout:r.timeout||e.timeout||0,size:r.size||e.size||0});let o=new ot(r.headers||e.headers||{});if(s!=null&&!o.has("Content-Type")){let u=Dw(s);u&&o.append("Content-Type",u)}let a=Ea(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!J3(a))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[nr]={method:n,redirect:r.redirect||e.redirect||"follow",headers:o,parsedURL:i,signal:a},this.follow=r.follow!==void 0?r.follow:e.follow!==void 0?e.follow:20,this.compress=r.compress!==void 0?r.compress:e.compress!==void 0?e.compress:!0,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent}get method(){return this[nr].method}get url(){return K3(this[nr].parsedURL)}get headers(){return this[nr].headers}get redirect(){return this[nr].redirect}get signal(){return this[nr].signal}clone(){return new sr(this)}};_e.mixIn(sr.prototype);Object.defineProperty(sr.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(sr.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function Q3(t){let e=t[nr].parsedURL,r=new ot(t[nr].headers);if(r.has("Accept")||r.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof vt.default.Readable&&!Z3)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let i=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(i="0"),t.body!=null){let s=Fw(t);typeof s=="number"&&(i=String(s))}i&&r.set("Content-Length",i),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let n=t.agent;return typeof n=="function"&&(n=n(e)),!r.has("Connection")&&!n&&r.set("Connection","close"),Object.assign({},e,{method:t.method,headers:V3(r),agent:n})}function gs(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}gs.prototype=Object.create(Error.prototype);gs.prototype.constructor=gs;gs.prototype.name="AbortError";var jw=vt.default.PassThrough,eP=ba.default.resolve;function xr(t,e){if(!xr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return _e.Promise=xr.Promise,new xr.Promise(function(r,i){let n=new sr(t,e),s=Q3(n),o=(s.protocol==="https:"?xw.default:mf.default).request,a=n.signal,u=null,c=function(){let p=new gs("The user aborted a request.");i(p),n.body&&n.body instanceof vt.default.Readable&&n.body.destroy(p),!(!u||!u.body)&&u.body.emit("error",p)};if(a&&a.aborted){c();return}let l=function(){c(),y()},f=o(s),h;a&&a.addEventListener("abort",l);function y(){f.abort(),a&&a.removeEventListener("abort",l),clearTimeout(h)}n.timeout&&f.once("socket",function(m){h=setTimeout(function(){i(new je(`network timeout at: ${n.url}`,"request-timeout")),y()},n.timeout)}),f.on("error",function(m){i(new je(`request to ${n.url} failed, reason: ${m.message}`,"system",m)),y()}),f.on("response",function(m){clearTimeout(h);let p=Y3(m.headers);if(xr.isRedirect(m.statusCode)){let A=p.get("Location"),V=A===null?null:eP(n.url,A);switch(n.redirect){case"error":i(new je(`uri requested responds with a redirect, redirect mode is set to error: ${n.url}`,"no-redirect")),y();return;case"manual":if(V!==null)try{p.set("Location",V)}catch(G){i(G)}break;case"follow":if(V===null)break;if(n.counter>=n.follow){i(new je(`maximum redirect reached at: ${n.url}`,"max-redirect")),y();return}let k={headers:new ot(n.headers),follow:n.follow,counter:n.counter+1,agent:n.agent,compress:n.compress,method:n.method,body:n.body,signal:n.signal,timeout:n.timeout,size:n.size};if(m.statusCode!==303&&n.body&&Fw(n)===null){i(new je("Cannot follow redirect with body being a readable stream","unsupported-redirect")),y();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&n.method==="POST")&&(k.method="GET",k.body=void 0,k.headers.delete("content-length")),r(xr(new sr(V,k))),y();return}}m.once("end",function(){a&&a.removeEventListener("abort",l)});let E=m.pipe(new jw),O={url:n.url,status:m.statusCode,statusText:m.statusMessage,headers:p,size:n.size,timeout:n.timeout,counter:n.counter},T=p.get("Content-Encoding");if(!n.compress||n.method==="HEAD"||T===null||m.statusCode===204||m.statusCode===304){u=new bt(E,O),r(u);return}let q={flush:Tr.default.Z_SYNC_FLUSH,finishFlush:Tr.default.Z_SYNC_FLUSH};if(T=="gzip"||T=="x-gzip"){E=E.pipe(Tr.default.createGunzip(q)),u=new bt(E,O),r(u);return}if(T=="deflate"||T=="x-deflate"){m.pipe(new jw).once("data",function(V){(V[0]&15)==8?E=E.pipe(Tr.default.createInflate()):E=E.pipe(Tr.default.createInflateRaw()),u=new bt(E,O),r(u)});return}if(T=="br"&&typeof Tr.default.createBrotliDecompress=="function"){E=E.pipe(Tr.default.createBrotliDecompress()),u=new bt(E,O),r(u);return}u=new bt(E,O),r(u)}),W3(f,n)})}xr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};xr.Promise=global.Promise;var tP=xr});var Gw=d(Rf=>{"use strict";var rP=require("net"),ci=require("util"),$w=require("events"),He=ci.debuglog("http");function at(t){if(!(this instanceof at))return new at(t);$w.call(this);var e=this;e.defaultPort=80,e.protocol="http:",e.options=ci._extend({},t),e.options.path=null,e.requests={},e.sockets={},e.freeSockets={},e.keepAliveMsecs=e.options.keepAliveMsecs||1e3,e.keepAlive=e.options.keepAlive||!1,e.maxSockets=e.options.maxSockets||at.defaultMaxSockets,e.maxFreeSockets=e.options.maxFreeSockets||256,e.freeSocketKeepAliveTimeout=e.options.freeSocketKeepAliveTimeout||0,e.timeout=e.options.timeout||0,this.socketActiveTTL=this.options.socketActiveTTL||null,e.on("free",function(r,i){var n=e.getName(i);if(He("agent.on(free)",n),r.writable&&e.requests[n]&&e.requests[n].length)He("continue handle next request"),e.requests[n].shift().onSocket(r),e.requests[n].length===0&&delete e.requests[n];else{var s=r._httpMessage;if(s&&s.shouldKeepAlive&&r.writable&&e.keepAlive){var o=e.freeSockets[n],a=o?o.length:0,u=a;if(e.sockets[n]&&(u+=e.sockets[n].length),u>e.maxSockets||a>=e.maxFreeSockets)r.destroy();else{o=o||[],e.freeSockets[n]=o,r.setKeepAlive(!0,e.keepAliveMsecs),r.unref(),r._httpMessage=null,e.removeSocket(r,i),o.push(r),r.listeners("error").length===0&&r.once("error",Mw);let c=r.freeSocketKeepAliveTimeout||e.freeSocketKeepAliveTimeout;r.setTimeout(c),He(`push to free socket queue and wait for ${c}ms`)}}else r.destroy()}})}ci.inherits(at,$w);Rf.Agent=at;function Mw(t){var e=this;He("SOCKET ERROR on FREE socket:",t.message,t.stack),e.destroy(),e.emit("agentRemove")}at.defaultMaxSockets=Infinity;at.prototype.createConnection=rP.createConnection;at.prototype.getName=function(e){var r=e.host||"localhost";return r+=":",e.port&&(r+=e.port),r+=":",e.localAddress&&(r+=e.localAddress),(e.family===4||e.family===6)&&(r+=":"+e.family),r};function Bw(t){return function(e,r){if(e){process.nextTick(function(){t.emit("error",e)});return}t.onSocket(r)}}at.prototype.addRequest=function(e,r,i,n){typeof r=="string"&&(r={host:r,port:i,localAddress:n}),r=ci._extend({},r),r=ci._extend(r,this.options),r.servername||(r.servername=Uw(r,e));var s=this.getName(r);this.sockets[s]||(this.sockets[s]=[]);var o=this.freeSockets[s]?this.freeSockets[s].length:0,a=o+this.sockets[s].length;if(o){var u=this.freeSockets[s].shift();if(He("have free socket"),u.removeListener("error",Mw),u.setTimeout(this.timeout),this.socketActiveTTL&&Date.now()-u.createdTime>this.socketActiveTTL)return He(`socket ${u.createdTime} expired`),u.destroy(),this.createSocket(e,r,Bw(e));this.freeSockets[s].length||delete this.freeSockets[s],u.ref(),e.onSocket(u),this.sockets[s].push(u)}else a{var cn=1e3,ln=cn*60,fn=ln*60,li=fn*24,iP=li*7,nP=li*365.25;zw.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return sP(t);if(r==="number"&&isFinite(t))return e.long?aP(t):oP(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function sP(t){if(t=String(t),!(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 r=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*nP;case"weeks":case"week":case"w":return r*iP;case"days":case"day":case"d":return r*li;case"hours":case"hour":case"hrs":case"hr":case"h":return r*fn;case"minutes":case"minute":case"mins":case"min":case"m":return r*ln;case"seconds":case"second":case"secs":case"sec":case"s":return r*cn;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function oP(t){var e=Math.abs(t);return e>=li?Math.round(t/li)+"d":e>=fn?Math.round(t/fn)+"h":e>=ln?Math.round(t/ln)+"m":e>=cn?Math.round(t/cn)+"s":t+"ms"}function aP(t){var e=Math.abs(t);return e>=li?wa(t,e,li,"day"):e>=fn?wa(t,e,fn,"hour"):e>=ln?wa(t,e,ln,"minute"):e>=cn?wa(t,e,cn,"second"):t+" ms"}function wa(t,e,r,i){var n=e>=r*1.5;return Math.round(t/r)+" "+i+(n?"s":"")}});var Vw=d((r6,Ww)=>{"use strict";var uP=require("util"),cP=Hw();Ww.exports=function(t){if(typeof t=="number")return t;var e=cP(t);if(e===void 0){var r=new Error(uP.format("humanize-ms(%j) result undefined",t));console.warn(r.stack)}return e}});var Cf=d((i6,Yw)=>{"use strict";var lP=Gw().Agent,Xw=Vw(),Kw=class extends lP{constructor(e){e=e||{},e.keepAlive=e.keepAlive!==!1,e.freeSocketKeepAliveTimeout===void 0&&(e.freeSocketKeepAliveTimeout=15e3),e.keepAliveTimeout&&(e.freeSocketKeepAliveTimeout=e.keepAliveTimeout),e.freeSocketKeepAliveTimeout=Xw(e.freeSocketKeepAliveTimeout),e.timeout===void 0&&(e.timeout=e.freeSocketKeepAliveTimeout*2,e.timeout<3e4&&(e.timeout=3e4)),e.timeout=Xw(e.timeout),super(e),this.createSocketCount=0,this.createSocketCountLastCheck=0,this.createSocketErrorCount=0,this.createSocketErrorCountLastCheck=0,this.closeSocketCount=0,this.closeSocketCountLastCheck=0,this.errorSocketCount=0,this.errorSocketCountLastCheck=0,this.requestCount=0,this.requestCountLastCheck=0,this.timeoutSocketCount=0,this.timeoutSocketCountLastCheck=0,this.on("free",r=>{this.requestCount++,r.lastFreeTime=Date.now()}),this.on("timeout",()=>{this.timeoutSocketCount++}),this.on("close",()=>{this.closeSocketCount++}),this.on("error",()=>{this.errorSocketCount++})}createSocket(e,r,i){super.createSocket(e,r,(n,s)=>{if(n)return this.createSocketErrorCount++,i(n);this.keepAlive&&s.setNoDelay(!0),this.createSocketCount++,i(null,s)})}get statusChanged(){let e=this.createSocketCount!==this.createSocketCountLastCheck||this.createSocketErrorCount!==this.createSocketErrorCountLastCheck||this.closeSocketCount!==this.closeSocketCountLastCheck||this.errorSocketCount!==this.errorSocketCountLastCheck||this.timeoutSocketCount!==this.timeoutSocketCountLastCheck||this.requestCount!==this.requestCountLastCheck;return e&&(this.createSocketCountLastCheck=this.createSocketCount,this.createSocketErrorCountLastCheck=this.createSocketErrorCount,this.closeSocketCountLastCheck=this.closeSocketCount,this.errorSocketCountLastCheck=this.errorSocketCount,this.timeoutSocketCountLastCheck=this.timeoutSocketCount,this.requestCountLastCheck=this.requestCount),e}getCurrentStatus(){return{createSocketCount:this.createSocketCount,createSocketErrorCount:this.createSocketErrorCount,closeSocketCount:this.closeSocketCount,errorSocketCount:this.errorSocketCount,timeoutSocketCount:this.timeoutSocketCount,requestCount:this.requestCount,freeSockets:_f(this.freeSockets),sockets:_f(this.sockets),requests:_f(this.requests)}}};Yw.exports=Kw;function _f(t){let e={};for(let r in t)e[r]=t[r].length;return e}});var Qw=d((n6,Zw)=>{"use strict";var fP=require("https"),hP=Cf(),Jw=fP.Agent,Af=class extends hP{constructor(e){super(e);this.defaultPort=443,this.protocol="https:",this.maxCachedSessions=this.options.maxCachedSessions,this.maxCachedSessions===void 0&&(this.maxCachedSessions=100),this._sessionCache={map:{},list:[]}}};["createConnection","getName","_getSession","_cacheSession","_evictSession"].forEach(function(t){typeof Jw.prototype[t]=="function"&&(Af.prototype[t]=Jw.prototype[t])});Zw.exports=Af});var eS=d((s6,Tf)=>{"use strict";Tf.exports=Cf();Tf.exports.HttpsAgent=Qw()});var rS=d((o6,tS)=>{var vs=1e3,bs=vs*60,Es=bs*60,ws=Es*24,pP=ws*365.25;tS.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return dP(t);if(r==="number"&&isNaN(t)===!1)return e.long?gP(t):mP(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function dP(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*pP;case"days":case"day":case"d":return r*ws;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Es;case"minutes":case"minute":case"mins":case"min":case"m":return r*bs;case"seconds":case"second":case"secs":case"sec":case"s":return r*vs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function mP(t){return t>=ws?Math.round(t/ws)+"d":t>=Es?Math.round(t/Es)+"h":t>=bs?Math.round(t/bs)+"m":t>=vs?Math.round(t/vs)+"s":t+"ms"}function gP(t){return Sa(t,ws,"day")||Sa(t,Es,"hour")||Sa(t,bs,"minute")||Sa(t,vs,"second")||t+" ms"}function Sa(t,e,r){if(!(t{z=iS.exports=Lf.debug=Lf.default=Lf;z.coerce=yP;z.disable=vP;z.enable=bP;z.enabled=EP;z.humanize=rS();z.instances=[];z.names=[];z.skips=[];z.formatters={};function wP(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return z.colors[Math.abs(e)%z.colors.length]}function Lf(t){var e;function r(){if(!!r.enabled){var i=r,n=+new Date,s=n-(e||n);i.diff=s,i.prev=e,i.curr=n,e=n;for(var o=new Array(arguments.length),a=0;a{We=nS.exports=xf();We.log=OP;We.formatArgs=RP;We.save=_P;We.load=sS;We.useColors=CP;We.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:AP();We.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"];function CP(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}We.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function RP(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+We.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(i++,s==="%c"&&(n=i))}),t.splice(n,0,r)}}function OP(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function _P(t){try{t==null?We.storage.removeItem("debug"):We.storage.debug=t}catch(e){}}function sS(){var t;try{t=We.storage.debug}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}We.enable(sS());function AP(){try{return window.localStorage}catch(t){}}});var uS=d((a6,aS)=>{"use strict";aS.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var TP=require("os"),lS=require("tty"),Et=uS(),{env:Ce}=process,Nr;Et("no-color")||Et("no-colors")||Et("color=false")||Et("color=never")?Nr=0:(Et("color")||Et("colors")||Et("color=true")||Et("color=always"))&&(Nr=1);"FORCE_COLOR"in Ce&&(Ce.FORCE_COLOR==="true"?Nr=1:Ce.FORCE_COLOR==="false"?Nr=0:Nr=Ce.FORCE_COLOR.length===0?1:Math.min(parseInt(Ce.FORCE_COLOR,10),3));function Nf(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function If(t,e){if(Nr===0)return 0;if(Et("color=16m")||Et("color=full")||Et("color=truecolor"))return 3;if(Et("color=256"))return 2;if(t&&!e&&Nr===void 0)return 0;let r=Nr||0;if(Ce.TERM==="dumb")return r;if(process.platform==="win32"){let i=TP.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Ce)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in Ce)||Ce.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ce)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ce.TEAMCITY_VERSION)?1:0;if(Ce.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ce){let i=parseInt((Ce.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ce.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ce.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ce.TERM)||"COLORTERM"in Ce?1:r}function LP(t){let e=If(t,t&&t.isTTY);return Nf(e)}cS.exports={supportsColor:LP,stdout:Nf(If(!0,lS.isatty(1))),stderr:Nf(If(!0,lS.isatty(2)))}});var dS=d((ge,hS)=>{var xP=require("tty"),Oa=require("util");ge=hS.exports=xf();ge.init=NP;ge.log=IP;ge.formatArgs=PP;ge.save=DP;ge.load=pS;ge.useColors=FP;ge.colors=[6,2,3,4,5,1];try{Pf=fS(),Pf&&Pf.level>=2&&(ge.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(t){}var Pf;ge.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(n,s){return s.toUpperCase()}),i=process.env[e];return/^(yes|on|true|enabled)$/i.test(i)?i=!0:/^(no|off|false|disabled)$/i.test(i)?i=!1:i==="null"?i=null:i=Number(i),t[r]=i,t},{});function FP(){return"colors"in ge.inspectOpts?Boolean(ge.inspectOpts.colors):xP.isatty(process.stderr.fd)}ge.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Oa.inspect(t,this.inspectOpts).split(` +See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof be))return new be(t,e);if(u3(this,t,e),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var i=0;ithis.maxLength)return!1;if(!this.stat&&Yl(this.cache,e)){var o=this.cache[e];if(Array.isArray(o)&&(o="DIR"),!r||o==="DIR")return o;if(r&&o==="FILE")return!1}var i,n=this.statCache[e];if(!n){var s;try{s=fa.lstatSync(e)}catch(a){if(a&&(a.code==="ENOENT"||a.code==="ENOTDIR"))return this.statCache[e]=!1,!1}if(s&&s.isSymbolicLink())try{n=fa.statSync(e)}catch(a){n=s}else n=s}this.statCache[e]=n;var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,r&&o==="FILE"?!1:o};be.prototype._mark=function(t){return Qt.mark(this,t)};be.prototype._makeAbs=function(t){return Qt.makeAbs(this,t)}});var Xl=d((Gq,ZE)=>{ZE.exports=JE;function JE(t,e){if(t&&e)return JE(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var QE=Xl();Kl.exports=QE(pa);Kl.exports.strict=QE(ew);pa.proto=pa(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return pa(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return ew(this)},configurable:!0})});function pa(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function ew(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var rw=d((Hq,tw)=>{var f3=Xl(),fs=Object.create(null),h3=Zl();tw.exports=f3(p3);function p3(t,e){return fs[t]?(fs[t].push(e),null):(fs[t]=[e],d3(t))}function d3(t){return h3(function e(){var r=fs[t],i=r.length,n=m3(arguments);try{for(var s=0;si?(r.splice(0,i),process.nextTick(function(){e.apply(null,n)})):delete fs[t]}})}function m3(t){for(var e=t.length,r=[],i=0;i{iw.exports=ai;var da=require("fs"),g3=Fl(),nw=ua(),Wq=nw.Minimatch,y3=jE(),v3=require("events").EventEmitter,Jl=require("path"),Ql=require("assert"),hs=la(),ef=KE(),er=Hl(),Vq=er.alphasort,Yq=er.alphasorti,b3=er.setopts,tf=er.ownProp,rf=rw(),Xq=require("util"),E3=er.childrenIgnored,w3=er.isIgnored,S3=Zl();function ai(t,e,r){if(typeof e=="function"&&(r=e,e={}),e||(e={}),e.sync){if(r)throw new TypeError("callback provided to sync glob");return ef(t,e)}return new Q(t,e,r)}ai.sync=ef;var O3=ai.GlobSync=ef.GlobSync;ai.glob=ai;function R3(t,e){if(e===null||typeof e!="object")return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t}ai.hasMagic=function(t,e){var r=R3({},e);r.noprocess=!0;var i=new Q(t,r),n=i.minimatch.set;if(!t)return!1;if(n.length>1)return!0;for(var s=0;sthis.maxLength)return e();if(!this.stat&&tf(this.cache,r)){var n=this.cache[r];if(Array.isArray(n)&&(n="DIR"),!i||n==="DIR")return e(null,n);if(i&&n==="FILE")return e()}var s,o=this.statCache[r];if(o!==void 0){if(o===!1)return e(null,o);var a=o.isDirectory()?"DIR":"FILE";return i&&a==="FILE"?e():e(null,a,o)}var u=this,c=rf("stat\0"+r,l);c&&da.lstat(r,c);function l(f,h){if(h&&h.isSymbolicLink())return da.stat(r,function(y,m){y?u._stat2(t,r,null,h,e):u._stat2(t,r,y,m,e)});u._stat2(t,r,f,h,e)}};Q.prototype._stat2=function(t,e,r,i,n){if(r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return this.statCache[e]=!1,n();var s=t.slice(-1)==="/";if(this.statCache[e]=i,e.slice(-1)==="/"&&i&&!i.isDirectory())return n(null,!1,i);var o=!0;return i&&(o=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||o,s&&o==="FILE"?n():n(null,o,i)}});var ya=d((Zq,sw)=>{var oe=require("assert"),ow=require("path"),aw=require("fs"),nn;try{nn=Wl()}catch(t){}var C3={nosort:!0,silent:!0},nf=0,ps=process.platform==="win32",uw=t=>{if(["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{t[r]=t[r]||aw[r],r=r+"Sync",t[r]=t[r]||aw[r]}),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,t.glob===!1&&(t.disableGlob=!0),t.disableGlob!==!0&&nn===void 0)throw Error("glob dependency not found, set `options.disableGlob = true` if intentional");t.disableGlob=t.disableGlob||!1,t.glob=t.glob||C3},of=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),oe(t,"rimraf: missing path"),oe.equal(typeof t,"string","rimraf: path should be a string"),oe.equal(typeof r,"function","rimraf: callback function required"),oe(e,"rimraf: invalid options argument provided"),oe.equal(typeof e,"object","rimraf: options should be object"),uw(e);let i=0,n=null,s=0,o=u=>{n=n||u,--s==0&&r(n)},a=(u,c)=>{if(u)return r(u);if(s=c.length,s===0)return r();c.forEach(l=>{let f=h=>{if(h){if((h.code==="EBUSY"||h.code==="ENOTEMPTY"||h.code==="EPERM")&&isf(l,e,f),i*100);if(h.code==="EMFILE"&&nfsf(l,e,f),nf++);h.code==="ENOENT"&&(h=null)}nf=0,o(h)};sf(l,e,f)})};if(e.disableGlob||!nn.hasMagic(t))return a(null,[t]);e.lstat(t,(u,c)=>{if(!u)return a(null,[t]);nn(t,e.glob,a)})},sf=(t,e,r)=>{oe(t),oe(e),oe(typeof r=="function"),e.lstat(t,(i,n)=>{if(i&&i.code==="ENOENT")return r(null);if(i&&i.code==="EPERM"&&ps&&cw(t,e,i,r),n&&n.isDirectory())return ma(t,e,i,r);e.unlink(t,s=>{if(s){if(s.code==="ENOENT")return r(null);if(s.code==="EPERM")return ps?cw(t,e,s,r):ma(t,e,s,r);if(s.code==="EISDIR")return ma(t,e,s,r)}return r(s)})})},cw=(t,e,r,i)=>{oe(t),oe(e),oe(typeof i=="function"),e.chmod(t,438,n=>{n?i(n.code==="ENOENT"?null:r):e.stat(t,(s,o)=>{s?i(s.code==="ENOENT"?null:r):o.isDirectory()?ma(t,e,r,i):e.unlink(t,i)})})},lw=(t,e,r)=>{oe(t),oe(e);try{e.chmodSync(t,438)}catch(n){if(n.code==="ENOENT")return;throw r}let i;try{i=e.statSync(t)}catch(n){if(n.code==="ENOENT")return;throw r}i.isDirectory()?ga(t,e,r):e.unlinkSync(t)},ma=(t,e,r,i)=>{oe(t),oe(e),oe(typeof i=="function"),e.rmdir(t,n=>{n&&(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")?A3(t,e,i):n&&n.code==="ENOTDIR"?i(r):i(n)})},A3=(t,e,r)=>{oe(t),oe(e),oe(typeof r=="function"),e.readdir(t,(i,n)=>{if(i)return r(i);let s=n.length;if(s===0)return e.rmdir(t,r);let o;n.forEach(a=>{of(ow.join(t,a),e,u=>{if(!o){if(u)return r(o=u);--s==0&&e.rmdir(t,r)}})})})},fw=(t,e)=>{e=e||{},uw(e),oe(t,"rimraf: missing path"),oe.equal(typeof t,"string","rimraf: path should be a string"),oe(e,"rimraf: missing options"),oe.equal(typeof e,"object","rimraf: options should be object");let r;if(e.disableGlob||!nn.hasMagic(t))r=[t];else try{e.lstatSync(t),r=[t]}catch(i){r=nn.sync(t,e.glob)}if(!!r.length)for(let i=0;i{oe(t),oe(e);try{e.rmdirSync(t)}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR")throw r;(i.code==="ENOTEMPTY"||i.code==="EEXIST"||i.code==="EPERM")&&T3(t,e)}},T3=(t,e)=>{oe(t),oe(e),e.readdirSync(t).forEach(n=>fw(ow.join(t,n),e));let r=ps?100:1,i=0;do{let n=!0;try{let s=e.rmdirSync(t,e);return n=!1,s}finally{if(++i{var Re=require("fs"),af=require("os"),st=require("path"),hw=require("crypto"),Ft={fs:Re.constants,os:af.constants},pw=ya(),dw="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mw=/XXXXXX/,L3=3,gw=(Ft.O_CREAT||Ft.fs.O_CREAT)|(Ft.O_EXCL||Ft.fs.O_EXCL)|(Ft.O_RDWR||Ft.fs.O_RDWR),x3=af.platform()==="win32",N3=Ft.EBADF||Ft.os.errno.EBADF,I3=Ft.ENOENT||Ft.os.errno.ENOENT,yw=448,vw=384,P3="exit",sn=[],bw=Re.rmdirSync.bind(Re),Ew=pw.sync,ww=!1;function uf(t,e){let r=on(t,e),i=r[0],n=r[1];try{Ow(i)}catch(o){return n(o)}let s=i.tries;(function o(){try{let a=Sw(i);Re.stat(a,function(u){if(!u)return s-- >0?o():n(new Error("Could not get a unique tmp filename, max tries reached "+a));n(null,a)})}catch(a){n(a)}})()}function cf(t){let e=on(t),r=e[0];Ow(r);let i=r.tries;do{let n=Sw(r);try{Re.statSync(n)}catch(s){return n}}while(i-- >0);throw new Error("Could not get a unique tmp filename, max tries reached")}function D3(t,e){let r=on(t,e),i=r[0],n=r[1];uf(i,function(o,a){if(o)return n(o);Re.open(a,gw,i.mode||vw,function(c,l){if(c)return n(c);if(i.discardDescriptor)return Re.close(l,function(h){return n(h,a,void 0,lf(a,-1,i,!1))});{let f=i.discardDescriptor||i.detachDescriptor;n(null,a,l,lf(a,f?-1:l,i,!1))}})})}function F3(t){let e=on(t),r=e[0],i=r.discardDescriptor||r.detachDescriptor,n=cf(r);var s=Re.openSync(n,gw,r.mode||vw);return r.discardDescriptor&&(Re.closeSync(s),s=void 0),{name:n,fd:s,removeCallback:lf(n,i?-1:s,r,!0)}}function k3(t,e){let r=on(t,e),i=r[0],n=r[1];uf(i,function(o,a){if(o)return n(o);Re.mkdir(a,i.mode||yw,function(c){if(c)return n(c);n(null,a,Rw(a,i,!1))})})}function q3(t){let e=on(t),r=e[0],i=cf(r);return Re.mkdirSync(i,r.mode||yw),{name:i,removeCallback:Rw(i,r,!0)}}function j3(t,e){let r=function(i){if(i&&!ff(i))return e(i);e()};0<=t[0]?Re.close(t[0],function(){Re.unlink(t[1],r)}):Re.unlink(t[1],r)}function M3(t){let e=null;try{0<=t[0]&&Re.closeSync(t[0])}catch(r){if(!$3(r)&&!ff(r))throw r}finally{try{Re.unlinkSync(t[1])}catch(r){ff(r)||(e=r)}}if(e!==null)throw e}function lf(t,e,r,i){let n=va(M3,[e,t],i),s=va(j3,[e,t],i,n);return r.keep||sn.unshift(n),i?n:s}function Rw(t,e,r){let i=e.unsafeCleanup?pw:Re.rmdir.bind(Re),n=e.unsafeCleanup?Ew:bw,s=va(n,t,r),o=va(i,t,r,s);return e.keep||sn.unshift(s),r?s:o}function va(t,e,r,i){let n=!1;return function s(o){if(!n){let a=i||s,u=sn.indexOf(a);return u>=0&&sn.splice(u,1),n=!0,r||t===bw||t===Ew?t(e):t(e,o||function(){})}}}function B3(){if(!!ww)for(;sn.length;)try{sn[0]()}catch(t){}}function _w(t){let e=[],r=null;try{r=hw.randomBytes(t)}catch(n){r=hw.pseudoRandomBytes(t)}for(var i=0;i{Zf(G3);K2(G3,{FetchError:()=>je,Headers:()=>ot,Request:()=>sr,Response:()=>Et,default:()=>tP});var bt=Te(require("stream")),mf=Te(require("http")),ba=Te(require("url")),xw=Te(require("https")),Tr=Te(require("zlib")),z3=bt.default.Readable,rr=Symbol("buffer"),gf=Symbol("type"),ui=class{constructor(){this[gf]="";let e=arguments[0],r=arguments[1],i=[],n=0;if(e){let o=e,a=Number(o.length);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:{},i=r.size;let n=i===void 0?0:i;var s=r.timeout;let o=s===void 0?0:s;t==null?t=null:Iw(t)?t=Buffer.from(t.toString()):ds(t)||Buffer.isBuffer(t)||(Object.prototype.toString.call(t)==="[object ArrayBuffer]"?t=Buffer.from(t):ArrayBuffer.isView(t)?t=Buffer.from(t.buffer,t.byteOffset,t.byteLength):t instanceof bt.default||(t=Buffer.from(String(t)))),this[ir]={body:t,disturbed:!1,error:null},this.size=n,this.timeout=o,t instanceof bt.default&&t.on("error",function(a){let u=a.name==="AbortError"?a:new je(`Invalid response body while trying to fetch ${e.url}: ${a.message}`,"system",a);e[ir].error=u})}_e.prototype={get body(){return this[ir].body},get bodyUsed(){return this[ir].disturbed},arrayBuffer(){return an.call(this).then(function(t){return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)})},blob(){let t=this.headers&&this.headers.get("content-type")||"";return an.call(this).then(function(e){return Object.assign(new ui([],{type:t.toLowerCase()}),{[rr]:e})})},json(){var t=this;return an.call(this).then(function(e){try{return JSON.parse(e.toString())}catch(r){return _e.Promise.reject(new je(`invalid json response body at ${t.url} reason: ${r.message}`,"invalid-json"))}})},text(){return an.call(this).then(function(t){return t.toString()})},buffer(){return an.call(this)},textConverted(){var t=this;return an.call(this).then(function(e){return H3(e,t.headers)})}};Object.defineProperties(_e.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});_e.mixIn=function(t){for(let e of Object.getOwnPropertyNames(_e.prototype))if(!(e in t)){let r=Object.getOwnPropertyDescriptor(_e.prototype,e);Object.defineProperty(t,e,r)}};function an(){var t=this;if(this[ir].disturbed)return _e.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[ir].disturbed=!0,this[ir].error)return _e.Promise.reject(this[ir].error);let e=this.body;if(e===null)return _e.Promise.resolve(Buffer.alloc(0));if(ds(e)&&(e=e.stream()),Buffer.isBuffer(e))return _e.Promise.resolve(e);if(!(e instanceof bt.default))return _e.Promise.resolve(Buffer.alloc(0));let r=[],i=0,n=!1;return new _e.Promise(function(s,o){let a;t.timeout&&(a=setTimeout(function(){n=!0,o(new je(`Response timeout while trying to fetch ${t.url} (over ${t.timeout}ms)`,"body-timeout"))},t.timeout)),e.on("error",function(u){u.name==="AbortError"?(n=!0,o(u)):o(new je(`Invalid response body while trying to fetch ${t.url}: ${u.message}`,"system",u))}),e.on("data",function(u){if(!(n||u===null)){if(t.size&&i+u.length>t.size){n=!0,o(new je(`content size at ${t.url} over limit: ${t.size}`,"max-size"));return}i+=u.length,r.push(u)}}),e.on("end",function(){if(!n){clearTimeout(a);try{s(Buffer.concat(r,i))}catch(u){o(new je(`Could not create Buffer from response body for ${t.url}: ${u.message}`,"system",u))}}})})}function H3(t,e){if(typeof yf!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=e.get("content-type"),i="utf-8",n,s;return r&&(n=/charset=([^;]*)/i.exec(r)),s=t.slice(0,1024).toString(),!n&&s&&(n=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[de]=Object.create(null),e instanceof ot){let r=e.raw(),i=Object.keys(r);for(let n of i)for(let s of r[n])this.append(n,s);return}if(e!=null)if(typeof e=="object"){let r=e[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let i=[];for(let n of e){if(typeof n!="object"||typeof n[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");i.push(Array.from(n))}for(let n of i){if(n.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(n[0],n[1])}}else for(let i of Object.keys(e)){let n=e[i];this.append(i,n)}}else throw new TypeError("Provided initializer must be an object")}get(e){e=`${e}`,ms(e);let r=un(this[de],e);return r===void 0?null:this[de][r].join(", ")}forEach(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=bf(this),n=0;for(;n1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(t[de]).sort().map(e==="key"?function(i){return i.toLowerCase()}:e==="value"?function(i){return t[de][i].join(", ")}:function(i){return[i.toLowerCase(),t[de][i].join(", ")]})}var wf=Symbol("internal");function Ef(t,e){let r=Object.create(Sf);return r[wf]={target:t,kind:e,index:0},r}var Sf=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==Sf)throw new TypeError("Value of `this` is not a HeadersIterator");var t=this[wf];let e=t.target,r=t.kind,i=t.index,n=bf(e,r),s=n.length;return i>=s?{value:void 0,done:!0}:(this[wf].index=i+1,{value:n[i],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(Sf,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function V3(t){let e=Object.assign({__proto__:null},t[de]),r=un(t[de],"Host");return r!==void 0&&(e[r]=e[r][0]),e}function Y3(t){let e=new ot;for(let r of Object.keys(t))if(!kw.test(r))if(Array.isArray(t[r]))for(let i of t[r])vf.test(i)||(e[de][r]===void 0?e[de][r]=[i]:e[de][r].push(i));else vf.test(t[r])||(e[de][r]=[t[r]]);return e}var Lr=Symbol("Response internals"),X3=mf.default.STATUS_CODES,Et=class{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};_e.call(this,e,r);let i=r.status||200,n=new ot(r.headers);if(e!=null&&!n.has("Content-Type")){let s=Dw(e);s&&n.append("Content-Type",s)}this[Lr]={url:r.url,status:i,statusText:r.statusText||X3[i],headers:n,counter:r.counter}}get url(){return this[Lr].url||""}get status(){return this[Lr].status}get ok(){return this[Lr].status>=200&&this[Lr].status<300}get redirected(){return this[Lr].counter>0}get statusText(){return this[Lr].statusText}get headers(){return this[Lr].headers}clone(){return new Et(Pw(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};_e.mixIn(Et.prototype);Object.defineProperties(Et.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(Et.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var nr=Symbol("Request internals"),Of=ba.default.parse,K3=ba.default.format,Z3="destroy"in bt.default.Readable.prototype;function Ea(t){return typeof t=="object"&&typeof t[nr]=="object"}function J3(t){let e=t&&typeof t=="object"&&Object.getPrototypeOf(t);return!!(e&&e.constructor.name==="AbortSignal")}var sr=class{constructor(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i;Ea(e)?i=Of(e.url):(e&&e.href?i=Of(e.href):i=Of(`${e}`),e={});let n=r.method||e.method||"GET";if(n=n.toUpperCase(),(r.body!=null||Ea(e)&&e.body!==null)&&(n==="GET"||n==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:Ea(e)&&e.body!==null?Pw(e):null;_e.call(this,s,{timeout:r.timeout||e.timeout||0,size:r.size||e.size||0});let o=new ot(r.headers||e.headers||{});if(s!=null&&!o.has("Content-Type")){let u=Dw(s);u&&o.append("Content-Type",u)}let a=Ea(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!J3(a))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[nr]={method:n,redirect:r.redirect||e.redirect||"follow",headers:o,parsedURL:i,signal:a},this.follow=r.follow!==void 0?r.follow:e.follow!==void 0?e.follow:20,this.compress=r.compress!==void 0?r.compress:e.compress!==void 0?e.compress:!0,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent}get method(){return this[nr].method}get url(){return K3(this[nr].parsedURL)}get headers(){return this[nr].headers}get redirect(){return this[nr].redirect}get signal(){return this[nr].signal}clone(){return new sr(this)}};_e.mixIn(sr.prototype);Object.defineProperty(sr.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(sr.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function Q3(t){let e=t[nr].parsedURL,r=new ot(t[nr].headers);if(r.has("Accept")||r.set("Accept","*/*"),!e.protocol||!e.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(e.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(t.signal&&t.body instanceof bt.default.Readable&&!Z3)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let i=null;if(t.body==null&&/^(POST|PUT)$/i.test(t.method)&&(i="0"),t.body!=null){let s=Fw(t);typeof s=="number"&&(i=String(s))}i&&r.set("Content-Length",i),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let n=t.agent;return typeof n=="function"&&(n=n(e)),!r.has("Connection")&&!n&&r.set("Connection","close"),Object.assign({},e,{method:t.method,headers:V3(r),agent:n})}function gs(t){Error.call(this,t),this.type="aborted",this.message=t,Error.captureStackTrace(this,this.constructor)}gs.prototype=Object.create(Error.prototype);gs.prototype.constructor=gs;gs.prototype.name="AbortError";var jw=bt.default.PassThrough,eP=ba.default.resolve;function xr(t,e){if(!xr.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return _e.Promise=xr.Promise,new xr.Promise(function(r,i){let n=new sr(t,e),s=Q3(n),o=(s.protocol==="https:"?xw.default:mf.default).request,a=n.signal,u=null,c=function(){let p=new gs("The user aborted a request.");i(p),n.body&&n.body instanceof bt.default.Readable&&n.body.destroy(p),!(!u||!u.body)&&u.body.emit("error",p)};if(a&&a.aborted){c();return}let l=function(){c(),y()},f=o(s),h;a&&a.addEventListener("abort",l);function y(){f.abort(),a&&a.removeEventListener("abort",l),clearTimeout(h)}n.timeout&&f.once("socket",function(m){h=setTimeout(function(){i(new je(`network timeout at: ${n.url}`,"request-timeout")),y()},n.timeout)}),f.on("error",function(m){i(new je(`request to ${n.url} failed, reason: ${m.message}`,"system",m)),y()}),f.on("response",function(m){clearTimeout(h);let p=Y3(m.headers);if(xr.isRedirect(m.statusCode)){let A=p.get("Location"),V=A===null?null:eP(n.url,A);switch(n.redirect){case"error":i(new je(`uri requested responds with a redirect, redirect mode is set to error: ${n.url}`,"no-redirect")),y();return;case"manual":if(V!==null)try{p.set("Location",V)}catch(G){i(G)}break;case"follow":if(V===null)break;if(n.counter>=n.follow){i(new je(`maximum redirect reached at: ${n.url}`,"max-redirect")),y();return}let k={headers:new ot(n.headers),follow:n.follow,counter:n.counter+1,agent:n.agent,compress:n.compress,method:n.method,body:n.body,signal:n.signal,timeout:n.timeout,size:n.size};if(m.statusCode!==303&&n.body&&Fw(n)===null){i(new je("Cannot follow redirect with body being a readable stream","unsupported-redirect")),y();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&n.method==="POST")&&(k.method="GET",k.body=void 0,k.headers.delete("content-length")),r(xr(new sr(V,k))),y();return}}m.once("end",function(){a&&a.removeEventListener("abort",l)});let E=m.pipe(new jw),O={url:n.url,status:m.statusCode,statusText:m.statusMessage,headers:p,size:n.size,timeout:n.timeout,counter:n.counter},T=p.get("Content-Encoding");if(!n.compress||n.method==="HEAD"||T===null||m.statusCode===204||m.statusCode===304){u=new Et(E,O),r(u);return}let q={flush:Tr.default.Z_SYNC_FLUSH,finishFlush:Tr.default.Z_SYNC_FLUSH};if(T=="gzip"||T=="x-gzip"){E=E.pipe(Tr.default.createGunzip(q)),u=new Et(E,O),r(u);return}if(T=="deflate"||T=="x-deflate"){m.pipe(new jw).once("data",function(V){(V[0]&15)==8?E=E.pipe(Tr.default.createInflate()):E=E.pipe(Tr.default.createInflateRaw()),u=new Et(E,O),r(u)});return}if(T=="br"&&typeof Tr.default.createBrotliDecompress=="function"){E=E.pipe(Tr.default.createBrotliDecompress()),u=new Et(E,O),r(u);return}u=new Et(E,O),r(u)}),W3(f,n)})}xr.isRedirect=function(t){return t===301||t===302||t===303||t===307||t===308};xr.Promise=global.Promise;var tP=xr});var Gw=d(Rf=>{"use strict";var rP=require("net"),ci=require("util"),$w=require("events"),He=ci.debuglog("http");function at(t){if(!(this instanceof at))return new at(t);$w.call(this);var e=this;e.defaultPort=80,e.protocol="http:",e.options=ci._extend({},t),e.options.path=null,e.requests={},e.sockets={},e.freeSockets={},e.keepAliveMsecs=e.options.keepAliveMsecs||1e3,e.keepAlive=e.options.keepAlive||!1,e.maxSockets=e.options.maxSockets||at.defaultMaxSockets,e.maxFreeSockets=e.options.maxFreeSockets||256,e.freeSocketKeepAliveTimeout=e.options.freeSocketKeepAliveTimeout||0,e.timeout=e.options.timeout||0,this.socketActiveTTL=this.options.socketActiveTTL||null,e.on("free",function(r,i){var n=e.getName(i);if(He("agent.on(free)",n),r.writable&&e.requests[n]&&e.requests[n].length)He("continue handle next request"),e.requests[n].shift().onSocket(r),e.requests[n].length===0&&delete e.requests[n];else{var s=r._httpMessage;if(s&&s.shouldKeepAlive&&r.writable&&e.keepAlive){var o=e.freeSockets[n],a=o?o.length:0,u=a;if(e.sockets[n]&&(u+=e.sockets[n].length),u>e.maxSockets||a>=e.maxFreeSockets)r.destroy();else{o=o||[],e.freeSockets[n]=o,r.setKeepAlive(!0,e.keepAliveMsecs),r.unref(),r._httpMessage=null,e.removeSocket(r,i),o.push(r),r.listeners("error").length===0&&r.once("error",Mw);let c=r.freeSocketKeepAliveTimeout||e.freeSocketKeepAliveTimeout;r.setTimeout(c),He(`push to free socket queue and wait for ${c}ms`)}}else r.destroy()}})}ci.inherits(at,$w);Rf.Agent=at;function Mw(t){var e=this;He("SOCKET ERROR on FREE socket:",t.message,t.stack),e.destroy(),e.emit("agentRemove")}at.defaultMaxSockets=Infinity;at.prototype.createConnection=rP.createConnection;at.prototype.getName=function(e){var r=e.host||"localhost";return r+=":",e.port&&(r+=e.port),r+=":",e.localAddress&&(r+=e.localAddress),(e.family===4||e.family===6)&&(r+=":"+e.family),r};function Bw(t){return function(e,r){if(e){process.nextTick(function(){t.emit("error",e)});return}t.onSocket(r)}}at.prototype.addRequest=function(e,r,i,n){typeof r=="string"&&(r={host:r,port:i,localAddress:n}),r=ci._extend({},r),r=ci._extend(r,this.options),r.servername||(r.servername=Uw(r,e));var s=this.getName(r);this.sockets[s]||(this.sockets[s]=[]);var o=this.freeSockets[s]?this.freeSockets[s].length:0,a=o+this.sockets[s].length;if(o){var u=this.freeSockets[s].shift();if(He("have free socket"),u.removeListener("error",Mw),u.setTimeout(this.timeout),this.socketActiveTTL&&Date.now()-u.createdTime>this.socketActiveTTL)return He(`socket ${u.createdTime} expired`),u.destroy(),this.createSocket(e,r,Bw(e));this.freeSockets[s].length||delete this.freeSockets[s],u.ref(),e.onSocket(u),this.sockets[s].push(u)}else a{var cn=1e3,ln=cn*60,fn=ln*60,li=fn*24,iP=li*7,nP=li*365.25;zw.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return sP(t);if(r==="number"&&isFinite(t))return e.long?aP(t):oP(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function sP(t){if(t=String(t),!(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 r=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*nP;case"weeks":case"week":case"w":return r*iP;case"days":case"day":case"d":return r*li;case"hours":case"hour":case"hrs":case"hr":case"h":return r*fn;case"minutes":case"minute":case"mins":case"min":case"m":return r*ln;case"seconds":case"second":case"secs":case"sec":case"s":return r*cn;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function oP(t){var e=Math.abs(t);return e>=li?Math.round(t/li)+"d":e>=fn?Math.round(t/fn)+"h":e>=ln?Math.round(t/ln)+"m":e>=cn?Math.round(t/cn)+"s":t+"ms"}function aP(t){var e=Math.abs(t);return e>=li?wa(t,e,li,"day"):e>=fn?wa(t,e,fn,"hour"):e>=ln?wa(t,e,ln,"minute"):e>=cn?wa(t,e,cn,"second"):t+" ms"}function wa(t,e,r,i){var n=e>=r*1.5;return Math.round(t/r)+" "+i+(n?"s":"")}});var Vw=d((r6,Ww)=>{"use strict";var uP=require("util"),cP=Hw();Ww.exports=function(t){if(typeof t=="number")return t;var e=cP(t);if(e===void 0){var r=new Error(uP.format("humanize-ms(%j) result undefined",t));console.warn(r.stack)}return e}});var Cf=d((i6,Yw)=>{"use strict";var lP=Gw().Agent,Xw=Vw(),Kw=class extends lP{constructor(e){e=e||{},e.keepAlive=e.keepAlive!==!1,e.freeSocketKeepAliveTimeout===void 0&&(e.freeSocketKeepAliveTimeout=15e3),e.keepAliveTimeout&&(e.freeSocketKeepAliveTimeout=e.keepAliveTimeout),e.freeSocketKeepAliveTimeout=Xw(e.freeSocketKeepAliveTimeout),e.timeout===void 0&&(e.timeout=e.freeSocketKeepAliveTimeout*2,e.timeout<3e4&&(e.timeout=3e4)),e.timeout=Xw(e.timeout),super(e),this.createSocketCount=0,this.createSocketCountLastCheck=0,this.createSocketErrorCount=0,this.createSocketErrorCountLastCheck=0,this.closeSocketCount=0,this.closeSocketCountLastCheck=0,this.errorSocketCount=0,this.errorSocketCountLastCheck=0,this.requestCount=0,this.requestCountLastCheck=0,this.timeoutSocketCount=0,this.timeoutSocketCountLastCheck=0,this.on("free",r=>{this.requestCount++,r.lastFreeTime=Date.now()}),this.on("timeout",()=>{this.timeoutSocketCount++}),this.on("close",()=>{this.closeSocketCount++}),this.on("error",()=>{this.errorSocketCount++})}createSocket(e,r,i){super.createSocket(e,r,(n,s)=>{if(n)return this.createSocketErrorCount++,i(n);this.keepAlive&&s.setNoDelay(!0),this.createSocketCount++,i(null,s)})}get statusChanged(){let e=this.createSocketCount!==this.createSocketCountLastCheck||this.createSocketErrorCount!==this.createSocketErrorCountLastCheck||this.closeSocketCount!==this.closeSocketCountLastCheck||this.errorSocketCount!==this.errorSocketCountLastCheck||this.timeoutSocketCount!==this.timeoutSocketCountLastCheck||this.requestCount!==this.requestCountLastCheck;return e&&(this.createSocketCountLastCheck=this.createSocketCount,this.createSocketErrorCountLastCheck=this.createSocketErrorCount,this.closeSocketCountLastCheck=this.closeSocketCount,this.errorSocketCountLastCheck=this.errorSocketCount,this.timeoutSocketCountLastCheck=this.timeoutSocketCount,this.requestCountLastCheck=this.requestCount),e}getCurrentStatus(){return{createSocketCount:this.createSocketCount,createSocketErrorCount:this.createSocketErrorCount,closeSocketCount:this.closeSocketCount,errorSocketCount:this.errorSocketCount,timeoutSocketCount:this.timeoutSocketCount,requestCount:this.requestCount,freeSockets:_f(this.freeSockets),sockets:_f(this.sockets),requests:_f(this.requests)}}};Yw.exports=Kw;function _f(t){let e={};for(let r in t)e[r]=t[r].length;return e}});var Qw=d((n6,Zw)=>{"use strict";var fP=require("https"),hP=Cf(),Jw=fP.Agent,Af=class extends hP{constructor(e){super(e);this.defaultPort=443,this.protocol="https:",this.maxCachedSessions=this.options.maxCachedSessions,this.maxCachedSessions===void 0&&(this.maxCachedSessions=100),this._sessionCache={map:{},list:[]}}};["createConnection","getName","_getSession","_cacheSession","_evictSession"].forEach(function(t){typeof Jw.prototype[t]=="function"&&(Af.prototype[t]=Jw.prototype[t])});Zw.exports=Af});var eS=d((s6,Tf)=>{"use strict";Tf.exports=Cf();Tf.exports.HttpsAgent=Qw()});var rS=d((o6,tS)=>{var vs=1e3,bs=vs*60,Es=bs*60,ws=Es*24,pP=ws*365.25;tS.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return dP(t);if(r==="number"&&isNaN(t)===!1)return e.long?gP(t):mP(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function dP(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*pP;case"days":case"day":case"d":return r*ws;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Es;case"minutes":case"minute":case"mins":case"min":case"m":return r*bs;case"seconds":case"second":case"secs":case"sec":case"s":return r*vs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function mP(t){return t>=ws?Math.round(t/ws)+"d":t>=Es?Math.round(t/Es)+"h":t>=bs?Math.round(t/bs)+"m":t>=vs?Math.round(t/vs)+"s":t+"ms"}function gP(t){return Sa(t,ws,"day")||Sa(t,Es,"hour")||Sa(t,bs,"minute")||Sa(t,vs,"second")||t+" ms"}function Sa(t,e,r){if(!(t{z=iS.exports=Lf.debug=Lf.default=Lf;z.coerce=yP;z.disable=vP;z.enable=bP;z.enabled=EP;z.humanize=rS();z.instances=[];z.names=[];z.skips=[];z.formatters={};function wP(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return z.colors[Math.abs(e)%z.colors.length]}function Lf(t){var e;function r(){if(!!r.enabled){var i=r,n=+new Date,s=n-(e||n);i.diff=s,i.prev=e,i.curr=n,e=n;for(var o=new Array(arguments.length),a=0;a{We=nS.exports=xf();We.log=OP;We.formatArgs=RP;We.save=_P;We.load=sS;We.useColors=CP;We.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:AP();We.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"];function CP(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}We.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function RP(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+We.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,n=0;t[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(i++,s==="%c"&&(n=i))}),t.splice(n,0,r)}}function OP(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function _P(t){try{t==null?We.storage.removeItem("debug"):We.storage.debug=t}catch(e){}}function sS(){var t;try{t=We.storage.debug}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}We.enable(sS());function AP(){try{return window.localStorage}catch(t){}}});var uS=d((a6,aS)=>{"use strict";aS.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var TP=require("os"),lS=require("tty"),wt=uS(),{env:Ce}=process,Nr;wt("no-color")||wt("no-colors")||wt("color=false")||wt("color=never")?Nr=0:(wt("color")||wt("colors")||wt("color=true")||wt("color=always"))&&(Nr=1);"FORCE_COLOR"in Ce&&(Ce.FORCE_COLOR==="true"?Nr=1:Ce.FORCE_COLOR==="false"?Nr=0:Nr=Ce.FORCE_COLOR.length===0?1:Math.min(parseInt(Ce.FORCE_COLOR,10),3));function Nf(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function If(t,e){if(Nr===0)return 0;if(wt("color=16m")||wt("color=full")||wt("color=truecolor"))return 3;if(wt("color=256"))return 2;if(t&&!e&&Nr===void 0)return 0;let r=Nr||0;if(Ce.TERM==="dumb")return r;if(process.platform==="win32"){let i=TP.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Ce)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(i=>i in Ce)||Ce.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ce)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ce.TEAMCITY_VERSION)?1:0;if(Ce.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ce){let i=parseInt((Ce.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ce.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ce.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ce.TERM)||"COLORTERM"in Ce?1:r}function LP(t){let e=If(t,t&&t.isTTY);return Nf(e)}cS.exports={supportsColor:LP,stdout:Nf(If(!0,lS.isatty(1))),stderr:Nf(If(!0,lS.isatty(2)))}});var dS=d((ge,hS)=>{var xP=require("tty"),Oa=require("util");ge=hS.exports=xf();ge.init=NP;ge.log=IP;ge.formatArgs=PP;ge.save=DP;ge.load=pS;ge.useColors=FP;ge.colors=[6,2,3,4,5,1];try{Pf=fS(),Pf&&Pf.level>=2&&(ge.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(t){}var Pf;ge.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(n,s){return s.toUpperCase()}),i=process.env[e];return/^(yes|on|true|enabled)$/i.test(i)?i=!0:/^(no|off|false|disabled)$/i.test(i)?i=!1:i==="null"?i=null:i=Number(i),t[r]=i,t},{});function FP(){return"colors"in ge.inspectOpts?Boolean(ge.inspectOpts.colors):xP.isatty(process.stderr.fd)}ge.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Oa.inspect(t,this.inspectOpts).split(` `).map(function(e){return e.trim()}).join(" ")};ge.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Oa.inspect(t,this.inspectOpts)};function PP(t){var e=this.namespace,r=this.useColors;if(r){var i=this.color,n="[3"+(i<8?i:"8;5;"+i),s=" "+n+";1m"+e+" ";t[0]=s+t[0].split(` `).join(` `+s),t.push(n+"m+"+ge.humanize(this.diff)+"")}else t[0]=kP()+e+" "+t[0]}function kP(){return ge.inspectOpts.hideDate?"":new Date().toISOString()+" "}function IP(){return process.stderr.write(Oa.format.apply(Oa,arguments)+` -`)}function DP(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function pS(){return process.env.DEBUG}function NP(t){t.inspectOpts={};for(var e=Object.keys(ge.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Df.exports=oS():Df.exports=dS()});var gS=d((l6,mS)=>{function wt(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||Infinity,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}mS.exports=wt;wt.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};wt.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};wt.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var i=this,n=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r);return this._options.unref&&n.unref(),!0};wt.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};wt.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};wt.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};wt.prototype.start=wt.prototype.try;wt.prototype.errors=function(){return this._errors};wt.prototype.attempts=function(){return this._attempts};wt.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,i=0;i=r&&(e=n,r=o)}return e}});var yS=d(fi=>{var qP=gS();fi.operation=function(t){var e=fi.timeouts(t);return new qP(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};fi.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n{vS.exports=yS()});var ES=d((p6,bS)=>{var jP=kf();function $P(t,e){function r(i,n){var s=e||{};"randomize"in s||(s.randomize=!0);var o=jP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}bS.exports=$P});var OS=d((qf,wS)=>{var MP=ES(),SS=Ff()("fetch-retry"),BP=10,UP=5,GP=20,zP=6;wS.exports=qf=HP;function WP(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function HP(t){t||(t=ys());async function e(r,i={}){let n=Object.assign({minTimeout:BP,retries:UP,factor:zP,maxRetryAfter:GP},i.retry);i.onRetry&&(n.onRetry=s=>{i.onRetry(s,i),i.retry&&i.retry.onRetry&&i.retry.onRetry(s)});try{return await MP(async(s,o)=>{let{method:a="GET"}=i;try{let u=await t(r,i);if(SS("status %d",u.status),u.status>=500&&u.status<600||u.status===429){let c=parseInt(u.headers.get("retry-after"),10);if(c){if(c>n.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new hn(u)}else return u}catch(u){let c=WP(u),l=!c&&o<=n.retries;if(SS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},n)}catch(s){if(s instanceof hn)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var hn=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,hn),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};qf.ResponseError=hn});var _S=d((d6,RS)=>{"use strict";RS.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var AS=d((m6,CS)=>{"use strict";CS.exports=K;K.Node=hi;K.create=K;function K(t){var e=this;if(e instanceof K||(e=new K),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};K.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};K.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};K.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};K.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new K;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};K.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,i=this.head;i!==null&&r{"use strict";var KP=AS(),pi=Symbol("max"),or=Symbol("length"),pn=Symbol("lengthCalculator"),Ss=Symbol("allowStale"),di=Symbol("maxAge"),ar=Symbol("dispose"),LS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),Ct=Symbol("cache"),xS=Symbol("updateAgeOnGet"),jf=()=>1,NS=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[pi]=e.max||Infinity,i=e.length||jf;if(this[pn]=typeof i!="function"?jf:i,this[Ss]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[di]=e.maxAge||0,this[ar]=e.dispose,this[LS]=e.noDisposeOnSet||!1,this[xS]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[pi]=e||Infinity,Os(this)}get max(){return this[pi]}set allowStale(e){this[Ss]=!!e}get allowStale(){return this[Ss]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[di]=e,Os(this)}get maxAge(){return this[di]}set lengthCalculator(e){typeof e!="function"&&(e=jf),e!==this[pn]&&(this[pn]=e,this[or]=0,this[Ae].forEach(r=>{r.length=this[pn](r.value,r.key),this[or]+=r.length})),Os(this)}get lengthCalculator(){return this[pn]}get length(){return this[or]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let i=this[Ae].tail;i!==null;){let n=i.prev;PS(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Ae].head;i!==null;){let n=i.next;PS(this,e,i,r),i=n}}keys(){return this[Ae].toArray().map(e=>e.key)}values(){return this[Ae].toArray().map(e=>e.value)}reset(){this[ar]&&this[Ae]&&this[Ae].length&&this[Ae].forEach(e=>this[ar](e.key,e.value)),this[Ct]=new Map,this[Ae]=new KP,this[or]=0}dump(){return this[Ae].map(e=>Ra(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ae]}set(e,r,i){if(i=i||this[di],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[pn](r,e);if(this[Ct].has(e)){if(s>this[pi])return dn(this,this[Ct].get(e)),!1;let u=this[Ct].get(e).value;return this[ar]&&(this[LS]||this[ar](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[or]+=s-u.length,u.length=s,this.get(e),Os(this),!0}let o=new IS(e,r,s,n,i);return o.length>this[pi]?(this[ar]&&this[ar](e,r),!1):(this[or]+=o.length,this[Ae].unshift(o),this[Ct].set(e,this[Ae].head),Os(this),!0)}has(e){if(!this[Ct].has(e))return!1;let r=this[Ct].get(e).value;return!Ra(this,r)}get(e){return $f(this,e,!0)}peek(e){return $f(this,e,!1)}pop(){let e=this[Ae].tail;return e?(dn(this,e),e.value):null}del(e){dn(this,this[Ct].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Ct].forEach((e,r)=>$f(this,r,!1))}},$f=(t,e,r)=>{let i=t[Ct].get(e);if(i){let n=i.value;if(Ra(t,n)){if(dn(t,i),!t[Ss])return}else r&&(t[xS]&&(i.value.now=Date.now()),t[Ae].unshiftNode(i));return n.value}},Ra=(t,e)=>{if(!e||!e.maxAge&&!t[di])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[di]&&r>t[di]},Os=t=>{if(t[or]>t[pi])for(let e=t[Ae].tail;t[or]>t[pi]&&e!==null;){let r=e.prev;dn(t,e),e=r}},dn=(t,e)=>{if(e){let r=e.value;t[ar]&&t[ar](r.key,r.value),t[or]-=r.length,t[Ct].delete(r.key),t[Ae].removeNode(e)}},IS=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},PS=(t,e,r,i)=>{let n=r.value;Ra(t,n)&&(dn(t,r),t[Ss]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};TS.exports=NS});var kS=d((y6,FS)=>{var ZP=kf();function JP(t,e){function r(i,n){var s=e||{},o=ZP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}FS.exports=JP});var qS=d(Mf=>{"use strict";Object.defineProperty(Mf,"__esModule",{value:!0});function QP(t,e){return new Promise((r,i)=>{e.resolve4(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Mf.default=QP});var jS=d(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});function eD(t,e){return new Promise((r,i)=>{e.resolve6(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Bf.default=eD});var zS=d(mn=>{"use strict";var Rs=mn&&mn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mn,"__esModule",{value:!0});var tD=Rs(require("dns")),$S=Rs(DS()),rD=Rs(kS()),iD=Rs(qS()),nD=Rs(jS()),MS={max:500},BS,US;GS();async function sD(t,e={}){let{ipv6:r=!1,minimumCacheTime:i=300,refreshCache:n=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=tD.default}=e,{cache:a,resolve:u}=r?{cache:US,resolve:nD.default}:{cache:BS,resolve:iD.default};if(n)a.del(t);else{let l=a.get(t);if(l)return await l}let c=(async()=>{let l=await rD.default(()=>u(t,o),s),f=l[Math.floor(Math.random()*l.length)],h=Math.max(f.ttl,i);return a.set(t,f.address,h*1e3),f.address})();return a.set(t,c,5e3),c}mn.default=sD;function GS(){BS=new $S.default(MS),US=new $S.default(MS)}mn.setupCache=GS});var HS=d(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});var oD=zS();Uf.default=oD.default});var VS=d(WS=>{WS.dnsCachedUrl=Symbol("dnsCachedUrl")});var ZS=d((O6,YS)=>{var{isIP:aD}=require("net"),{format:XS,parse:KS}=require("url"),uD=HS().default,{dnsCachedUrl:cD}=VS();YS.exports=lD;var fD=t=>(t/100|0)==3;function lD(t){t||(t=ys());let{Headers:e}=t;async function r(i,n){let s=KS(i),o=s.host;aD(s.hostname)===0&&(n||(n={}),n.headers=new e(n.headers),n.headers.has("Host")||n.headers.set("Host",s.host),n.redirect="manual",s.host=await uD(s.hostname),s.port&&(s.host+=`:${s.port}`),i=XS(s));let u=await t(i,n);if(u[cD]=i,Object.defineProperty(u,"url",{get(){return s.href}}),fD(u.status)){let c=Object.assign({},n);c.headers=new e(n.headers),(u.status===303||(u.status===301||u.status===302)&&n.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=KS(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),n.onRedirect&&n.onRedirect(u,c),r(XS(f),c)}return u}for(let i of Object.keys(t))r[i]=t[i];return r.default=r,r}});var i2=d((R6,JS)=>{var{parse:hD}=require("url"),QS=eS(),Gf=Ff()("@vercel/fetch"),pD=OS(),dD=ZS(),mD=require("url"),{HttpsAgent:gD}=QS,{URLSearchParams:yD}=mD,vD={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},e2,t2;function bD(t){return e2=e2||(Gf("init http agent"),new QS(t))}function ED(t){return t2=t2||(Gf("init https agent"),new gD(t))}function r2(t,e){return/^https/.test(t)?ED(e):bD(e)}function wD(t,e={}){return async function(i,n={}){n.agent||(n.agent=r2(i,{AGENT_OPTIONS:vD,...e})),n.redirect="manual",n.headers=new t.Headers(n.headers),n.headers.set("host",n.headers.get("host")||hD(i).host),n.body&&!(n.body instanceof yD)&&typeof n.body=="object"&&!Buffer.isBuffer(n.body)&&(n.body=JSON.stringify(n.body),n.headers.set("Content-Type","application/json"),n.headers.set("Content-Length",Buffer.byteLength(n.body))),n.onRedirect=(s,o)=>{o.agent=r2(s.headers.get("Location"))};try{return Gf("%s %s",n.method||"GET",i),await t(i,n)}catch(s){throw s.url=i,s.opts=n,s}}}function SD(t,e){t||(t=ys());let r=t.default;if(r&&(t=Object.assign((...i)=>r(...i),r,t)),typeof t!="function")throw new Error("fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?");return t=dD(t),t=pD(t),t=wD(t,e),t}JS.exports=SD});var c2=d((C6,s2)=>{s2.exports=o2;o2.sync=RD;var a2=require("fs");function _D(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{l2.exports=f2;f2.sync=CD;var h2=require("fs");function f2(t,e,r){h2.stat(t,function(i,n){r(i,i?!1:p2(n,e))})}function CD(t,e){return p2(h2.statSync(t),e)}function p2(t,e){return t.isFile()&&AD(t,e)}function AD(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),u=parseInt("010",8),c=parseInt("001",8),l=a|u,f=r&c||r&u&&n===o||r&a&&i===s||r&l&&s===0;return f}});var g2=d((L6,m2)=>{var T6=require("fs"),_a;process.platform==="win32"||global.TESTING_WINDOWS?_a=c2():_a=d2();m2.exports=Hf;Hf.sync=TD;function Hf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Hf(t,e||{},function(s,o){s?n(s):i(o)})})}_a(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function TD(t,e){try{return _a.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var O2=d((x6,y2)=>{var gn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",v2=require("path"),LD=gn?";":":",b2=g2(),E2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),w2=(t,e)=>{let r=e.colon||LD,i=t.match(/\//)||gn&&t.match(/\\/)?[""]:[...gn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=gn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=gn?n.split(r):[""];return gn&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},S2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=w2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===i.length)return e.all&&o.length?l(o):f(E2(t));let h=i[c],y=/^".*"$/.test(h)?h.slice(1,-1):h,m=v2.join(y,t),p=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(p,c,0))}),u=(c,l,f)=>new Promise((h,y)=>{if(f===n.length)return h(a(l+1));let m=n[f];b2(c+m,{pathExt:s},(p,E)=>{if(!p&&E)if(e.all)o.push(c+m);else return h(c+m);return h(u(c,l,f+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},xD=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=w2(t,e),s=[];for(let o=0;o{var ND=require("fs"),ID=require("path");function R2(t){console.log(`[dotenv][DEBUG] ${t}`)}var PD=` -`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.7",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),Ft=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D="src/Search",MD="src/registerProtocol",BD="src/confirmPrompt";function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?Ft.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=Ft.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` +`)}function DP(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function pS(){return process.env.DEBUG}function NP(t){t.inspectOpts={};for(var e=Object.keys(ge.inspectOpts),r=0;r{typeof process=="undefined"||process.type==="renderer"?Df.exports=oS():Df.exports=dS()});var gS=d((l6,mS)=>{function St(t,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||Infinity,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}mS.exports=St;St.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};St.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};St.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var i=this,n=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},r);return this._options.unref&&n.unref(),!0};St.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};St.prototype.try=function(t){console.log("Using RetryOperation.try() is deprecated"),this.attempt(t)};St.prototype.start=function(t){console.log("Using RetryOperation.start() is deprecated"),this.attempt(t)};St.prototype.start=St.prototype.try;St.prototype.errors=function(){return this._errors};St.prototype.attempts=function(){return this._attempts};St.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,i=0;i=r&&(e=n,r=o)}return e}});var yS=d(fi=>{var qP=gS();fi.operation=function(t){var e=fi.timeouts(t);return new qP(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};fi.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:Infinity,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n{vS.exports=yS()});var ES=d((p6,bS)=>{var jP=kf();function $P(t,e){function r(i,n){var s=e||{};"randomize"in s||(s.randomize=!0);var o=jP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}bS.exports=$P});var OS=d((qf,wS)=>{var MP=ES(),SS=Ff()("fetch-retry"),BP=10,UP=5,GP=20,zP=6;wS.exports=qf=HP;function WP(t){return t?t.code==="ERR_UNESCAPED_CHARACTERS"||t.message==="Request path contains unescaped characters":!1}function HP(t){t||(t=ys());async function e(r,i={}){let n=Object.assign({minTimeout:BP,retries:UP,factor:zP,maxRetryAfter:GP},i.retry);i.onRetry&&(n.onRetry=s=>{i.onRetry(s,i),i.retry&&i.retry.onRetry&&i.retry.onRetry(s)});try{return await MP(async(s,o)=>{let{method:a="GET"}=i;try{let u=await t(r,i);if(SS("status %d",u.status),u.status>=500&&u.status<600||u.status===429){let c=parseInt(u.headers.get("retry-after"),10);if(c){if(c>n.maxRetryAfter)return u;await new Promise(l=>setTimeout(l,c*1e3))}throw new hn(u)}else return u}catch(u){let c=WP(u),l=!c&&o<=n.retries;if(SS(`${a} ${r} error (status = ${u.status}). ${l?"retrying":""}`,u),c)return s(u);throw u}},n)}catch(s){if(s instanceof hn)return s.res;throw s}}for(let r of Object.keys(t))e[r]=t[r];return e.default=e,e}var hn=class extends Error{constructor(e){super(e.statusText);Error.captureStackTrace&&Error.captureStackTrace(this,hn),this.name=this.constructor.name,this.res=e,this.code=this.status=this.statusCode=e.status,this.url=e.url}};qf.ResponseError=hn});var _S=d((d6,RS)=>{"use strict";RS.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var AS=d((m6,CS)=>{"use strict";CS.exports=K;K.Node=hi;K.create=K;function K(t){var e=this;if(e instanceof K||(e=new K),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};K.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};K.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};K.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};K.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new K;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};K.prototype.splice=function(t,e){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var r=0,i=this.head;i!==null&&r{"use strict";var KP=AS(),pi=Symbol("max"),or=Symbol("length"),pn=Symbol("lengthCalculator"),Ss=Symbol("allowStale"),di=Symbol("maxAge"),ar=Symbol("dispose"),LS=Symbol("noDisposeOnSet"),Ae=Symbol("lruList"),At=Symbol("cache"),xS=Symbol("updateAgeOnGet"),jf=()=>1,NS=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[pi]=e.max||Infinity,i=e.length||jf;if(this[pn]=typeof i!="function"?jf:i,this[Ss]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[di]=e.maxAge||0,this[ar]=e.dispose,this[LS]=e.noDisposeOnSet||!1,this[xS]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[pi]=e||Infinity,Os(this)}get max(){return this[pi]}set allowStale(e){this[Ss]=!!e}get allowStale(){return this[Ss]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[di]=e,Os(this)}get maxAge(){return this[di]}set lengthCalculator(e){typeof e!="function"&&(e=jf),e!==this[pn]&&(this[pn]=e,this[or]=0,this[Ae].forEach(r=>{r.length=this[pn](r.value,r.key),this[or]+=r.length})),Os(this)}get lengthCalculator(){return this[pn]}get length(){return this[or]}get itemCount(){return this[Ae].length}rforEach(e,r){r=r||this;for(let i=this[Ae].tail;i!==null;){let n=i.prev;PS(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Ae].head;i!==null;){let n=i.next;PS(this,e,i,r),i=n}}keys(){return this[Ae].toArray().map(e=>e.key)}values(){return this[Ae].toArray().map(e=>e.value)}reset(){this[ar]&&this[Ae]&&this[Ae].length&&this[Ae].forEach(e=>this[ar](e.key,e.value)),this[At]=new Map,this[Ae]=new KP,this[or]=0}dump(){return this[Ae].map(e=>Ra(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ae]}set(e,r,i){if(i=i||this[di],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[pn](r,e);if(this[At].has(e)){if(s>this[pi])return dn(this,this[At].get(e)),!1;let u=this[At].get(e).value;return this[ar]&&(this[LS]||this[ar](e,u.value)),u.now=n,u.maxAge=i,u.value=r,this[or]+=s-u.length,u.length=s,this.get(e),Os(this),!0}let o=new IS(e,r,s,n,i);return o.length>this[pi]?(this[ar]&&this[ar](e,r),!1):(this[or]+=o.length,this[Ae].unshift(o),this[At].set(e,this[Ae].head),Os(this),!0)}has(e){if(!this[At].has(e))return!1;let r=this[At].get(e).value;return!Ra(this,r)}get(e){return $f(this,e,!0)}peek(e){return $f(this,e,!1)}pop(){let e=this[Ae].tail;return e?(dn(this,e),e.value):null}del(e){dn(this,this[At].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[At].forEach((e,r)=>$f(this,r,!1))}},$f=(t,e,r)=>{let i=t[At].get(e);if(i){let n=i.value;if(Ra(t,n)){if(dn(t,i),!t[Ss])return}else r&&(t[xS]&&(i.value.now=Date.now()),t[Ae].unshiftNode(i));return n.value}},Ra=(t,e)=>{if(!e||!e.maxAge&&!t[di])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[di]&&r>t[di]},Os=t=>{if(t[or]>t[pi])for(let e=t[Ae].tail;t[or]>t[pi]&&e!==null;){let r=e.prev;dn(t,e),e=r}},dn=(t,e)=>{if(e){let r=e.value;t[ar]&&t[ar](r.key,r.value),t[or]-=r.length,t[At].delete(r.key),t[Ae].removeNode(e)}},IS=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},PS=(t,e,r,i)=>{let n=r.value;Ra(t,n)&&(dn(t,r),t[Ss]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};TS.exports=NS});var kS=d((y6,FS)=>{var ZP=kf();function JP(t,e){function r(i,n){var s=e||{},o=ZP.operation(s);function a(l){n(l||new Error("Aborted"))}function u(l,f){if(l.bail){a(l);return}o.retry(l)?s.onRetry&&s.onRetry(l,f):n(o.mainError())}function c(l){var f;try{f=t(a,l)}catch(h){u(h,l);return}Promise.resolve(f).then(i).catch(function(y){u(y,l)})}o.attempt(c)}return new Promise(r)}FS.exports=JP});var qS=d(Mf=>{"use strict";Object.defineProperty(Mf,"__esModule",{value:!0});function QP(t,e){return new Promise((r,i)=>{e.resolve4(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Mf.default=QP});var jS=d(Bf=>{"use strict";Object.defineProperty(Bf,"__esModule",{value:!0});function eD(t,e){return new Promise((r,i)=>{e.resolve6(t,{ttl:!0},(n,s)=>{if(n)return i(n);r(s)})})}Bf.default=eD});var zS=d(mn=>{"use strict";var Rs=mn&&mn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mn,"__esModule",{value:!0});var tD=Rs(require("dns")),$S=Rs(DS()),rD=Rs(kS()),iD=Rs(qS()),nD=Rs(jS()),MS={max:500},BS,US;GS();async function sD(t,e={}){let{ipv6:r=!1,minimumCacheTime:i=300,refreshCache:n=!1,retryOpts:s={minTimeout:10,retries:3,factor:5},resolver:o=tD.default}=e,{cache:a,resolve:u}=r?{cache:US,resolve:nD.default}:{cache:BS,resolve:iD.default};if(n)a.del(t);else{let l=a.get(t);if(l)return await l}let c=(async()=>{let l=await rD.default(()=>u(t,o),s),f=l[Math.floor(Math.random()*l.length)],h=Math.max(f.ttl,i);return a.set(t,f.address,h*1e3),f.address})();return a.set(t,c,5e3),c}mn.default=sD;function GS(){BS=new $S.default(MS),US=new $S.default(MS)}mn.setupCache=GS});var HS=d(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});var oD=zS();Uf.default=oD.default});var VS=d(WS=>{WS.dnsCachedUrl=Symbol("dnsCachedUrl")});var ZS=d((O6,YS)=>{var{isIP:aD}=require("net"),{format:XS,parse:KS}=require("url"),uD=HS().default,{dnsCachedUrl:cD}=VS();YS.exports=lD;var fD=t=>(t/100|0)==3;function lD(t){t||(t=ys());let{Headers:e}=t;async function r(i,n){let s=KS(i),o=s.host;aD(s.hostname)===0&&(n||(n={}),n.headers=new e(n.headers),n.headers.has("Host")||n.headers.set("Host",s.host),n.redirect="manual",s.host=await uD(s.hostname),s.port&&(s.host+=`:${s.port}`),i=XS(s));let u=await t(i,n);if(u[cD]=i,Object.defineProperty(u,"url",{get(){return s.href}}),fD(u.status)){let c=Object.assign({},n);c.headers=new e(n.headers),(u.status===303||(u.status===301||u.status===302)&&n.method==="POST")&&(c.method="GET",c.body=null,c.headers.delete("content-length"));let l=u.headers.get("Location"),f=KS(l);return f.host===s.host&&(f.host=o),c.headers.set("Host",f.host),n.onRedirect&&n.onRedirect(u,c),r(XS(f),c)}return u}for(let i of Object.keys(t))r[i]=t[i];return r.default=r,r}});var i2=d((R6,JS)=>{var{parse:hD}=require("url"),QS=eS(),Gf=Ff()("@vercel/fetch"),pD=OS(),dD=ZS(),mD=require("url"),{HttpsAgent:gD}=QS,{URLSearchParams:yD}=mD,vD={maxSockets:200,maxFreeSockets:20,timeout:6e4,freeSocketTimeout:3e4,freeSocketKeepAliveTimeout:3e4},e2,t2;function bD(t){return e2=e2||(Gf("init http agent"),new QS(t))}function ED(t){return t2=t2||(Gf("init https agent"),new gD(t))}function r2(t,e){return/^https/.test(t)?ED(e):bD(e)}function wD(t,e={}){return async function(i,n={}){n.agent||(n.agent=r2(i,{AGENT_OPTIONS:vD,...e})),n.redirect="manual",n.headers=new t.Headers(n.headers),n.headers.set("host",n.headers.get("host")||hD(i).host),n.body&&!(n.body instanceof yD)&&typeof n.body=="object"&&!Buffer.isBuffer(n.body)&&(n.body=JSON.stringify(n.body),n.headers.set("Content-Type","application/json"),n.headers.set("Content-Length",Buffer.byteLength(n.body))),n.onRedirect=(s,o)=>{o.agent=r2(s.headers.get("Location"))};try{return Gf("%s %s",n.method||"GET",i),await t(i,n)}catch(s){throw s.url=i,s.opts=n,s}}}function SD(t,e){t||(t=ys());let r=t.default;if(r&&(t=Object.assign((...i)=>r(...i),r,t)),typeof t!="function")throw new Error("fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?");return t=dD(t),t=pD(t),t=wD(t,e),t}JS.exports=SD});var c2=d((C6,s2)=>{s2.exports=o2;o2.sync=RD;var a2=require("fs");function _D(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{l2.exports=f2;f2.sync=CD;var h2=require("fs");function f2(t,e,r){h2.stat(t,function(i,n){r(i,i?!1:p2(n,e))})}function CD(t,e){return p2(h2.statSync(t),e)}function p2(t,e){return t.isFile()&&AD(t,e)}function AD(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),u=parseInt("010",8),c=parseInt("001",8),l=a|u,f=r&c||r&u&&n===o||r&a&&i===s||r&l&&s===0;return f}});var g2=d((L6,m2)=>{var T6=require("fs"),_a;process.platform==="win32"||global.TESTING_WINDOWS?_a=c2():_a=d2();m2.exports=Hf;Hf.sync=TD;function Hf(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){Hf(t,e||{},function(s,o){s?n(s):i(o)})})}_a(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function TD(t,e){try{return _a.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var O2=d((x6,y2)=>{var gn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",v2=require("path"),LD=gn?";":":",b2=g2(),E2=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),w2=(t,e)=>{let r=e.colon||LD,i=t.match(/\//)||gn&&t.match(/\\/)?[""]:[...gn?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=gn?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=gn?n.split(r):[""];return gn&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},S2=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=w2(t,e),o=[],a=c=>new Promise((l,f)=>{if(c===i.length)return e.all&&o.length?l(o):f(E2(t));let h=i[c],y=/^".*"$/.test(h)?h.slice(1,-1):h,m=v2.join(y,t),p=!y&&/^\.[\\\/]/.test(t)?t.slice(0,2)+m:m;l(u(p,c,0))}),u=(c,l,f)=>new Promise((h,y)=>{if(f===n.length)return h(a(l+1));let m=n[f];b2(c+m,{pathExt:s},(p,E)=>{if(!p&&E)if(e.all)o.push(c+m);else return h(c+m);return h(u(c,l,f+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},xD=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=w2(t,e),s=[];for(let o=0;o{var ND=require("fs"),ID=require("path");function R2(t){console.log(`[dotenv][DEBUG] ${t}`)}var PD=` +`,DD=/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/,FD=/\\n/g,kD=/\n|\r|\r\n/;function _2(t,e){let r=Boolean(e&&e.debug),i={};return t.toString().split(kD).forEach(function(n,s){let o=n.match(DD);if(o!=null){let a=o[1],u=o[2]||"",c=u.length-1,l=u[0]==='"'&&u[c]==='"';u[0]==="'"&&u[c]==="'"||l?(u=u.substring(1,c),l&&(u=u.replace(FD,PD))):u=u.trim(),i[a]=u}else r&&R2(`did not match key and value when parsing line ${s+1}: ${n}`)}),i}function qD(t){let e=ID.resolve(process.cwd(),".env"),r="utf8",i=!1;t&&(t.path!=null&&(e=t.path),t.encoding!=null&&(r=t.encoding),t.debug!=null&&(i=!0));try{let n=_2(ND.readFileSync(e,{encoding:r}),{debug:i});return Object.keys(n).forEach(function(s){Object.prototype.hasOwnProperty.call(process.env,s)?i&&R2(`"${s}" is already defined in \`process.env\` and will not be overwritten`):process.env[s]=n[s]}),{parsed:n}}catch(n){return{error:n}}}Wf.exports.config=qD;Wf.exports.parse=_2});var A2=d(Ca=>{"use strict";var jD=Ca&&Ca.__awaiter||function(t,e,r,i){return new(r||(r=Promise))(function(n,s){function o(c){try{u(i.next(c))}catch(l){s(l)}}function a(c){try{u(i.throw(c))}catch(l){s(l)}}function u(c){var l;c.done?n(c.value):(l=c.value,l instanceof r?l:new r(function(f){f(l)})).then(o,a)}u((i=i.apply(t,e||[])).next())})};Object.defineProperty(Ca,"__esModule",{value:!0}),Promise.any=t=>jD(void 0,void 0,void 0,function*(){return new Promise((e,r)=>{let i=!1,n=0,s=[],o=u=>{i||(i=!0,e(u))},a=u=>{s.push(u),s.length>=n&&r(s)};for(let u of t)if(n++,u.then!==void 0){let c=u;c.then(l=>o(l)),u.catch!==void 0&&c.catch(l=>a(l))}})})});var L2=d((P6,T2)=>{T2.exports={name:"@jarred/git-peek",version:"1.3.9",author:"Jarred Sumner @Jarred-Sumner",description:"Quickly preview remote Git repositories in your local editor",bin:{"git-peek":"bin/git-peek"},bugs:"https://github.com/Jarred-Sumner/git-peek/issues",devDependencies:{"@types/js-yaml":"^4.0.0","@types/lodash":"^4.14.168","@types/lodash-es":"^4.17.4","@types/node":"latest","@types/rimraf":"^3.0.0","@types/tar":"^4.0.4","@types/tmp":"^0.2.0","@vercel/fetch":"^6.1.0",chalk:"^4.1.0",dotenv:"^8.2.0","dotenv-cli":"^4.0.0",esbuild:"^0.8.43","git-url-parse":"^11.4.4",ink:"^3.0.8","ink-select-input":"^4.2.0","ink-text-input":"^4.0.1",keypress:"^0.2.1","lodash-es":"^4.17.20",meow:"^9.0.0","node-fetch":"^2.6.1","normalize-git-url":"^3.0.2","open-editor":"^3.0.0",pkg:"^4.4.9",pnpm:"^5.17.2","promise-any-polyfill":"^0.1.2",qs:"^6.9.6",react:"^17.0.1","register-url-windows":"1.0.24","release-it":"*",rimraf:"^3.0.2","simple-plist":"^1.1.1",swr:"^0.4.2",tar:"^6.1.0",tmp:"^0.2.1",typescript:"beta",which:"^2.0.2"},engines:{node:">=10.0.0"},files:["bin/git-peek","bin/git-peek-win32.exe","bin/confirmPrompt.js","bin/Search.js","bin/registerProtocol.js"],homepage:"https://github.com/Jarred-Sumner/git-peek",keywords:["git-peek","git","github","preview git","editor","peek","clone","fetch","github-api","github-client","pull","git-pull","git pull","open-editor","open-in","open-in-editor","open"],license:"MIT",main:"lib/index.js",repository:"Jarred-Sumner/git-peek",scripts:{build:"node build.js",test:"echo NO TESTS",reinstall:"npm uninstall -g @jarred/git-peek; npm install -g jarred-git-peek-1.3.5.tgz",release:"dotenv release-it",bt:"pnpm build && git-peek Jarred-Sumner/git-peek","copy-win32":"cp win32/git-peek-windows-launcher/git-peek-windows-launcher/git-peek-windows-launcher/bin/net5.0/win-x64/publish/git-peek-win32.exe bin/git-peek-win32.exe","pkg-mac":"pkg --public --options='no-warnings' -t 'node14-macos-x64' ./pkgbin/git-peek -o ./brew/git-peek-macOS","pkg-windows":"pkg --public --options='no-warnings' -t 'node14-windows-x64' ./pkgbin/git-peek -o ./brew/git-peek.exe","pkg-all":"pnpm pkg-mac; pnpm pkg-windows",prerelease:"pnpm pkg-all","build-cs":"dotnet publish -c Release --self-contained false"},"release-it":{git:{requireCleanWorkingDir:!1},github:{release:!0,assets:["./brew/git-peek-macOS","./brew/git-peek.exe"]}}}});var mi=Te(require("child_process")),Ir=Te(require("fs")),x2=Te(Nh()),N2=Te(vv()),ut=Te(require("path"));function mx(){var t,e,r;return((r=(e=(t=process.env.GITHUB_TOKEN)==null?void 0:t.trim())==null?void 0:e.length)!=null?r:0)?process.env.GITHUB_TOKEN.trim():null}var vc;function bv(){return typeof vc=="undefined"&&(vc=mx()),vc}var I2=Te(lE()),P2=Te(Lw());var OD=Te(ys()),n2=Te(i2()),zf=n2.default(OD);var D2=Te(O2()),F2=Te(C2()),Aa=Te(ya()),$D=ut.default.join(__dirname,"Search"),MD=ut.default.join(__dirname,"registerProtocol"),BD=ut.default.join(__dirname,"confirmPrompt");function UD(t){return new Promise((e,r)=>setTimeout(e,t))}var ur=!1,GD=process.platform==="win32"?ut.default.join(process.env.HOMEDRIVE,process.env.HOMEPATH):process.env.HOME,Vf=ut.default.join(GD,".git-peek"),k2=["code","subl","code-insiders","vim","vi"],cr=!1,k6=console.log,q2=(...t)=>{ur||console.error(...t)};if(!Ir.default.rmSync){let t=ya();Ir.default.rmSync=(e,r)=>{if(e!=="/"&&e!=="/Applications")return t.sync(e)}}async function j2(t,e){var i;let r=!t||t==="auto"?process.env.EDITOR:t;if(!(r==null?void 0:r.trim().length))for(let n of k2)try{r=await D2.default(n),(r.includes("code")||r.includes("subl"))&&(r='"'+r+'"');break}catch(s){}return(!r||!((i=r==null?void 0:r.trim())==null?void 0:i.length))&&(e||console.warn("No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag"),r="code"),r}var $2=Ir.default.existsSync(Vf);typeof Promise.any!="function"&&A2();var Ve;(function(t){t[t.childProcessExit=0]="childProcessExit",t[t.downloadComplete=1]="downloadComplete",t[t.confirm=2]="confirm"})(Ve||(Ve={}));var $e={confirm:!1,waitFor:1};function zD(t){return!(!t.includes(_s)||!t.includes("/pull/"))}async function HD(t){let e=t.replace(`https://${_s}`,""),[r,i,n,s,o]=e.split("/"),a=`https://${Cs}/repos/${i}/${n}/pulls/${o}`,u=await Yf(a);u.ok||(console.error("Failed to load pull request url: HTTP ",u.status,` `,await u.text()),process.exit());let c=await u.json(),{label:l,sha:f}=c.head;return[l.split(":")[0],n,f]}async function WD(t,e){var s;let r=`https://${Cs}/repos/${t}/${e}`;process.env.VERBOSE&&console.log("Couldn't auto-detect ref, asking github what the ref is");let i=await Yf(r);return i.ok||(console.error("Failed to load github url: HTTP ",i.status,` -`,await i.text()),process.exit()),(s=(await i.json()).default_branch)!=null?s:"main"}var yn=!1,Ye;var ae,Xf={redirect:"follow"},kt;(function(t){t[t.unknown=0]="unknown",t[t.vscode=1]="vscode",t[t.sublime=2]="sublime",t[t.vim=3]="vim"})(kt||(kt={}));function Yf(t){let e=bv();return e&&!Xf.headers&&(Xf.headers={authorization:`Bearer ${e}`}),zf(t,Xf)}function M2(){}var Kf=0,B2=!1;function gi(){var e,r;let t=ur;if(ur=!0,!yn&&!cr&&Ye)try{Ye==null||Ye.removeCallback(),Ye=null,yn=!1}catch(i){}if((ae==null?void 0:ae._tar)&&!ae._tar.writableEnded)try{ae._tar.warn=M2,ae._tar.abort()}catch(i){}if((ae==null?void 0:ae.slowTask)&&$e.waitFor!==1&&ae.slowTask.connected)try{ae.slowTask.kill(),ae.slowTask.disconnect()}catch(i){}if(!cr&&((e=ae==null?void 0:ae.destination)==null?void 0:e.length)&&Kf<10){if(process.platform==="win32")try{Aa.default.sync(ae.destination+"/*/**"),Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}else try{Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}if(Ir.default.existsSync(ae.destination)){setTimeout(gi,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${Kf}/10`),Kf++;return}}!cr&&((r=ae==null?void 0:ae.destination)==null?void 0:r.length)&&!Ir.default.existsSync(ae.destination)&&!B2&&(ae.slowTask=null,ae.log("\u{1F5D1} Deleted repository"),B2=!0),process.emitWarning=M2,process.exit()}process.once("SIGINT",gi);var As=class{constructor(){this.editorMode=0;this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(e){this.editorMode===3&&this.slowTask||console.log(e)}async _prefetchGithub(e,r,i,n,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${n}/${i||"README.md"}`,a=await zf(o,{redirect:"follow"});if(!a.ok||a.status===404)return!1;if(ur)return;let u=await a.text();if(u.trim().length)return ur||(await Ir.default.promises.mkdir(Ft.default.dirname(s),{recursive:!0}),ur)?void 0:(await Ir.default.promises.writeFile(s,u,"utf8"),!0);throw"nope"}prefetchGithub(e,r,i,n,s,o){return Promise.any([this._prefetchGithub(e,r,i,n,o),this._prefetchGithub(e,r,i,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:i}=require($D);return process.emitWarning=r,i(e)}async _unzip(e){let r=await Yf(e);if(r.ok)return r.body;if(r.status===403||r.status===401){let i=`Failed to load git repo: HTTP ${r.status} +`,await i.text()),process.exit()),(s=(await i.json()).default_branch)!=null?s:"main"}var yn=!1,Ye;var ae,Xf={redirect:"follow"},kt;(function(t){t[t.unknown=0]="unknown",t[t.vscode=1]="vscode",t[t.sublime=2]="sublime",t[t.vim=3]="vim"})(kt||(kt={}));function Yf(t){let e=bv();return e&&!Xf.headers&&(Xf.headers={authorization:`Bearer ${e}`}),zf(t,Xf)}function M2(){}var Kf=0,B2=!1;function gi(){var e,r;let t=ur;if(ur=!0,!yn&&!cr&&Ye)try{Ye==null||Ye.removeCallback(),Ye=null,yn=!1}catch(i){}if((ae==null?void 0:ae._tar)&&!ae._tar.writableEnded)try{ae._tar.warn=M2,ae._tar.abort()}catch(i){}if((ae==null?void 0:ae.slowTask)&&$e.waitFor!==1&&ae.slowTask.connected)try{ae.slowTask.kill(),ae.slowTask.disconnect()}catch(i){}if(!cr&&((e=ae==null?void 0:ae.destination)==null?void 0:e.length)&&Kf<10){if(process.platform==="win32")try{Aa.default.sync(ae.destination+"/*/**"),Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}else try{Aa.default.sync(ae.destination)}catch(i){process.env.VERBOSE&&console.error(i)}if(Ir.default.existsSync(ae.destination)){setTimeout(gi,32),process.env.VERBOSE&&console.log(`Failed to delete, retry attempt #${Kf}/10`),Kf++;return}}!cr&&((r=ae==null?void 0:ae.destination)==null?void 0:r.length)&&!Ir.default.existsSync(ae.destination)&&!B2&&(ae.slowTask=null,ae.log("\u{1F5D1} Deleted repository"),B2=!0),process.emitWarning=M2,process.exit()}process.once("SIGINT",gi);var As=class{constructor(){this.editorMode=0;this.didFinish=!1;this.slowTask=null;this.didUseFallback=!1}log(e){this.editorMode===3&&this.slowTask||console.log(e)}async _prefetchGithub(e,r,i,n,s){let o=`https://cdn.jsdelivr.net/gh/${r}/${e}@${n}/${i||"README.md"}`,a=await zf(o,{redirect:"follow"});if(!a.ok||a.status===404)return!1;if(ur)return;let u=await a.text();if(u.trim().length)return ur||(await Ir.default.promises.mkdir(ut.default.dirname(s),{recursive:!0}),ur)?void 0:(await Ir.default.promises.writeFile(s,u,"utf8"),!0);throw"nope"}prefetchGithub(e,r,i,n,s,o){return Promise.any([this._prefetchGithub(e,r,i,n,o),this._prefetchGithub(e,r,i,s,o)])}search(e){let r=process.emitWarning;process.emitWarning=()=>{};let{renderInk:i}=require($D);return process.emitWarning=r,i(e)}async _unzip(e){let r=await Yf(e);if(r.ok)return r.body;if(r.status===403||r.status===401){let i=`Failed to load git repo: HTTP ${r.status} ${await r.text()} - If this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;throw console.error(i),i}else throw await r.text()}unzip(e,r,i,n,s){return new Promise((o,a)=>{this.archiveStartPromise=new Promise((u,c)=>{this.unzipPromise=new Promise(async(l,f)=>{let h=await this.getArchive(`https://${Cs}/repos/${e}/${r}/tarball/${i}`,`https://${Cs}/repos/${e}/${r}/tarball/${n}`);u(),this.log("\u23F3 Extracting repository to temp folder..."),h.pipe(this._tar=I2.default.x({cwd:s,strip:1,"keep-newer-files":!0,noMtime:!0})),h.on("end",()=>{ur||(this.log("\u{1F4BF} Finished downloading repository!"),l(),o())}),h.on("error",y=>{yn||ur||(this.log("\u{1F4BF} Failed to download repository!"),f(y),a(y))})})})})}clone(e,r){let i=`git clone --filter=tree:0 --single-branch --depth=1 ${e} ${r}`;return this.log(`Cloning ${e} to temp folder...`),new Promise((n,s)=>{let o=mi.default.exec(i,{});o.stderr.pipe(process.stderr),o.once("close",()=>{n()}),o.once("exit",()=>{n()}),o.once("error",a=>{s(a)})})}parse(){var r,i,n,s,o;return N2.default(` @@ -93,7 +93,7 @@ For use with GitHub Enterprise, set $GITHUB_BASE_DOMAIN and $GITHUB_API_DOMAIN to the appropriate URLs. `.trim(),{flags:{fromscript:{type:"boolean",default:!1},register:{type:"boolean",default:!1,alias:"r",description:"Register protocol handler"},confirm:{type:"boolean",default:!1,alias:"c",description:"Confirm before deleting"},out:{type:"string",default:"",alias:"o",description:"Parent directory to store the repository in. Defaults to system temp folder."},branch:{type:"string",default:"",alias:"b",description:"branch/ref to use when fetching"},defaultBranch:{type:"boolean",default:!1,alias:"d",description:"Check default branch"},keep:{type:"boolean",default:!1,alias:"k",description:"Don't delete the repository on exit."},wait:{type:"boolean",default:!1,alias:"w",description:"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true."},help:{type:"boolean",default:!1,alias:"h",isRequired:!1},version:{type:"boolean",default:!1,alias:"v",isRequired:!1},editor:{type:"string",isMultiple:!1,isRequired:!1,default:"auto",alias:"e",description:"editor to open with, possible values: auto, code, vim, subl. By default, it will search $EDITOR. If not found, it will try code, then subl, then vim."}}})}async getArchive(e,r){let i;try{i=await this._unzip(e)}catch(n){try{this.didUseFallback=!0,i=await this._unzip(r)}catch(s){if(ur)return;console.error(`Invalid repository link. Tried: - ${e} -- ${r}`),gi(),process.exit()}}return this.archive=i,i}async run(){var V,k,G;let e=this.parse(),{help:r,version:i,out:n,branch:s,defaultBranch:o,register:a}=e.flags;cr=e.flags.keep,e.flags.fromscript&&((V=process.env.SAY_DEBUG)==null?void 0:V.length)&&process.platform==="darwin"&&(console.log=(...j)=>mi.default.exec(`say -v "Samantha" "${j.join(" ")}"`)),r&&(e.showHelp(0),process.exit(0)),i&&(console.log(L2().version),process.exit(0));let{flags:{editor:u="auto"}}=e;if(a){await require(MD).register(await j2(u,!1));return}let c=(G=(k=e.input[0])==null?void 0:k.trim())!=null?G:"";c.includes("git-peek://")&&(c=c.replace("git-peek://","").trim());let l,f=!1;if(!c.includes("://")&&c.split("/").length===2){let[j,S]=c.split("/");S.trim().length?c=`https://${_s}/${j}/${S}`:f=!0}for(f||(f=!c||!c.includes("/")||c.includes(" "));!l;){f&&(c=await this.search(c),f=!c||!c.includes("/")||c.includes(" "));try{l=x2.default(c)}catch(j){try{c=await this.search(c),f=!c||!c.includes("/")||c.includes(" ")}catch(S){this.log(S)}}}let h=l.ref;if(l.resource===_s&&(s==="default"||o||l.ref===""&&e.flags.fromscript)?h=await WD(l.owner,l.name):s!==""?h=s:h||(h="master"),c&&c.length&&zD(c)){process.env.VERBOSE&&this.log("Resolving ref from pull request...");let[j,S,I]=await HD(c);l.name=S,l.owner=j,h=I}process.env.VERBOSE&&this.log(`Fetching ${l.owner}/${l.name}#${h}...`);let y=new Date().getTime(),m=l.name+"@"+h;Ye=P2.default.dirSync((n==null?void 0:n.length)?{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete",tmpdir:Ft.default.resolve(process.cwd(),n)}:{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete"}),this.destination=Ye.name;let p=j2(u,!1);yn=!1,process.once("beforeExit",gi),process.once("SIGABRT",gi),process.once("SIGQUIT",gi);let E=l.filepath,O=!E;O&&(E="README.md");let T=Ft.default.join(Ye.name,E);if(l.resource===_s){let j=h==="main"?"master":"main",S;VD&&(S=this.prefetchGithub(l.name,l.owner,E,h,j,T));let I=this.unzip(l.owner,l.name,h,j,Ye.name),M=this.archiveStartPromise.then(()=>UD(100));S?await Promise.any([S,I,M]):await Promise.any([I,M])}else await this.clone(l.href,Ye.name);let q=[];this.editorMode=0;let A=await p;if(A.includes("code")?($e.confirm=e.flags.confirm,$e.waitFor=0,A=A.replace("--wait","","-w","").trim(),this.editorMode=1,q.push("-w","-n"),E&&q.push(`-g "${Ft.default.resolve(T)}":0:0`)):A.includes("subl")?(e.flags.fromscript?$e.waitFor=1:$e.waitFor=2,cr=!0,this.editorMode=2,A=A.replace("--wait","","-w","").trim(),q.push("-n"),E&&q.push(`"${Ft.default.resolve(T)}":0:0`)):A.includes("vi")?(this.editorMode=3,$e.confirm=e.flags.confirm,$e.waitFor=0):e.flags.fromscript?($e.waitFor=1,$e.confirm=e.flags.confirm):($e.waitFor=2,$e.confirm=e.flags.confirm),(this.editorMode===3&&O||e.flags.wait)&&this.unzipPromise&&(await this.unzipPromise,this.unzipPromise=Promise.resolve(!0)),await new Promise((j,S)=>{if(this.editorMode===3){let M=function(){var F,B;I||(((F=process==null?void 0:process.stdin)==null?void 0:F.setRawMode)&&process.stdin.setRawMode(!1),((B=process==null?void 0:process.stdin)==null?void 0:B.resume)&&process.stdin.resume(),j(),I=!0)};process.stdin.setRawMode(!0),process.stdin.pause(),this.slowTask=mi.default.spawn(A,[O?Ye.name:E,...q],{env:process.env,stdio:"inherit",detached:!1,cwd:Ye.name});let I=!1;this.slowTask.once("close",M),this.slowTask.once("exit",M),this.slowTask.once("error",M)}else{this.log(`\u{1F4BB} Launched editor in ${((new Date().getTime()-y)/1e3).toFixed(2)}s`);let I=`${A} "${Ft.default.join(Ye.name)}" ${q.join(" ")}`.trim(),M=!1,F=process.platform==="win32"?Ft.default.join(Ye.name,"../"):Ye.anme;if(e.flags.fromscript&&process.platform==="win32"?this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:"ignore",detached:!1,cwd:F}):e.flags.fromscript&&process.platform==="darwin"?this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:"pipe",detached:!0,cwd:F}):this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:$e.waitFor!==0?"ignore":"inherit",detached:$e.waitFor===0,cwd:F}),$e.waitFor===1)e.flags.fromscript&&process.platform==="win32"?(this.slowTask.unref(),this.slowTask=null,this.unzipPromise.then(()=>j(),()=>j())):this.unzipPromise.then(()=>j(),()=>j());else{let B=function(){var he,Z;M||(((he=process==null?void 0:process.stdin)==null?void 0:he.setRawMode)&&process.stdin.setRawMode(!1),((Z=process==null?void 0:process.stdin)==null?void 0:Z.resume)&&process.stdin.resume(),j())};this.slowTask.once("exit",B),this.slowTask.once("error",S),this.slowTask.once("close",B),this.slowTask.once("disconnect",B)}}}),(cr||$e.waitFor===1)&&(yn=!0),!e.flags.keep&&$e.waitFor===2){let j=process.emitWarning;process.emitWarning=()=>{};let{renderConfirm:S}=require(BD);process.emitWarning=j,cr=yn=!await S()}gi()}};As.description="Quickly open a remote Git repository with your local text editor into a temporary folder.",As.usage="[git link or github link]",As.args=[{name:"url"}];process.on("unhandledRejection",q2);process.on("unhandledException",q2);$2&&F2.default.config({path:Vf});var _s=process.env.GITHUB_BASE_DOMAIN||"github.com",Cs=process.env.GITHUB_API_DOMAIN||"api.github.com",VD=Cs==="api.github.com";ae=new As;ae.run(); +- ${r}`),gi(),process.exit()}}return this.archive=i,i}async run(){var V,k,G;let e=this.parse(),{help:r,version:i,out:n,branch:s,defaultBranch:o,register:a}=e.flags;cr=e.flags.keep,e.flags.fromscript&&((V=process.env.SAY_DEBUG)==null?void 0:V.length)&&process.platform==="darwin"&&(console.log=(...j)=>mi.default.exec(`say -v "Samantha" "${j.join(" ")}"`)),r&&(e.showHelp(0),process.exit(0)),i&&(console.log(L2().version),process.exit(0));let{flags:{editor:u="auto"}}=e;if(a){await require(MD).register(await j2(u,!1));return}let c=(G=(k=e.input[0])==null?void 0:k.trim())!=null?G:"";c.includes("git-peek://")&&(c=c.replace("git-peek://","").trim());let l,f=!1;if(!c.includes("://")&&c.split("/").length===2){let[j,S]=c.split("/");S.trim().length?c=`https://${_s}/${j}/${S}`:f=!0}for(f||(f=!c||!c.includes("/")||c.includes(" "));!l;){f&&(c=await this.search(c),f=!c||!c.includes("/")||c.includes(" "));try{l=x2.default(c)}catch(j){try{c=await this.search(c),f=!c||!c.includes("/")||c.includes(" ")}catch(S){this.log(S)}}}let h=l.ref;if(l.resource===_s&&(s==="default"||o||l.ref===""&&e.flags.fromscript)?h=await WD(l.owner,l.name):s!==""?h=s:h||(h="master"),c&&c.length&&zD(c)){process.env.VERBOSE&&this.log("Resolving ref from pull request...");let[j,S,I]=await HD(c);l.name=S,l.owner=j,h=I}process.env.VERBOSE&&this.log(`Fetching ${l.owner}/${l.name}#${h}...`);let y=new Date().getTime(),m=l.name+"@"+h;Ye=P2.default.dirSync((n==null?void 0:n.length)?{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete",tmpdir:ut.default.resolve(process.cwd(),n)}:{unsafeCleanup:!0,keep:cr,prefix:m,postfix:e.flags.keep?"":"-peekautodelete"}),this.destination=Ye.name;let p=j2(u,!1);yn=!1,process.once("beforeExit",gi),process.once("SIGABRT",gi),process.once("SIGQUIT",gi);let E=l.filepath,O=!E;O&&(E="README.md");let T=ut.default.join(Ye.name,E);if(l.resource===_s){let j=h==="main"?"master":"main",S;VD&&(S=this.prefetchGithub(l.name,l.owner,E,h,j,T));let I=this.unzip(l.owner,l.name,h,j,Ye.name),M=this.archiveStartPromise.then(()=>UD(100));S?await Promise.any([S,I,M]):await Promise.any([I,M])}else await this.clone(l.href,Ye.name);let q=[];this.editorMode=0;let A=await p;if(A.includes("code")?($e.confirm=e.flags.confirm,$e.waitFor=0,A=A.replace("--wait","","-w","").trim(),this.editorMode=1,q.push("-w","-n"),E&&q.push(`-g "${ut.default.resolve(T)}":0:0`)):A.includes("subl")?(e.flags.fromscript?$e.waitFor=1:$e.waitFor=2,cr=!0,this.editorMode=2,A=A.replace("--wait","","-w","").trim(),q.push("-n"),E&&q.push(`"${ut.default.resolve(T)}":0:0`)):A.includes("vi")?(this.editorMode=3,$e.confirm=e.flags.confirm,$e.waitFor=0):e.flags.fromscript?($e.waitFor=1,$e.confirm=e.flags.confirm):($e.waitFor=2,$e.confirm=e.flags.confirm),(this.editorMode===3&&O||e.flags.wait)&&this.unzipPromise&&(await this.unzipPromise,this.unzipPromise=Promise.resolve(!0)),await new Promise((j,S)=>{if(this.editorMode===3){let M=function(){var F,B;I||(((F=process==null?void 0:process.stdin)==null?void 0:F.setRawMode)&&process.stdin.setRawMode(!1),((B=process==null?void 0:process.stdin)==null?void 0:B.resume)&&process.stdin.resume(),j(),I=!0)};process.stdin.setRawMode(!0),process.stdin.pause(),this.slowTask=mi.default.spawn(A,[O?Ye.name:E,...q],{env:process.env,stdio:"inherit",detached:!1,cwd:Ye.name});let I=!1;this.slowTask.once("close",M),this.slowTask.once("exit",M),this.slowTask.once("error",M)}else{this.log(`\u{1F4BB} Launched editor in ${((new Date().getTime()-y)/1e3).toFixed(2)}s`);let I=`${A} "${ut.default.join(Ye.name)}" ${q.join(" ")}`.trim(),M=!1,F=process.platform==="win32"?ut.default.join(Ye.name,"../"):Ye.anme;if(e.flags.fromscript&&process.platform==="win32"?this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:"ignore",detached:!1,cwd:F}):e.flags.fromscript&&process.platform==="darwin"?this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:"pipe",detached:!0,cwd:F}):this.slowTask=mi.default.spawn(I,{env:process.env,shell:!0,windowsHide:!0,stdio:$e.waitFor!==0?"ignore":"inherit",detached:$e.waitFor===0,cwd:F}),$e.waitFor===1)e.flags.fromscript&&process.platform==="win32"?(this.slowTask.unref(),this.slowTask=null,this.unzipPromise.then(()=>j(),()=>j())):this.unzipPromise.then(()=>j(),()=>j());else{let B=function(){var he,Z;M||(((he=process==null?void 0:process.stdin)==null?void 0:he.setRawMode)&&process.stdin.setRawMode(!1),((Z=process==null?void 0:process.stdin)==null?void 0:Z.resume)&&process.stdin.resume(),j())};this.slowTask.once("exit",B),this.slowTask.once("error",S),this.slowTask.once("close",B),this.slowTask.once("disconnect",B)}}}),(cr||$e.waitFor===1)&&(yn=!0),!e.flags.keep&&$e.waitFor===2){let j=process.emitWarning;process.emitWarning=()=>{};let{renderConfirm:S}=require(BD);process.emitWarning=j,cr=yn=!await S()}gi()}};As.description="Quickly open a remote Git repository with your local text editor into a temporary folder.",As.usage="[git link or github link]",As.args=[{name:"url"}];process.on("unhandledRejection",q2);process.on("unhandledException",q2);$2&&F2.default.config({path:Vf});var _s=process.env.GITHUB_BASE_DOMAIN||"github.com",Cs=process.env.GITHUB_API_DOMAIN||"api.github.com",VD=Cs==="api.github.com";ae=new As;ae.run(); /*! * Tmp * diff --git a/bin/git-peek.map b/bin/git-peek.map index 284324a..1d90e59 100644 --- a/bin/git-peek.map +++ b/bin/git-peek.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/.pnpm/protocols@1.4.8/node_modules/protocols/lib/index.js", "../node_modules/.pnpm/is-ssh@1.3.2/node_modules/is-ssh/lib/index.js", "../node_modules/.pnpm/strict-uri-encode@2.0.0/node_modules/strict-uri-encode/index.js", "../node_modules/.pnpm/decode-uri-component@0.2.0/node_modules/decode-uri-component/index.js", "../node_modules/.pnpm/split-on-first@1.1.0/node_modules/split-on-first/index.js", "../node_modules/.pnpm/filter-obj@1.1.0/node_modules/filter-obj/index.js", "../node_modules/.pnpm/query-string@6.14.0/node_modules/query-string/index.js", "../node_modules/.pnpm/parse-path@4.0.3/node_modules/parse-path/lib/index.js", "../node_modules/.pnpm/normalize-url@3.3.0/node_modules/normalize-url/index.js", "../node_modules/.pnpm/parse-url@5.0.2/node_modules/parse-url/lib/index.js", "../node_modules/.pnpm/git-up@4.0.2/node_modules/git-up/lib/index.js", "../node_modules/.pnpm/git-url-parse@11.4.4/node_modules/git-url-parse/lib/index.js", "../node_modules/.pnpm/is-plain-obj@1.1.0/node_modules/is-plain-obj/index.js", "../node_modules/.pnpm/arrify@1.0.1/node_modules/arrify/index.js", "../node_modules/.pnpm/kind-of@6.0.3/node_modules/kind-of/index.js", "../node_modules/.pnpm/minimist-options@4.1.0/node_modules/minimist-options/index.js", "../node_modules/.pnpm/yargs-parser@20.2.4/node_modules/yargs-parser/build/index.cjs", "../node_modules/.pnpm/map-obj@4.1.0/node_modules/map-obj/index.js", "../node_modules/.pnpm/camelcase@5.3.1/node_modules/camelcase/index.js", "../node_modules/.pnpm/quick-lru@4.0.1/node_modules/quick-lru/index.js", "../node_modules/.pnpm/camelcase-keys@6.2.2/node_modules/camelcase-keys/index.js", "../node_modules/.pnpm/decamelize@1.2.0/node_modules/decamelize/index.js", "../node_modules/.pnpm/map-obj@1.0.1/node_modules/map-obj/index.js", "../node_modules/.pnpm/decamelize-keys@1.1.0/node_modules/decamelize-keys/index.js", "../node_modules/.pnpm/trim-newlines@3.0.0/node_modules/trim-newlines/index.js", "../node_modules/.pnpm/min-indent@1.0.1/node_modules/min-indent/index.js", "../node_modules/.pnpm/strip-indent@3.0.0/node_modules/strip-indent/index.js", "../node_modules/.pnpm/indent-string@4.0.0/node_modules/indent-string/index.js", "../node_modules/.pnpm/redent@3.0.0/node_modules/redent/index.js", "../node_modules/.pnpm/p-try@2.2.0/node_modules/p-try/index.js", "../node_modules/.pnpm/p-limit@2.3.0/node_modules/p-limit/index.js", "../node_modules/.pnpm/p-locate@4.1.0/node_modules/p-locate/index.js", "../node_modules/.pnpm/locate-path@5.0.0/node_modules/locate-path/index.js", "../node_modules/.pnpm/path-exists@4.0.0/node_modules/path-exists/index.js", "../node_modules/.pnpm/find-up@4.1.0/node_modules/find-up/index.js", "../node_modules/.pnpm/is-arrayish@0.2.1/node_modules/is-arrayish/index.js", "../node_modules/.pnpm/error-ex@1.3.2/node_modules/error-ex/index.js", "../node_modules/.pnpm/json-parse-even-better-errors@2.3.1/node_modules/json-parse-even-better-errors/index.js", "../node_modules/.pnpm/lines-and-columns@1.1.6/node_modules/lines-and-columns/dist/index.js", "../node_modules/.pnpm/js-tokens@4.0.0/node_modules/js-tokens/index.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/identifier.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/keyword.js", "../node_modules/.pnpm/@babel/helper-validator-identifier@7.12.11/node_modules/@babel/helper-validator-identifier/lib/index.js", "../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js", "../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js", "../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js", "../node_modules/.pnpm/ansi-styles@3.2.1/node_modules/ansi-styles/index.js", "../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/templates.js", "../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/index.js", "../node_modules/.pnpm/@babel/highlight@7.12.13/node_modules/@babel/highlight/lib/index.js", "../node_modules/.pnpm/@babel/code-frame@7.12.13/node_modules/@babel/code-frame/lib/index.js", "../node_modules/.pnpm/parse-json@5.2.0/node_modules/parse-json/index.js", "../node_modules/.pnpm/semver@5.7.1/node_modules/semver/semver.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/scan.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/parse.js", "../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/index.js", "../node_modules/.pnpm/spdx-correct@3.1.1/node_modules/spdx-correct/index.js", "../node_modules/.pnpm/validate-npm-package-license@3.0.4/node_modules/validate-npm-package-license/index.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/git-host-info.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/git-host.js", "../node_modules/.pnpm/hosted-git-info@2.8.8/node_modules/hosted-git-info/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/caller.js", "../node_modules/.pnpm/path-parse@1.0.6/node_modules/path-parse/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/node-modules-paths.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/normalize-options.js", "../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js", "../node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js", "../node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js", "../node_modules/.pnpm/is-core-module@2.2.0/node_modules/is-core-module/index.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/async.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/core.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/is-core.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/lib/sync.js", "../node_modules/.pnpm/resolve@1.19.0/node_modules/resolve/index.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/extract_description.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/fixer.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/make_warning.js", "../node_modules/.pnpm/normalize-package-data@2.5.0/node_modules/normalize-package-data/lib/normalize.js", "../node_modules/.pnpm/read-pkg@5.2.0/node_modules/read-pkg/index.js", "../node_modules/.pnpm/read-pkg-up@7.0.1/node_modules/read-pkg-up/index.js", "../node_modules/.pnpm/hard-rejection@2.1.0/node_modules/hard-rejection/index.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/constants.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/debug.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/re.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/parse-options.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/internal/identifiers.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/semver.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/parse.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/valid.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/clean.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/inc.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/eq.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/diff.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/major.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/minor.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/patch.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/prerelease.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/rcompare.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare-loose.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/compare-build.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/sort.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/rsort.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/gt.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/lt.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/neq.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/gte.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/lte.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/cmp.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/coerce.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js", "../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/range.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/classes/comparator.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/functions/satisfies.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/to-comparators.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/max-satisfying.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/min-satisfying.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/min-version.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/valid.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/outside.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/gtr.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/ltr.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/intersects.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/simplify.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/ranges/subset.js", "../node_modules/.pnpm/semver@7.3.4/node_modules/semver/index.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/git-host-info.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/git-host.js", "../node_modules/.pnpm/hosted-git-info@3.0.8/node_modules/hosted-git-info/index.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/extract_description.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/fixer.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/make_warning.js", "../node_modules/.pnpm/normalize-package-data@3.0.0/node_modules/normalize-package-data/lib/normalize.js", "../node_modules/.pnpm/meow@9.0.0/node_modules/meow/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/high-level-opt.js", "../node_modules/.pnpm/minipass@3.1.3/node_modules/minipass/index.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/constants.js", "../node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/read-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/types.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/large-numbers.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/header.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pax.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/warn-mixin.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/winchars.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mode-fix.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/write-entry.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/iterator.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/yallist/yallist.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/pack.js", "../node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/index.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/parse.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/list.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/create.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/replace.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/update.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/opts-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/path-arg.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/find-made.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/lib/use-native.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/node_modules/mkdirp/index.js", "../node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/chownr.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/mkdir.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/path-reservations.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/get-write-flag.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/unpack.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/lib/extract.js", "../node_modules/.pnpm/tar@6.1.0/node_modules/tar/index.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js", "../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js", "../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js", "../node_modules/.pnpm/balanced-match@1.0.0/node_modules/balanced-match/index.js", "../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js", "../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js", "../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/common.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/sync.js", "../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js", "../node_modules/.pnpm/glob@7.1.6/node_modules/glob/glob.js", "../node_modules/.pnpm/rimraf@3.0.2/node_modules/rimraf/rimraf.js", "../node_modules/.pnpm/tmp@0.2.1/node_modules/tmp/lib/tmp.js", "../node_modules/.pnpm/node-fetch@2.6.1/node_modules/node-fetch/lib/index.mjs", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/_http_agent.js", "../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js", "../node_modules/.pnpm/humanize-ms@1.2.1/node_modules/humanize-ms/index.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/agent.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/lib/https_agent.js", "../node_modules/.pnpm/agentkeepalive@3.4.1/node_modules/agentkeepalive/index.js", "../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js", "../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js", "../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js", "../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/index.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry_operation.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry.js", "../node_modules/.pnpm/retry@0.12.0/node_modules/retry/index.js", "../node_modules/.pnpm/async-retry@1.3.1/node_modules/async-retry/lib/index.js", "../node_modules/.pnpm/@vercel/fetch-retry@5.0.3_node-fetch@2.6.1/node_modules/@vercel/fetch-retry/index.js", "../node_modules/.pnpm/yallist@3.1.1/node_modules/yallist/iterator.js", "../node_modules/.pnpm/yallist@3.1.1/node_modules/yallist/yallist.js", "../node_modules/.pnpm/lru-cache@5.1.1/node_modules/lru-cache/index.js", "../node_modules/.pnpm/async-retry@1.2.3/node_modules/async-retry/lib/index.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/resolve4.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/resolve6.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/dns-resolve.js", "../node_modules/.pnpm/@zeit/dns-cached-resolve@2.1.0/node_modules/@zeit/dns-cached-resolve/lib/index.js", "../node_modules/.pnpm/@vercel/fetch-cached-dns@2.0.1_node-fetch@2.6.1/node_modules/@vercel/fetch-cached-dns/util.js", "../node_modules/.pnpm/@vercel/fetch-cached-dns@2.0.1_node-fetch@2.6.1/node_modules/@vercel/fetch-cached-dns/index.js", "../node_modules/.pnpm/@vercel/fetch@6.1.0_node-fetch@2.6.1/node_modules/@vercel/fetch/index.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/dotenv@8.2.0/node_modules/dotenv/lib/main.js", "../node_modules/.pnpm/promise-any-polyfill@0.1.2/node_modules/promise-any-polyfill/ts/implementation.ts", "../src/index.ts", "../src/findGitHubToken.tsx", "../src/fetch.ts"], - "sourcesContent": ["\"use strict\";\n\n/**\n * protocols\n * Returns the protocols of an input url.\n *\n * @name protocols\n * @function\n * @param {String} input The input url.\n * @param {Boolean|Number} first If `true`, the first protocol will be returned. If number, it will represent the zero-based index of the protocols array.\n * @return {Array|String} The array of protocols or the specified protocol.\n */\nmodule.exports = function protocols(input, first) {\n\n if (first === true) {\n first = 0;\n }\n\n var index = input.indexOf(\"://\"),\n splits = input.substring(0, index).split(\"+\").filter(Boolean);\n\n if (typeof first === \"number\") {\n return splits[first];\n }\n\n return splits;\n};", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\");\n\n/**\n * isSsh\n * Checks if an input value is a ssh url or not.\n *\n * @name isSsh\n * @function\n * @param {String|Array} input The input url or an array of protocols.\n * @return {Boolean} `true` if the input is a ssh url, `false` otherwise.\n */\nfunction isSsh(input) {\n\n if (Array.isArray(input)) {\n return input.indexOf(\"ssh\") !== -1 || input.indexOf(\"rsync\") !== -1;\n }\n\n if (typeof input !== \"string\") {\n return false;\n }\n\n var prots = protocols(input);\n input = input.substring(input.indexOf(\"://\") + 3);\n if (isSsh(prots)) {\n return true;\n }\n\n // TODO This probably could be improved :)\n return input.indexOf(\"@\") < input.indexOf(\":\");\n}\n\nmodule.exports = isSsh;", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\"),\n isSsh = require(\"is-ssh\"),\n qs = require(\"query-string\");\n\n/**\n * parsePath\n * Parses the input url.\n *\n * @name parsePath\n * @function\n * @param {String} url The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parsePath(url) {\n url = (url || \"\").trim();\n var output = {\n protocols: protocols(url),\n protocol: null,\n port: null,\n resource: \"\",\n user: \"\",\n pathname: \"\",\n hash: \"\",\n search: \"\",\n href: url,\n query: Object.create(null)\n },\n protocolIndex = url.indexOf(\"://\"),\n resourceIndex = -1,\n splits = null,\n parts = null;\n\n if (url.startsWith(\".\")) {\n if (url.startsWith(\"./\")) {\n url = url.substring(2);\n }\n output.pathname = url;\n output.protocol = \"file\";\n }\n\n var firstChar = url.charAt(1);\n if (!output.protocol) {\n output.protocol = output.protocols[0];\n if (!output.protocol) {\n if (isSsh(url)) {\n output.protocol = \"ssh\";\n } else if (firstChar === \"/\" || firstChar === \"~\") {\n url = url.substring(2);\n output.protocol = \"file\";\n } else {\n output.protocol = \"file\";\n }\n }\n }\n\n if (protocolIndex !== -1) {\n url = url.substring(protocolIndex + 3);\n }\n\n parts = url.split(/\\/|\\\\/);\n if (output.protocol !== \"file\") {\n output.resource = parts.shift();\n } else {\n output.resource = \"\";\n }\n\n // user@domain\n splits = output.resource.split(\"@\");\n if (splits.length === 2) {\n output.user = splits[0];\n output.resource = splits[1];\n }\n\n // domain.com:port\n splits = output.resource.split(\":\");\n if (splits.length === 2) {\n output.resource = splits[0];\n if (splits[1]) {\n output.port = Number(splits[1]);\n if (isNaN(output.port)) {\n output.port = null;\n parts.unshift(splits[1]);\n }\n } else {\n output.port = null;\n }\n }\n\n // Remove empty elements\n parts = parts.filter(Boolean);\n\n // Stringify the pathname\n if (output.protocol === \"file\") {\n output.pathname = output.href;\n } else {\n output.pathname = output.pathname || (output.protocol !== \"file\" || output.href[0] === \"/\" ? \"/\" : \"\") + parts.join(\"/\");\n }\n\n // #some-hash\n splits = output.pathname.split(\"#\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.hash = splits[1];\n }\n\n // ?foo=bar\n splits = output.pathname.split(\"?\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.search = splits[1];\n }\n\n output.query = qs.parse(output.search);\n output.href = output.href.replace(/\\/$/, \"\");\n output.pathname = output.pathname.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = parsePath;", "'use strict';\n// TODO: Use the `URL` global when targeting Node.js 10\nconst URLParser = typeof URL === 'undefined' ? require('url').URL : URL;\n\nconst testParameter = (name, filters) => {\n\treturn filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);\n};\n\nmodule.exports = (urlString, opts) => {\n\topts = Object.assign({\n\t\tdefaultProtocol: 'http:',\n\t\tnormalizeProtocol: true,\n\t\tforceHttp: false,\n\t\tforceHttps: false,\n\t\tstripHash: true,\n\t\tstripWWW: true,\n\t\tremoveQueryParameters: [/^utm_\\w+/i],\n\t\tremoveTrailingSlash: true,\n\t\tremoveDirectoryIndex: false,\n\t\tsortQueryParameters: true\n\t}, opts);\n\n\t// Backwards compatibility\n\tif (Reflect.has(opts, 'normalizeHttps')) {\n\t\topts.forceHttp = opts.normalizeHttps;\n\t}\n\n\tif (Reflect.has(opts, 'normalizeHttp')) {\n\t\topts.forceHttps = opts.normalizeHttp;\n\t}\n\n\tif (Reflect.has(opts, 'stripFragment')) {\n\t\topts.stripHash = opts.stripFragment;\n\t}\n\n\turlString = urlString.trim();\n\n\tconst hasRelativeProtocol = urlString.startsWith('//');\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString);\n\n\t// Prepend protocol\n\tif (!isRelativeUrl) {\n\t\turlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, opts.defaultProtocol);\n\t}\n\n\tconst urlObj = new URLParser(urlString);\n\n\tif (opts.forceHttp && opts.forceHttps) {\n\t\tthrow new Error('The `forceHttp` and `forceHttps` options cannot be used together');\n\t}\n\n\tif (opts.forceHttp && urlObj.protocol === 'https:') {\n\t\turlObj.protocol = 'http:';\n\t}\n\n\tif (opts.forceHttps && urlObj.protocol === 'http:') {\n\t\turlObj.protocol = 'https:';\n\t}\n\n\t// Remove hash\n\tif (opts.stripHash) {\n\t\turlObj.hash = '';\n\t}\n\n\t// Remove duplicate slashes if not preceded by a protocol\n\tif (urlObj.pathname) {\n\t\t// TODO: Use the following instead when targeting Node.js 10\n\t\t// `urlObj.pathname = urlObj.pathname.replace(/(? {\n\t\t\tif (/^(?!\\/)/g.test(p1)) {\n\t\t\t\treturn `${p1}/`;\n\t\t\t}\n\t\t\treturn '/';\n\t\t});\n\t}\n\n\t// Decode URI octets\n\tif (urlObj.pathname) {\n\t\turlObj.pathname = decodeURI(urlObj.pathname);\n\t}\n\n\t// Remove directory index\n\tif (opts.removeDirectoryIndex === true) {\n\t\topts.removeDirectoryIndex = [/^index\\.[a-z]+$/];\n\t}\n\n\tif (Array.isArray(opts.removeDirectoryIndex) && opts.removeDirectoryIndex.length > 0) {\n\t\tlet pathComponents = urlObj.pathname.split('/');\n\t\tconst lastComponent = pathComponents[pathComponents.length - 1];\n\n\t\tif (testParameter(lastComponent, opts.removeDirectoryIndex)) {\n\t\t\tpathComponents = pathComponents.slice(0, pathComponents.length - 1);\n\t\t\turlObj.pathname = pathComponents.slice(1).join('/') + '/';\n\t\t}\n\t}\n\n\tif (urlObj.hostname) {\n\t\t// Remove trailing dot\n\t\turlObj.hostname = urlObj.hostname.replace(/\\.$/, '');\n\n\t\t// Remove `www.`\n\t\t// eslint-disable-next-line no-useless-escape\n\t\tif (opts.stripWWW && /^www\\.([a-z\\-\\d]{2,63})\\.([a-z\\.]{2,5})$/.test(urlObj.hostname)) {\n\t\t\t// Each label should be max 63 at length (min: 2).\n\t\t\t// The extension should be max 5 at length (min: 2).\n\t\t\t// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\n\t\t\turlObj.hostname = urlObj.hostname.replace(/^www\\./, '');\n\t\t}\n\t}\n\n\t// Remove query unwanted parameters\n\tif (Array.isArray(opts.removeQueryParameters)) {\n\t\tfor (const key of [...urlObj.searchParams.keys()]) {\n\t\t\tif (testParameter(key, opts.removeQueryParameters)) {\n\t\t\t\turlObj.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort query parameters\n\tif (opts.sortQueryParameters) {\n\t\turlObj.searchParams.sort();\n\t}\n\n\t// Take advantage of many of the Node `url` normalizations\n\turlString = urlObj.toString();\n\n\t// Remove ending `/`\n\tif (opts.removeTrailingSlash || urlObj.pathname === '/') {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Restore relative protocol, if applicable\n\tif (hasRelativeProtocol && !opts.normalizeProtocol) {\n\t\turlString = urlString.replace(/^http:\\/\\//, '//');\n\t}\n\n\treturn urlString;\n};\n", "\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar parsePath = require(\"parse-path\"),\n normalizeUrl = require(\"normalize-url\");\n\n/**\n * parseUrl\n * Parses the input url.\n *\n * **Note**: This *throws* if invalid urls are provided.\n *\n * @name parseUrl\n * @function\n * @param {String} url The input url.\n * @param {Boolean|Object} normalize Wheter to normalize the url or not.\n * Default is `false`. If `true`, the url will\n * be normalized. If an object, it will be the\n * options object sent to [`normalize-url`](https://github.com/sindresorhus/normalize-url).\n *\n * For SSH urls, normalize won't work.\n *\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parseUrl(url) {\n var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof url !== \"string\" || !url.trim()) {\n throw new Error(\"Invalid url.\");\n }\n if (normalize) {\n if ((typeof normalize === \"undefined\" ? \"undefined\" : _typeof(normalize)) !== \"object\") {\n normalize = {\n stripFragment: false\n };\n }\n url = normalizeUrl(url, normalize);\n }\n var parsed = parsePath(url);\n return parsed;\n}\n\nmodule.exports = parseUrl;", "\"use strict\";\n\n// Dependencies\n\nvar parseUrl = require(\"parse-url\"),\n isSsh = require(\"is-ssh\");\n\n/**\n * gitUp\n * Parses the input url.\n *\n * @name gitUp\n * @function\n * @param {String} input The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n */\nfunction gitUp(input) {\n var output = parseUrl(input);\n output.token = \"\";\n\n var splits = output.user.split(\":\");\n if (splits.length === 2) {\n if (splits[1] === \"x-oauth-basic\") {\n output.token = splits[0];\n } else if (splits[0] === \"x-token-auth\") {\n output.token = splits[1];\n }\n }\n\n if (isSsh(output.protocols) || isSsh(input)) {\n output.protocol = \"ssh\";\n } else if (output.protocols.length) {\n output.protocol = output.protocols[0];\n } else {\n output.protocol = \"file\";\n }\n\n output.href = output.href.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = gitUp;", "\"use strict\";\n\nvar gitUp = require(\"git-up\");\n\n/**\n * gitUrlParse\n * Parses a Git url.\n *\n * @name gitUrlParse\n * @function\n * @param {String} url The Git url to parse.\n * @return {GitUrl} The `GitUrl` object containing:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n * - `source` (String): The Git provider (e.g. `\"github.com\"`).\n * - `owner` (String): The repository owner.\n * - `name` (String): The repository name.\n * - `ref` (String): The repository ref (e.g., \"master\" or \"dev\").\n * - `filepath` (String): A filepath relative to the repository root.\n * - `filepathtype` (String): The type of filepath in the url (\"blob\" or \"tree\").\n * - `full_name` (String): The owner and name values in the `owner/name` format.\n * - `toString` (Function): A function to stringify the parsed url into another url type.\n * - `organization` (String): The organization the owner belongs to. This is CloudForge specific.\n * - `git_suffix` (Boolean): Whether to add the `.git` suffix or not.\n *\n */\nfunction gitUrlParse(url) {\n\n if (typeof url !== \"string\") {\n throw new Error(\"The url must be a string.\");\n }\n\n var urlInfo = gitUp(url),\n sourceParts = urlInfo.resource.split(\".\"),\n splits = null;\n\n urlInfo.toString = function (type) {\n return gitUrlParse.stringify(this, type);\n };\n\n urlInfo.source = sourceParts.length > 2 ? sourceParts.slice(1 - sourceParts.length).join(\".\") : urlInfo.source = urlInfo.resource;\n\n // Note: Some hosting services (e.g. Visual Studio Team Services) allow whitespace characters\n // in the repository and owner names so we decode the URL pieces to get the correct result\n urlInfo.git_suffix = /\\.git$/.test(urlInfo.pathname);\n urlInfo.name = decodeURIComponent(urlInfo.pathname.replace(/^\\//, '').replace(/\\.git$/, \"\"));\n urlInfo.owner = decodeURIComponent(urlInfo.user);\n\n switch (urlInfo.source) {\n case \"git.cloudforge.com\":\n urlInfo.owner = urlInfo.user;\n urlInfo.organization = sourceParts[0];\n urlInfo.source = \"cloudforge.com\";\n break;\n case \"visualstudio.com\":\n // Handle VSTS SSH URLs\n if (urlInfo.resource === 'vs-ssh.visualstudio.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n urlInfo.full_name = splits[2] + '/' + splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 2) {\n urlInfo.owner = splits[1];\n urlInfo.name = splits[1];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n break;\n }\n\n // Azure DevOps (formerly Visual Studio Team Services)\n case \"dev.azure.com\":\n case \"azure.com\":\n if (urlInfo.resource === 'ssh.dev.azure.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 5) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[4];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n if (urlInfo.query && urlInfo.query['path']) {\n urlInfo.filepath = urlInfo.query['path'].replace(/^\\/+/g, ''); // Strip leading slash (/)\n }\n if (urlInfo.query && urlInfo.query['version']) {\n // version=GB\n urlInfo.ref = urlInfo.query['version'].replace(/^GB/, ''); // remove GB\n }\n break;\n }\n default:\n splits = urlInfo.name.split(\"/\");\n var nameIndex = splits.length - 1;\n if (splits.length >= 2) {\n var dashIndex = splits.indexOf(\"-\", 2);\n var blobIndex = splits.indexOf(\"blob\", 2);\n var treeIndex = splits.indexOf(\"tree\", 2);\n var commitIndex = splits.indexOf(\"commit\", 2);\n var srcIndex = splits.indexOf(\"src\", 2);\n var rawIndex = splits.indexOf(\"raw\", 2);\n nameIndex = dashIndex > 0 ? dashIndex - 1 : blobIndex > 0 ? blobIndex - 1 : treeIndex > 0 ? treeIndex - 1 : commitIndex > 0 ? commitIndex - 1 : srcIndex > 0 ? srcIndex - 1 : rawIndex > 0 ? rawIndex - 1 : nameIndex;\n\n urlInfo.owner = splits.slice(0, nameIndex).join('/');\n urlInfo.name = splits[nameIndex];\n if (commitIndex) {\n urlInfo.commit = splits[nameIndex + 2];\n }\n }\n\n urlInfo.ref = \"\";\n urlInfo.filepathtype = \"\";\n urlInfo.filepath = \"\";\n var offsetNameIndex = splits.length > nameIndex && splits[nameIndex + 1] === \"-\" ? nameIndex + 1 : nameIndex;\n if (splits.length > offsetNameIndex + 2 && [\"raw\", \"src\", \"blob\", \"tree\"].indexOf(splits[offsetNameIndex + 1]) >= 0) {\n urlInfo.filepathtype = splits[offsetNameIndex + 1];\n urlInfo.ref = splits[offsetNameIndex + 2];\n if (splits.length > offsetNameIndex + 3) {\n urlInfo.filepath = splits.slice(offsetNameIndex + 3).join('/');\n }\n }\n urlInfo.organization = urlInfo.owner;\n break;\n }\n\n if (!urlInfo.full_name) {\n urlInfo.full_name = urlInfo.owner;\n if (urlInfo.name) {\n urlInfo.full_name && (urlInfo.full_name += \"/\");\n urlInfo.full_name += urlInfo.name;\n }\n }\n // Bitbucket Server\n if (urlInfo.owner.startsWith(\"scm/\")) {\n urlInfo.source = \"bitbucket-server\";\n urlInfo.owner = urlInfo.owner.replace(\"scm/\", \"\");\n urlInfo.organization = urlInfo.owner;\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n }\n\n var bitbucket = /(projects|users)\\/(.*?)\\/repos\\/(.*?)\\/(raw|browse)(?:\\/(?:$|(.+?)))?$/;\n var matches = bitbucket.exec(urlInfo.pathname);\n if (matches != null) {\n urlInfo.source = \"bitbucket-server\";\n if (matches[1] === \"users\") {\n urlInfo.owner = \"~\" + matches[2];\n } else {\n urlInfo.owner = matches[2];\n }\n\n urlInfo.organization = urlInfo.owner;\n urlInfo.name = matches[3];\n urlInfo.filepathtype = matches[4];\n urlInfo.filepath = matches[5];\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n\n if (urlInfo.query.at) {\n urlInfo.ref = urlInfo.query.at;\n } else {\n urlInfo.ref = \"\";\n }\n }\n return urlInfo;\n}\n\n/**\n * stringify\n * Stringifies a `GitUrl` object.\n *\n * @name stringify\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @param {String} type The type of the stringified url (default `obj.protocol`).\n * @return {String} The stringified url.\n */\ngitUrlParse.stringify = function (obj, type) {\n type = type || (obj.protocols && obj.protocols.length ? obj.protocols.join('+') : obj.protocol);\n var port = obj.port ? \":\" + obj.port : '';\n var user = obj.user || 'git';\n var maybeGitSuffix = obj.git_suffix ? \".git\" : \"\";\n switch (type) {\n case \"ssh\":\n if (port) return \"ssh://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;else return user + \"@\" + obj.resource + \":\" + obj.full_name + maybeGitSuffix;\n case \"git+ssh\":\n case \"ssh+git\":\n case \"ftp\":\n case \"ftps\":\n return type + \"://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;\n case \"http\":\n case \"https\":\n var auth = obj.token ? buildToken(obj) : obj.user && (obj.protocols.includes('http') || obj.protocols.includes('https')) ? obj.user + \"@\" : \"\";\n return type + \"://\" + auth + obj.resource + port + \"/\" + buildPath(obj) + maybeGitSuffix;\n default:\n return obj.href;\n }\n};\n\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\nfunction buildToken(obj) {\n switch (obj.source) {\n case \"bitbucket.org\":\n return \"x-token-auth:\" + obj.token + \"@\";\n default:\n return obj.token + \"@\";\n }\n}\n\nfunction buildPath(obj) {\n switch (obj.source) {\n case \"bitbucket-server\":\n return \"scm/\" + obj.full_name;\n default:\n return \"\" + obj.full_name;\n\n }\n}\n\nmodule.exports = gitUrlParse;", "'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n", "'use strict';\nmodule.exports = function (val) {\n\tif (val === null || val === undefined) {\n\t\treturn [];\n\t}\n\n\treturn Array.isArray(val) ? val : [val];\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", "'use strict';\n\nconst isPlainObject = require('is-plain-obj');\nconst arrify = require('arrify');\nconst kindOf = require('kind-of');\n\nconst push = (obj, prop, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = [];\n\t}\n\n\tobj[prop].push(value);\n};\n\nconst insert = (obj, prop, key, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = {};\n\t}\n\n\tobj[prop][key] = value;\n};\n\nconst prettyPrint = output => {\n\treturn Array.isArray(output) ?\n\t\t`[${output.map(prettyPrint).join(', ')}]` :\n\t\tkindOf(output) === 'string' ? JSON.stringify(output) : output;\n};\n\nconst resolveType = value => {\n\tif (Array.isArray(value) && value.length > 0) {\n\t\tconst [element] = value;\n\t\treturn `${kindOf(element)}-array`;\n\t}\n\n\treturn kindOf(value);\n};\n\nconst normalizeExpectedType = (type, defaultValue) => {\n\tconst inferredType = type === 'array' ? 'string-array' : type;\n\n\tif (arrayTypes.includes(inferredType) && Array.isArray(defaultValue) && defaultValue.length === 0) {\n\t\treturn 'array';\n\t}\n\n\treturn inferredType;\n};\n\nconst passthroughOptions = ['stopEarly', 'unknown', '--'];\nconst primitiveTypes = ['string', 'boolean', 'number'];\nconst arrayTypes = primitiveTypes.map(t => `${t}-array`);\nconst availableTypes = [...primitiveTypes, 'array', ...arrayTypes];\n\nconst buildOptions = options => {\n\toptions = options || {};\n\n\tconst result = {};\n\n\tpassthroughOptions.forEach(key => {\n\t\tif (options[key]) {\n\t\t\tresult[key] = options[key];\n\t\t}\n\t});\n\n\tObject.keys(options).forEach(key => {\n\t\tlet value = options[key];\n\n\t\tif (key === 'arguments') {\n\t\t\tkey = '_';\n\t\t}\n\n\t\t// If short form is used\n\t\t// convert it to long form\n\t\t// e.g. { 'name': 'string' }\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = {type: value};\n\t\t}\n\n\t\tif (isPlainObject(value)) {\n\t\t\tconst props = value;\n\t\t\tconst {type} = props;\n\n\t\t\tif (type) {\n\t\t\t\tif (!availableTypes.includes(type)) {\n\t\t\t\t\tthrow new TypeError(`Expected type of \"${key}\" to be one of ${prettyPrint(availableTypes)}, got ${prettyPrint(type)}`);\n\t\t\t\t}\n\n\t\t\t\tif (arrayTypes.includes(type)) {\n\t\t\t\t\tconst [elementType] = type.split('-');\n\t\t\t\t\tpush(result, 'array', {key, [elementType]: true});\n\t\t\t\t} else {\n\t\t\t\t\tpush(result, type, key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ({}.hasOwnProperty.call(props, 'default')) {\n\t\t\t\tconst {default: defaultValue} = props;\n\t\t\t\tconst defaultType = resolveType(defaultValue);\n\t\t\t\tconst expectedType = normalizeExpectedType(type, defaultValue);\n\n\t\t\t\tif (expectedType && expectedType !== defaultType) {\n\t\t\t\t\tthrow new TypeError(`Expected \"${key}\" default value to be of type \"${expectedType}\", got ${prettyPrint(defaultType)}`);\n\t\t\t\t}\n\n\t\t\t\tinsert(result, 'default', key, defaultValue);\n\t\t\t}\n\n\t\t\tarrify(props.alias).forEach(alias => {\n\t\t\t\tinsert(result, 'alias', alias, key);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn result;\n};\n\nmodule.exports = buildOptions;\nmodule.exports.default = buildOptions;\n", "'use strict';\n\nvar util = require('util');\nvar fs = require('fs');\nvar path = require('path');\n\nfunction camelCase(str) {\n str = str.toLocaleLowerCase();\n if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n return str;\n }\n else {\n let camelcase = '';\n let nextChrUpper = false;\n const leadingHyphens = str.match(/^-+/);\n for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n let chr = str.charAt(i);\n if (nextChrUpper) {\n nextChrUpper = false;\n chr = chr.toLocaleUpperCase();\n }\n if (i !== 0 && (chr === '-' || chr === '_')) {\n nextChrUpper = true;\n continue;\n }\n else if (chr !== '-' && chr !== '_') {\n camelcase += chr;\n }\n }\n return camelcase;\n }\n}\nfunction decamelize(str, joinString) {\n const lowercase = str.toLocaleLowerCase();\n joinString = joinString || '-';\n let notCamelcase = '';\n for (let i = 0; i < str.length; i++) {\n const chrLower = lowercase.charAt(i);\n const chrString = str.charAt(i);\n if (chrLower !== chrString && i > 0) {\n notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n }\n else {\n notCamelcase += chrString;\n }\n }\n return notCamelcase;\n}\nfunction looksLikeNumber(x) {\n if (x === null || x === undefined)\n return false;\n if (typeof x === 'number')\n return true;\n if (/^0x[0-9a-f]+$/i.test(x))\n return true;\n if (x.length > 1 && x[0] === '0')\n return false;\n return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\nfunction tokenizeArgString(argString) {\n if (Array.isArray(argString)) {\n return argString.map(e => typeof e !== 'string' ? e + '' : e);\n }\n argString = argString.trim();\n let i = 0;\n let prevC = null;\n let c = null;\n let opening = null;\n const args = [];\n for (let ii = 0; ii < argString.length; ii++) {\n prevC = c;\n c = argString.charAt(ii);\n if (c === ' ' && !opening) {\n if (!(prevC === ' ')) {\n i++;\n }\n continue;\n }\n if (c === opening) {\n opening = null;\n }\n else if ((c === \"'\" || c === '\"') && !opening) {\n opening = c;\n }\n if (!args[i])\n args[i] = '';\n args[i] += c;\n }\n return args;\n}\n\nlet mixin;\nclass YargsParser {\n constructor(_mixin) {\n mixin = _mixin;\n }\n parse(argsInput, options) {\n const opts = Object.assign({\n alias: undefined,\n array: undefined,\n boolean: undefined,\n config: undefined,\n configObjects: undefined,\n configuration: undefined,\n coerce: undefined,\n count: undefined,\n default: undefined,\n envPrefix: undefined,\n narg: undefined,\n normalize: undefined,\n string: undefined,\n number: undefined,\n __: undefined,\n key: undefined\n }, options);\n const args = tokenizeArgString(argsInput);\n const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n const configuration = Object.assign({\n 'boolean-negation': true,\n 'camel-case-expansion': true,\n 'combine-arrays': false,\n 'dot-notation': true,\n 'duplicate-arguments-array': true,\n 'flatten-duplicate-arrays': true,\n 'greedy-arrays': true,\n 'halt-at-non-option': false,\n 'nargs-eats-options': false,\n 'negation-prefix': 'no-',\n 'parse-numbers': true,\n 'parse-positional-numbers': true,\n 'populate--': false,\n 'set-placeholder-key': false,\n 'short-option-groups': true,\n 'strip-aliased': false,\n 'strip-dashed': false,\n 'unknown-options-as-args': false\n }, opts.configuration);\n const defaults = Object.assign(Object.create(null), opts.default);\n const configObjects = opts.configObjects || [];\n const envPrefix = opts.envPrefix;\n const notFlagsOption = configuration['populate--'];\n const notFlagsArgv = notFlagsOption ? '--' : '_';\n const newAliases = Object.create(null);\n const defaulted = Object.create(null);\n const __ = opts.__ || mixin.format;\n const flags = {\n aliases: Object.create(null),\n arrays: Object.create(null),\n bools: Object.create(null),\n strings: Object.create(null),\n numbers: Object.create(null),\n counts: Object.create(null),\n normalize: Object.create(null),\n configs: Object.create(null),\n nargs: Object.create(null),\n coercions: Object.create(null),\n keys: []\n };\n const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n const key = typeof opt === 'object' ? opt.key : opt;\n const assignment = Object.keys(opt).map(function (key) {\n const arrayFlagKeys = {\n boolean: 'bools',\n string: 'strings',\n number: 'numbers'\n };\n return arrayFlagKeys[key];\n }).filter(Boolean).pop();\n if (assignment) {\n flags[assignment][key] = true;\n }\n flags.arrays[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n flags.numbers[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n flags.counts[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n flags.normalize[key] = true;\n flags.keys.push(key);\n });\n if (typeof opts.narg === 'object') {\n Object.entries(opts.narg).forEach(([key, value]) => {\n if (typeof value === 'number') {\n flags.nargs[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.coerce === 'object') {\n Object.entries(opts.coerce).forEach(([key, value]) => {\n if (typeof value === 'function') {\n flags.coercions[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.config !== 'undefined') {\n if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n [].concat(opts.config).filter(Boolean).forEach(function (key) {\n flags.configs[key] = true;\n });\n }\n else if (typeof opts.config === 'object') {\n Object.entries(opts.config).forEach(([key, value]) => {\n if (typeof value === 'boolean' || typeof value === 'function') {\n flags.configs[key] = value;\n }\n });\n }\n }\n extendAliases(opts.key, aliases, opts.default, flags.arrays);\n Object.keys(defaults).forEach(function (key) {\n (flags.aliases[key] || []).forEach(function (alias) {\n defaults[alias] = defaults[key];\n });\n });\n let error = null;\n checkConfiguration();\n let notFlags = [];\n const argv = Object.assign(Object.create(null), { _: [] });\n const argvReturn = {};\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n let broken;\n let key;\n let letters;\n let m;\n let next;\n let value;\n if (arg !== '--' && isUnknownOptionAsArg(arg)) {\n pushPositional(arg);\n }\n else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n if (checkAllAliases(m[1], flags.arrays)) {\n i = eatArray(i, m[1], args, m[2]);\n }\n else if (checkAllAliases(m[1], flags.nargs) !== false) {\n i = eatNargs(i, m[1], args, m[2]);\n }\n else {\n setArg(m[1], m[2]);\n }\n }\n }\n else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n m = arg.match(negatedBoolean);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n }\n }\n else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n m = arg.match(/^--?(.+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!next.match(/^-/) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-.\\..+=/)) {\n m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n setArg(m[1], m[2]);\n }\n }\n else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n next = args[i + 1];\n m = arg.match(/^-(.\\..+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (next !== undefined && !next.match(/^-/) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n letters = arg.slice(1, -1).split('');\n broken = false;\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (letters[j + 1] && letters[j + 1] === '=') {\n value = arg.slice(j + 3);\n key = letters[j];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args, value);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args, value);\n }\n else {\n setArg(key, value);\n }\n broken = true;\n break;\n }\n if (next === '-') {\n setArg(letters[j], next);\n continue;\n }\n if (/[A-Za-z]/.test(letters[j]) &&\n /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n checkAllAliases(next, flags.bools) === false) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], defaultValue(letters[j]));\n }\n }\n key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-[0-9]$/) &&\n arg.match(negative) &&\n checkAllAliases(arg.slice(1), flags.bools)) {\n key = arg.slice(1);\n setArg(key, defaultValue(key));\n }\n else if (arg === '--') {\n notFlags = args.slice(i + 1);\n break;\n }\n else if (configuration['halt-at-non-option']) {\n notFlags = args.slice(i);\n break;\n }\n else {\n pushPositional(arg);\n }\n }\n applyEnvVars(argv, true);\n applyEnvVars(argv, false);\n setConfig(argv);\n setConfigObjects();\n applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n applyCoercions(argv);\n if (configuration['set-placeholder-key'])\n setPlaceholderKeys(argv);\n Object.keys(flags.counts).forEach(function (key) {\n if (!hasKey(argv, key.split('.')))\n setArg(key, 0);\n });\n if (notFlagsOption && notFlags.length)\n argv[notFlagsArgv] = [];\n notFlags.forEach(function (key) {\n argv[notFlagsArgv].push(key);\n });\n if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n delete argv[key];\n });\n }\n if (configuration['strip-aliased']) {\n [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n if (configuration['camel-case-expansion'] && alias.includes('-')) {\n delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n }\n delete argv[alias];\n });\n }\n function pushPositional(arg) {\n const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n argv._.push(maybeCoercedNumber);\n }\n }\n function eatNargs(i, key, args, argAfterEqualSign) {\n let ii;\n let toEat = checkAllAliases(key, flags.nargs);\n toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n if (toEat === 0) {\n if (!isUndefined(argAfterEqualSign)) {\n error = Error(__('Argument unexpected for: %s', key));\n }\n setArg(key, defaultValue(key));\n return i;\n }\n let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n if (configuration['nargs-eats-options']) {\n if (args.length - (i + 1) + available < toEat) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n available = toEat;\n }\n else {\n for (ii = i + 1; ii < args.length; ii++) {\n if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n available++;\n else\n break;\n }\n if (available < toEat)\n error = Error(__('Not enough arguments following: %s', key));\n }\n let consumed = Math.min(available, toEat);\n if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n setArg(key, argAfterEqualSign);\n consumed--;\n }\n for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n setArg(key, args[ii]);\n }\n return (i + consumed);\n }\n function eatArray(i, key, args, argAfterEqualSign) {\n let argsToSet = [];\n let next = argAfterEqualSign || args[i + 1];\n const nargsCount = checkAllAliases(key, flags.nargs);\n if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n argsToSet.push(true);\n }\n else if (isUndefined(next) ||\n (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n if (defaults[key] !== undefined) {\n const defVal = defaults[key];\n argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n }\n }\n else {\n if (!isUndefined(argAfterEqualSign)) {\n argsToSet.push(processValue(key, argAfterEqualSign));\n }\n for (let ii = i + 1; ii < args.length; ii++) {\n if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n break;\n next = args[ii];\n if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n break;\n i = ii;\n argsToSet.push(processValue(key, next));\n }\n }\n if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n (isNaN(nargsCount) && argsToSet.length === 0))) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n setArg(key, argsToSet);\n return i;\n }\n function setArg(key, val) {\n if (/-/.test(key) && configuration['camel-case-expansion']) {\n const alias = key.split('.').map(function (prop) {\n return camelCase(prop);\n }).join('.');\n addNewAlias(key, alias);\n }\n const value = processValue(key, val);\n const splitKey = key.split('.');\n setKey(argv, splitKey, value);\n if (flags.aliases[key]) {\n flags.aliases[key].forEach(function (x) {\n const keyProperties = x.split('.');\n setKey(argv, keyProperties, value);\n });\n }\n if (splitKey.length > 1 && configuration['dot-notation']) {\n (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n let keyProperties = x.split('.');\n const a = [].concat(splitKey);\n a.shift();\n keyProperties = keyProperties.concat(a);\n if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n setKey(argv, keyProperties, value);\n }\n });\n }\n if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n const keys = [key].concat(flags.aliases[key] || []);\n keys.forEach(function (key) {\n Object.defineProperty(argvReturn, key, {\n enumerable: true,\n get() {\n return val;\n },\n set(value) {\n val = typeof value === 'string' ? mixin.normalize(value) : value;\n }\n });\n });\n }\n }\n function addNewAlias(key, alias) {\n if (!(flags.aliases[key] && flags.aliases[key].length)) {\n flags.aliases[key] = [alias];\n newAliases[alias] = true;\n }\n if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n addNewAlias(alias, key);\n }\n }\n function processValue(key, val) {\n if (typeof val === 'string' &&\n (val[0] === \"'\" || val[0] === '\"') &&\n val[val.length - 1] === val[0]) {\n val = val.substring(1, val.length - 1);\n }\n if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n if (typeof val === 'string')\n val = val === 'true';\n }\n let value = Array.isArray(val)\n ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n : maybeCoerceNumber(key, val);\n if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n value = increment();\n }\n if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n if (Array.isArray(val))\n value = val.map((val) => { return mixin.normalize(val); });\n else\n value = mixin.normalize(val);\n }\n return value;\n }\n function maybeCoerceNumber(key, value) {\n if (!configuration['parse-positional-numbers'] && key === '_')\n return value;\n if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n value = Number(value);\n }\n }\n return value;\n }\n function setConfig(argv) {\n const configLookup = Object.create(null);\n applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n Object.keys(flags.configs).forEach(function (configKey) {\n const configPath = argv[configKey] || configLookup[configKey];\n if (configPath) {\n try {\n let config = null;\n const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n const resolveConfig = flags.configs[configKey];\n if (typeof resolveConfig === 'function') {\n try {\n config = resolveConfig(resolvedConfigPath);\n }\n catch (e) {\n config = e;\n }\n if (config instanceof Error) {\n error = config;\n return;\n }\n }\n else {\n config = mixin.require(resolvedConfigPath);\n }\n setConfigObject(config);\n }\n catch (ex) {\n if (ex.name === 'PermissionDenied')\n error = ex;\n else if (argv[configKey])\n error = Error(__('Invalid JSON config file: %s', configPath));\n }\n }\n });\n }\n function setConfigObject(config, prev) {\n Object.keys(config).forEach(function (key) {\n const value = config[key];\n const fullKey = prev ? prev + '.' + key : key;\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n setConfigObject(value, fullKey);\n }\n else {\n if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n setArg(fullKey, value);\n }\n }\n });\n }\n function setConfigObjects() {\n if (typeof configObjects !== 'undefined') {\n configObjects.forEach(function (configObject) {\n setConfigObject(configObject);\n });\n }\n }\n function applyEnvVars(argv, configOnly) {\n if (typeof envPrefix === 'undefined')\n return;\n const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n const env = mixin.env();\n Object.keys(env).forEach(function (envVar) {\n if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n const keys = envVar.split('__').map(function (key, i) {\n if (i === 0) {\n key = key.substring(prefix.length);\n }\n return camelCase(key);\n });\n if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n setArg(keys.join('.'), env[envVar]);\n }\n }\n });\n }\n function applyCoercions(argv) {\n let coerce;\n const applied = new Set();\n Object.keys(argv).forEach(function (key) {\n if (!applied.has(key)) {\n coerce = checkAllAliases(key, flags.coercions);\n if (typeof coerce === 'function') {\n try {\n const value = maybeCoerceNumber(key, coerce(argv[key]));\n ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n applied.add(ali);\n argv[ali] = value;\n });\n }\n catch (err) {\n error = err;\n }\n }\n }\n });\n }\n function setPlaceholderKeys(argv) {\n flags.keys.forEach((key) => {\n if (~key.indexOf('.'))\n return;\n if (typeof argv[key] === 'undefined')\n argv[key] = undefined;\n });\n return argv;\n }\n function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(obj, key.split('.'))) {\n setKey(obj, key.split('.'), defaults[key]);\n if (canLog)\n defaulted[key] = true;\n (aliases[key] || []).forEach(function (x) {\n if (hasKey(obj, x.split('.')))\n return;\n setKey(obj, x.split('.'), defaults[key]);\n });\n }\n });\n }\n function hasKey(obj, keys) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n o = (o[key] || {});\n });\n const key = keys[keys.length - 1];\n if (typeof o !== 'object')\n return false;\n else\n return key in o;\n }\n function setKey(obj, keys, value) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n key = sanitizeKey(key);\n if (typeof o === 'object' && o[key] === undefined) {\n o[key] = {};\n }\n if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n if (Array.isArray(o[key])) {\n o[key].push({});\n }\n else {\n o[key] = [o[key], {}];\n }\n o = o[key][o[key].length - 1];\n }\n else {\n o = o[key];\n }\n });\n const key = sanitizeKey(keys[keys.length - 1]);\n const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n const isValueArray = Array.isArray(value);\n let duplicate = configuration['duplicate-arguments-array'];\n if (!duplicate && checkAllAliases(key, flags.nargs)) {\n duplicate = true;\n if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n o[key] = undefined;\n }\n }\n if (value === increment()) {\n o[key] = increment(o[key]);\n }\n else if (Array.isArray(o[key])) {\n if (duplicate && isTypeArray && isValueArray) {\n o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n }\n else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n o[key] = value;\n }\n else {\n o[key] = o[key].concat([value]);\n }\n }\n else if (o[key] === undefined && isTypeArray) {\n o[key] = isValueArray ? value : [value];\n }\n else if (duplicate && !(o[key] === undefined ||\n checkAllAliases(key, flags.counts) ||\n checkAllAliases(key, flags.bools))) {\n o[key] = [o[key], value];\n }\n else {\n o[key] = value;\n }\n }\n function extendAliases(...args) {\n args.forEach(function (obj) {\n Object.keys(obj || {}).forEach(function (key) {\n if (flags.aliases[key])\n return;\n flags.aliases[key] = [].concat(aliases[key] || []);\n flags.aliases[key].concat(key).forEach(function (x) {\n if (/-/.test(x) && configuration['camel-case-expansion']) {\n const c = camelCase(x);\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].concat(key).forEach(function (x) {\n if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n const c = decamelize(x, '-');\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].forEach(function (x) {\n flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n });\n }\n function checkAllAliases(key, flag) {\n const toCheck = [].concat(flags.aliases[key] || [], key);\n const keys = Object.keys(flag);\n const setAlias = toCheck.find(key => keys.includes(key));\n return setAlias ? flag[setAlias] : false;\n }\n function hasAnyFlag(key) {\n const flagsKeys = Object.keys(flags);\n const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n return toCheck.some(function (flag) {\n return Array.isArray(flag) ? flag.includes(key) : flag[key];\n });\n }\n function hasFlagsMatching(arg, ...patterns) {\n const toCheck = [].concat(...patterns);\n return toCheck.some(function (pattern) {\n const match = arg.match(pattern);\n return match && hasAnyFlag(match[1]);\n });\n }\n function hasAllShortFlags(arg) {\n if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n return false;\n }\n let hasAllFlags = true;\n let next;\n const letters = arg.slice(1).split('');\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (!hasAnyFlag(letters[j])) {\n hasAllFlags = false;\n break;\n }\n if ((letters[j + 1] && letters[j + 1] === '=') ||\n next === '-' ||\n (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n break;\n }\n }\n return hasAllFlags;\n }\n function isUnknownOptionAsArg(arg) {\n return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n }\n function isUnknownOption(arg) {\n if (arg.match(negative)) {\n return false;\n }\n if (hasAllShortFlags(arg)) {\n return false;\n }\n const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n const normalFlag = /^-+([^=]+?)$/;\n const flagEndingInHyphen = /^-+([^=]+?)-$/;\n const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n }\n function defaultValue(key) {\n if (!checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts) &&\n `${key}` in defaults) {\n return defaults[key];\n }\n else {\n return defaultForType(guessType(key));\n }\n }\n function defaultForType(type) {\n const def = {\n boolean: true,\n string: '',\n number: undefined,\n array: []\n };\n return def[type];\n }\n function guessType(key) {\n let type = 'boolean';\n if (checkAllAliases(key, flags.strings))\n type = 'string';\n else if (checkAllAliases(key, flags.numbers))\n type = 'number';\n else if (checkAllAliases(key, flags.bools))\n type = 'boolean';\n else if (checkAllAliases(key, flags.arrays))\n type = 'array';\n return type;\n }\n function isUndefined(num) {\n return num === undefined;\n }\n function checkConfiguration() {\n Object.keys(flags.counts).find(key => {\n if (checkAllAliases(key, flags.arrays)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n return true;\n }\n else if (checkAllAliases(key, flags.nargs)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n return true;\n }\n return false;\n });\n }\n return {\n aliases: Object.assign({}, flags.aliases),\n argv: Object.assign(argvReturn, argv),\n configuration: configuration,\n defaulted: Object.assign({}, defaulted),\n error: error,\n newAliases: Object.assign({}, newAliases)\n };\n }\n}\nfunction combineAliases(aliases) {\n const aliasArrays = [];\n const combined = Object.create(null);\n let change = true;\n Object.keys(aliases).forEach(function (key) {\n aliasArrays.push([].concat(aliases[key], key));\n });\n while (change) {\n change = false;\n for (let i = 0; i < aliasArrays.length; i++) {\n for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n const intersect = aliasArrays[i].filter(function (v) {\n return aliasArrays[ii].indexOf(v) !== -1;\n });\n if (intersect.length) {\n aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n aliasArrays.splice(ii, 1);\n change = true;\n break;\n }\n }\n }\n }\n aliasArrays.forEach(function (aliasArray) {\n aliasArray = aliasArray.filter(function (v, i, self) {\n return self.indexOf(v) === i;\n });\n const lastAlias = aliasArray.pop();\n if (lastAlias !== undefined && typeof lastAlias === 'string') {\n combined[lastAlias] = aliasArray;\n }\n });\n return combined;\n}\nfunction increment(orig) {\n return orig !== undefined ? orig + 1 : 1;\n}\nfunction sanitizeKey(key) {\n if (key === '__proto__')\n return '___proto___';\n return key;\n}\n\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n ? Number(process.env.YARGS_MIN_NODE_VERSION)\n : 10;\nif (process && process.version) {\n const major = Number(process.version.match(/v([^.]+)/)[1]);\n if (major < minNodeVersion) {\n throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n }\n}\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n cwd: process.cwd,\n env: () => {\n return env;\n },\n format: util.format,\n normalize: path.normalize,\n resolve: path.resolve,\n require: (path) => {\n if (typeof require !== 'undefined') {\n return require(path);\n }\n else if (path.match(/\\.json$/)) {\n return fs.readFileSync(path, 'utf8');\n }\n else {\n throw Error('only .json config files are supported in ESM');\n }\n }\n});\nconst yargsParser = function Parser(args, opts) {\n const result = parser.parse(args.slice(), opts);\n return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\n\nmodule.exports = yargsParser;\n", "'use strict';\n\nconst isObject = value => typeof value === 'object' && value !== null;\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value) &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tlet [newKey, newValue] = mapper(key, value, object);\n\n\t\tif (options.deep && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue) ?\n\t\t\t\tmapArray(newValue) :\n\t\t\t\tmapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nmodule.exports = (object, mapper, options) => {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn mapObject(object, mapper, options);\n};\n", "'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n", "'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn this._size + oldCacheSize;\n\t}\n}\n\nmodule.exports = QuickLRU;\n", "'use strict';\nconst mapObj = require('map-obj');\nconst camelCase = require('camelcase');\nconst QuickLru = require('quick-lru');\n\nconst has = (array, key) => array.some(x => {\n\tif (typeof x === 'string') {\n\t\treturn x === key;\n\t}\n\n\tx.lastIndex = 0;\n\treturn x.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100000});\n\n// Reproduces behavior from `map-obj`\nconst isObject = value =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst camelCaseConvert = (input, options) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\toptions = {\n\t\tdeep: false,\n\t\tpascalCase: false,\n\t\t...options\n\t};\n\n\tconst {exclude, pascalCase, stopPaths, deep} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObj(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst ret = camelCase(key, {pascalCase});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, ret);\n\t\t\t\t}\n\n\t\t\t\tkey = ret;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObj(input, makeMapper(undefined));\n};\n\nmodule.exports = (input, options) => {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => camelCaseConvert(input[key], options));\n\t}\n\n\treturn camelCaseConvert(input, options);\n};\n", "'use strict';\nmodule.exports = function (str, sep) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\tsep = typeof sep === 'undefined' ? '_' : sep;\n\n\treturn str\n\t\t.replace(/([a-z\\d])([A-Z])/g, '$1' + sep + '$2')\n\t\t.replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1' + sep + '$2')\n\t\t.toLowerCase();\n};\n", "'use strict';\nmodule.exports = function (obj, cb) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar res = cb(key, obj[key], obj);\n\t\tret[res[0]] = res[1];\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nvar mapObj = require('map-obj');\nvar decamelize = require('decamelize');\n\nmodule.exports = function (input, separator, options) {\n\tif (typeof separator !== 'string') {\n\t\toptions = separator;\n\t\tseparator = null;\n\t}\n\n\toptions = options || {};\n\tseparator = separator || options.separator;\n\tvar exclude = options.exclude || [];\n\n\treturn mapObj(input, function (key, val) {\n\t\tkey = exclude.indexOf(key) === -1 ? decamelize(key, separator) : key;\n\t\treturn [key, val];\n\t});\n};\n", "'use strict';\nmodule.exports = string => string.replace(/^[\\r\\n]+/, '').replace(/[\\r\\n]+$/, '');\nmodule.exports.start = string => string.replace(/^[\\r\\n]+/, '');\nmodule.exports.end = string => string.replace(/[\\r\\n]+$/, '');\n", "'use strict';\nmodule.exports = string => {\n\tconst match = string.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((r, a) => Math.min(r, a.length), Infinity);\n};\n", "'use strict';\nconst minIndent = require('min-indent');\n\nmodule.exports = string => {\n\tconst indent = minIndent(string);\n\n\tif (indent === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = new RegExp(`^[ \\\\t]{${indent}}`, 'gm');\n\n\treturn string.replace(regex, '');\n};\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\nconst stripIndent = require('strip-indent');\nconst indentString = require('indent-string');\n\nmodule.exports = (string, count = 0, options) => indentString(stripIndent(string), count, options);\n", "'use strict';\n\nconst pTry = (fn, ...arguments_) => new Promise(resolve => {\n\tresolve(fn(...arguments_));\n});\n\nmodule.exports = pTry;\n// TODO: remove this in the next major version\nmodule.exports.default = pTry;\n", "'use strict';\nconst pTry = require('p-try');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\treturn Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));\n\t}\n\n\tconst queue = [];\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.length > 0) {\n\t\t\tqueue.shift()();\n\t\t}\n\t};\n\n\tconst run = (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = pTry(fn, ...args);\n\n\t\tresolve(result);\n\n\t\tresult.then(next, next);\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tif (activeCount < concurrency) {\n\t\t\trun(fn, resolve, ...args);\n\t\t} else {\n\t\t\tqueue.push(run.bind(null, fn, resolve, ...args));\n\t\t}\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.length\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.length = 0;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\nmodule.exports.default = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n// TODO: Remove this for the next major release\nmodule.exports.default = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch (_) {\n\t\t}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n", "'use strict';\n\nvar util = require('util');\nvar isArrayish = require('is-arrayish');\n\nvar errorEx = function errorEx(name, properties) {\n\tif (!name || name.constructor !== String) {\n\t\tproperties = name || {};\n\t\tname = Error.name;\n\t}\n\n\tvar errorExError = function ErrorEXError(message) {\n\t\tif (!this) {\n\t\t\treturn new ErrorEXError(message);\n\t\t}\n\n\t\tmessage = message instanceof Error\n\t\t\t? message.message\n\t\t\t: (message || this.message);\n\n\t\tError.call(this, message);\n\t\tError.captureStackTrace(this, errorExError);\n\n\t\tthis.name = name;\n\n\t\tObject.defineProperty(this, 'message', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function () {\n\t\t\t\tvar newMessage = message.split(/\\r?\\n/g);\n\n\t\t\t\tfor (var key in properties) {\n\t\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\t\tif ('message' in modifier) {\n\t\t\t\t\t\tnewMessage = modifier.message(this[key], newMessage) || newMessage;\n\t\t\t\t\t\tif (!isArrayish(newMessage)) {\n\t\t\t\t\t\t\tnewMessage = [newMessage];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMessage.join('\\n');\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tmessage = v;\n\t\t\t}\n\t\t});\n\n\t\tvar overwrittenStack = null;\n\n\t\tvar stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n\t\tvar stackGetter = stackDescriptor.get;\n\t\tvar stackValue = stackDescriptor.value;\n\t\tdelete stackDescriptor.value;\n\t\tdelete stackDescriptor.writable;\n\n\t\tstackDescriptor.set = function (newstack) {\n\t\t\toverwrittenStack = newstack;\n\t\t};\n\n\t\tstackDescriptor.get = function () {\n\t\t\tvar stack = (overwrittenStack || ((stackGetter)\n\t\t\t\t? stackGetter.call(this)\n\t\t\t\t: stackValue)).split(/\\r?\\n+/g);\n\n\t\t\t// starting in Node 7, the stack builder caches the message.\n\t\t\t// just replace it.\n\t\t\tif (!overwrittenStack) {\n\t\t\t\tstack[0] = this.name + ': ' + this.message;\n\t\t\t}\n\n\t\t\tvar lineCount = 1;\n\t\t\tfor (var key in properties) {\n\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\tif ('line' in modifier) {\n\t\t\t\t\tvar line = modifier.line(this[key]);\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\tstack.splice(lineCount++, 0, ' ' + line);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ('stack' in modifier) {\n\t\t\t\t\tmodifier.stack(this[key], stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stack.join('\\n');\n\t\t};\n\n\t\tObject.defineProperty(this, 'stack', stackDescriptor);\n\t};\n\n\tif (Object.setPrototypeOf) {\n\t\tObject.setPrototypeOf(errorExError.prototype, Error.prototype);\n\t\tObject.setPrototypeOf(errorExError, Error);\n\t} else {\n\t\tutil.inherits(errorExError, Error);\n\t}\n\n\treturn errorExError;\n};\n\nerrorEx.append = function (str, def) {\n\treturn {\n\t\tmessage: function (v, message) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\tmessage[0] += ' ' + str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn message;\n\t\t}\n\t};\n};\n\nerrorEx.line = function (str, def) {\n\treturn {\n\t\tline: function (v) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\treturn str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t};\n};\n\nmodule.exports = errorEx;\n", "'use strict'\n\nconst hexify = char => {\n const h = char.charCodeAt(0).toString(16).toUpperCase()\n return '0x' + (h.length % 2 ? '0' : '') + h\n}\n\nconst parseError = (e, txt, context) => {\n if (!txt) {\n return {\n message: e.message + ' while parsing empty string',\n position: 0,\n }\n }\n const badToken = e.message.match(/^Unexpected token (.) .*position\\s+(\\d+)/i)\n const errIdx = badToken ? +badToken[2]\n : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1\n : null\n\n const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${\n JSON.stringify(badToken[1])\n } (${hexify(badToken[1])})`)\n : e.message\n\n if (errIdx !== null && errIdx !== undefined) {\n const start = errIdx <= context ? 0\n : errIdx - context\n\n const end = errIdx + context >= txt.length ? txt.length\n : errIdx + context\n\n const slice = (start === 0 ? '' : '...') +\n txt.slice(start, end) +\n (end === txt.length ? '' : '...')\n\n const near = txt === slice ? '' : 'near '\n\n return {\n message: msg + ` while parsing ${near}${JSON.stringify(slice)}`,\n position: errIdx,\n }\n } else {\n return {\n message: msg + ` while parsing '${txt.slice(0, context * 2)}'`,\n position: 0,\n }\n }\n}\n\nclass JSONParseError extends SyntaxError {\n constructor (er, txt, context, caller) {\n context = context || 20\n const metadata = parseError(er, txt, context)\n super(metadata.message)\n Object.assign(this, metadata)\n this.code = 'EJSONPARSE'\n this.systemError = er\n Error.captureStackTrace(this, caller || this.constructor)\n }\n get name () { return this.constructor.name }\n set name (n) {}\n get [Symbol.toStringTag] () { return this.constructor.name }\n}\n\nconst kIndent = Symbol.for('indent')\nconst kNewline = Symbol.for('newline')\n// only respect indentation if we got a line break, otherwise squash it\n// things other than objects and arrays aren't indented, so ignore those\n// Important: in both of these regexps, the $1 capture group is the newline\n// or undefined, and the $2 capture group is the indent, or undefined.\nconst formatRE = /^\\s*[{\\[]((?:\\r?\\n)+)([\\s\\t]*)/\nconst emptyRE = /^(?:\\{\\}|\\[\\])((?:\\r?\\n)+)?$/\n\nconst parseJson = (txt, reviver, context) => {\n const parseText = stripBOM(txt)\n context = context || 20\n try {\n // get the indentation so that we can save it back nicely\n // if the file starts with {\" then we have an indent of '', ie, none\n // otherwise, pick the indentation of the next line after the first \\n\n // If the pattern doesn't match, then it means no indentation.\n // JSON.stringify ignores symbols, so this is reasonably safe.\n // if the string is '{}' or '[]', then use the default 2-space indent.\n const [, newline = '\\n', indent = ' '] = parseText.match(emptyRE) ||\n parseText.match(formatRE) ||\n [, '', '']\n\n const result = JSON.parse(parseText, reviver)\n if (result && typeof result === 'object') {\n result[kNewline] = newline\n result[kIndent] = indent\n }\n return result\n } catch (e) {\n if (typeof txt !== 'string' && !Buffer.isBuffer(txt)) {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n throw Object.assign(new TypeError(\n `Cannot parse ${isEmptyArray ? 'an empty array' : String(txt)}`\n ), {\n code: 'EJSONPARSE',\n systemError: e,\n })\n }\n\n throw new JSONParseError(e, parseText, context, parseJson)\n }\n}\n\n// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n// because the buffer-to-string conversion in `fs.readFileSync()`\n// translates it to FEFF, the UTF-16 BOM.\nconst stripBOM = txt => String(txt).replace(/^\\uFEFF/, '')\n\nmodule.exports = parseJson\nparseJson.JSONParseError = JSONParseError\n\nparseJson.noExceptions = (txt, reviver) => {\n try {\n return JSON.parse(stripBOM(txt), reviver)\n } catch (e) {}\n}\n", "\"use strict\";\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.__esModule = true;\nexports[\"default\"] = LinesAndColumns;\n", "// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierStart = isIdentifierStart;\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08c7\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\u9ffc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7ca\\ua7f5-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf\\u1ac0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n\n return false;\n}\n\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nfunction isIdentifierName(name) {\n let isFirst = true;\n\n for (let _i = 0, _Array$from = Array.from(name); _i < _Array$from.length; _i++) {\n const char = _Array$from[_i];\n const cp = char.codePointAt(0);\n\n if (isFirst) {\n if (!isIdentifierStart(cp)) {\n return false;\n }\n\n isFirst = false;\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n\n return !isFirst;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isReservedWord = isReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isKeyword = isKeyword;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\n\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\n\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\n\nfunction isKeyword(word) {\n return keywords.has(word);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\n\nvar _identifier = require(\"./identifier\");\n\nvar _keyword = require(\"./keyword\");", "'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n", "'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nvar jsTokensNs = _interopRequireWildcard(require(\"js-tokens\"));\n\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\nfunction getDefs(chalk) {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsxIdentifier: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\n{\n const {\n matchToToken\n } = jsTokensNs;\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n const getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {\n return \"keyword\";\n }\n\n if (JSX_TAG.test(token.value) && (text[offset - 1] === \"<\" || text.substr(offset - 2, 2) == \" colorize(str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\nfunction shouldHighlight(options) {\n return _chalk.default.supportsColor || options.forceColor;\n}\n\nfunction getChalk(options) {\n let chalk = _chalk.default;\n\n if (options.forceColor) {\n chalk = new _chalk.default.constructor({\n enabled: true,\n level: 1\n });\n }\n\n return chalk;\n}\n\nfunction highlight(code, options = {}) {\n if (shouldHighlight(options)) {\n const chalk = getChalk(options);\n const defs = getDefs(chalk);\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = _default;\n\nvar _highlight = _interopRequireWildcard(require(\"@babel/highlight\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nlet deprecationWarningShown = false;\n\nfunction getDefs(chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\nfunction getMarkerLines(loc, source, opts) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return {\n start,\n end,\n markerLines\n };\n}\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);\n const chalk = (0, _highlight.getChalk)(opts);\n const defs = getDefs(chalk);\n\n const maybeHighlight = (chalkFn, string) => {\n return highlighted ? chalkFn(string) : string;\n };\n\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end).length;\n const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;\n let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers)].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n\n return [maybeHighlight(defs.marker, \">\"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\nfunction _default(rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}", "'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-even-better-errors');\nconst {default: LinesAndColumns} = require('lines-and-columns');\nconst {codeFrameColumns} = require('@babel/code-frame');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s'),\n\tcodeFrame: errorEx.append('\\n\\n%s\\n')\n});\n\nconst parseJson = (string, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(string, reviver);\n\t\t} catch (error) {\n\t\t\tfallback(string, reviver);\n\t\t\tthrow error;\n\t\t}\n\t} catch (error) {\n\t\terror.message = error.message.replace(/\\n/g, '');\n\t\tconst indexMatch = error.message.match(/in JSON at position (\\d+) while parsing/);\n\n\t\tconst jsonError = new JSONError(error);\n\t\tif (filename) {\n\t\t\tjsonError.fileName = filename;\n\t\t}\n\n\t\tif (indexMatch && indexMatch.length > 0) {\n\t\t\tconst lines = new LinesAndColumns(string);\n\t\t\tconst index = Number(indexMatch[1]);\n\t\t\tconst location = lines.locationForIndex(index);\n\n\t\t\tconst codeFrame = codeFrameColumns(\n\t\t\t\tstring,\n\t\t\t\t{start: {line: location.line + 1, column: location.column + 1}},\n\t\t\t\t{highlightCode: true}\n\t\t\t);\n\n\t\t\tjsonError.codeFrame = codeFrame;\n\t\t}\n\n\t\tthrow jsonError;\n\t}\n};\n\nparseJson.JSONError = JSONError;\n\nmodule.exports = parseJson;\n", "exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1]\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n })\n })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(re[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'))\n}\n", "'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n", "'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n", "'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n", "/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['-License', '']\n]\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n", "var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN \"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^[/]([^/]+)[/]((?!.*(\\/-\\/|\\/repository\\/archive\\.tar\\.gz\\?=.*|\\/repository\\/[^/]+\\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n var keys = Object.keys(source)\n var i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nvar cache = {}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!(key in cache)) {\n cache[key] = fromUrl(giturl, opts)\n }\n\n return cache[key]\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(new RegExp('^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)'))\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3])\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n // If we don't have url.URL, then sorry, this is just not fixable.\n // This affects Node <= 6.12.\n if (legacy.auth && typeof url.URL === 'function') {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n var authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = function () {\n // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n var origPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = function (_, stack) { return stack; };\n var stack = (new Error()).stack;\n Error.prepareStackTrace = origPrepareStackTrace;\n return stack[2].getFileName();\n};\n", "'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into three parts: [*, device, slash,\n// tail] windows-only\nvar splitDeviceRe =\n /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\n// Regex to split the tail part of the above into [*, dir, basename, ext]\nvar splitTailRe =\n /^([\\s\\S]*?)((?:\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))(?:[\\\\\\/]*)$/;\n\nvar win32 = {};\n\n// Function to split a filename into [root, dir, basename, ext]\nfunction win32SplitPath(filename) {\n // Separate device+slash from tail\n var result = splitDeviceRe.exec(filename),\n device = (result[1] || '') + (result[2] || ''),\n tail = result[3] || '';\n // Split the tail into dir, basename and extension\n var result2 = splitTailRe.exec(tail),\n dir = result2[1],\n basename = result2[2],\n ext = result2[3];\n return [device, dir, basename, ext];\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n", "var path = require('path');\nvar parse = path.parse || require('path-parse');\n\nvar getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {\n var prefix = '/';\n if ((/^([A-Za-z]:)/).test(absoluteStart)) {\n prefix = '';\n } else if ((/^\\\\\\\\/).test(absoluteStart)) {\n prefix = '\\\\\\\\';\n }\n\n var paths = [absoluteStart];\n var parsed = parse(absoluteStart);\n while (parsed.dir !== paths[paths.length - 1]) {\n paths.push(parsed.dir);\n parsed = parse(parsed.dir);\n }\n\n return paths.reduce(function (dirs, aPath) {\n return dirs.concat(modules.map(function (moduleDir) {\n return path.resolve(prefix, aPath, moduleDir);\n }));\n }, []);\n};\n\nmodule.exports = function nodeModulesPaths(start, opts, request) {\n var modules = opts && opts.moduleDirectory\n ? [].concat(opts.moduleDirectory)\n : ['node_modules'];\n\n if (opts && typeof opts.paths === 'function') {\n return opts.paths(\n request,\n start,\n function () { return getNodeModulesDirs(start, modules); },\n opts\n );\n }\n\n var dirs = getNodeModulesDirs(start, modules);\n return opts && opts.paths ? dirs.concat(opts.paths) : dirs;\n};\n", "module.exports = function (x, opts) {\n /**\n * This file is purposefully a passthrough. It's expected that third-party\n * environments will override it at runtime in order to inject special logic\n * into `resolve` (by manipulating the options). One such example is the PnP\n * code path in Yarn.\n */\n\n return opts || {};\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar has = require('has');\n\nfunction specifierIncluded(current, specifier) {\n\tvar nodeParts = current.split('.');\n\tvar parts = specifier.split(' ');\n\tvar op = parts.length > 1 ? parts[0] : '=';\n\tvar versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n\tfor (var i = 0; i < 3; ++i) {\n\t\tvar cur = parseInt(nodeParts[i] || 0, 10);\n\t\tvar ver = parseInt(versionParts[i] || 0, 10);\n\t\tif (cur === ver) {\n\t\t\tcontinue; // eslint-disable-line no-restricted-syntax, no-continue\n\t\t}\n\t\tif (op === '<') {\n\t\t\treturn cur < ver;\n\t\t}\n\t\tif (op === '>=') {\n\t\t\treturn cur >= ver;\n\t\t}\n\t\treturn false;\n\t}\n\treturn op === '>=';\n}\n\nfunction matchesRange(current, range) {\n\tvar specifiers = range.split(/ ?&& ?/);\n\tif (specifiers.length === 0) {\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < specifiers.length; ++i) {\n\t\tif (!specifierIncluded(current, specifiers[i])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction versionIncluded(nodeVersion, specifierValue) {\n\tif (typeof specifierValue === 'boolean') {\n\t\treturn specifierValue;\n\t}\n\n\tvar current = typeof nodeVersion === 'undefined'\n\t\t? process.versions && process.versions.node && process.versions.node\n\t\t: nodeVersion;\n\n\tif (typeof current !== 'string') {\n\t\tthrow new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required');\n\t}\n\n\tif (specifierValue && typeof specifierValue === 'object') {\n\t\tfor (var i = 0; i < specifierValue.length; ++i) {\n\t\t\tif (matchesRange(current, specifierValue[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\treturn matchesRange(current, specifierValue);\n}\n\nvar data = require('./core.json');\n\nmodule.exports = function isCore(x, nodeVersion) {\n\treturn has(data, x) && versionIncluded(nodeVersion, data[x]);\n};\n", "var fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\nvar isCore = require('is-core-module');\n\nvar realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;\n\nvar defaultIsFile = function isFile(file, cb) {\n fs.stat(file, function (err, stat) {\n if (!err) {\n return cb(null, stat.isFile() || stat.isFIFO());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultIsDir = function isDirectory(dir, cb) {\n fs.stat(dir, function (err, stat) {\n if (!err) {\n return cb(null, stat.isDirectory());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultRealpath = function realpath(x, cb) {\n realpathFS(x, function (realpathErr, realPath) {\n if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);\n else cb(null, realpathErr ? x : realPath);\n });\n};\n\nvar maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {\n if (opts && opts.preserveSymlinks === false) {\n realpath(x, cb);\n } else {\n cb(null, x);\n }\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolve(x, options, callback) {\n var cb = callback;\n var opts = options;\n if (typeof options === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof x !== 'string') {\n var err = new TypeError('Path must be a string.');\n return process.nextTick(function () {\n cb(err);\n });\n }\n\n opts = normalizeOptions(x, opts);\n\n var isFile = opts.isFile || defaultIsFile;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var readFile = opts.readFile || fs.readFile;\n var realpath = opts.realpath || defaultRealpath;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = path.resolve(basedir);\n\n maybeRealpath(\n realpath,\n absoluteStart,\n opts,\n function (err, realStart) {\n if (err) cb(err);\n else init(realStart);\n }\n );\n\n var res;\n function init(basedir) {\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n res = path.resolve(basedir, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n if ((/\\/$/).test(x) && res === basedir) {\n loadAsDirectory(res, opts.package, onfile);\n } else loadAsFile(res, opts.package, onfile);\n } else if (includeCoreModules && isCore(x)) {\n return cb(null, x);\n } else loadNodeModules(x, basedir, function (err, n, pkg) {\n if (err) cb(err);\n else if (n) {\n return maybeRealpath(realpath, n, opts, function (err, realN) {\n if (err) {\n cb(err);\n } else {\n cb(null, realN, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function onfile(err, m, pkg) {\n if (err) cb(err);\n else if (m) cb(null, m, pkg);\n else loadAsDirectory(res, function (err, d, pkg) {\n if (err) cb(err);\n else if (d) {\n maybeRealpath(realpath, d, opts, function (err, realD) {\n if (err) {\n cb(err);\n } else {\n cb(null, realD, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function loadAsFile(x, thePackage, callback) {\n var loadAsFilePackage = thePackage;\n var cb = callback;\n if (typeof loadAsFilePackage === 'function') {\n cb = loadAsFilePackage;\n loadAsFilePackage = undefined;\n }\n\n var exts = [''].concat(extensions);\n load(exts, x, loadAsFilePackage);\n\n function load(exts, x, loadPackage) {\n if (exts.length === 0) return cb(null, undefined, loadPackage);\n var file = x + exts[0];\n\n var pkg = loadPackage;\n if (pkg) onpkg(null, pkg);\n else loadpkg(path.dirname(file), onpkg);\n\n function onpkg(err, pkg_, dir) {\n pkg = pkg_;\n if (err) return cb(err);\n if (dir && pkg && opts.pathFilter) {\n var rfile = path.relative(dir, file);\n var rel = rfile.slice(0, rfile.length - exts[0].length);\n var r = opts.pathFilter(pkg, x, rel);\n if (r) return load(\n [''].concat(extensions.slice()),\n path.resolve(dir, r),\n pkg\n );\n }\n isFile(file, onex);\n }\n function onex(err, ex) {\n if (err) return cb(err);\n if (ex) return cb(null, file, pkg);\n load(exts.slice(1), x, pkg);\n }\n }\n }\n\n function loadpkg(dir, cb) {\n if (dir === '' || dir === '/') return cb(null);\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return cb(null);\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return cb(null);\n\n maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return loadpkg(path.dirname(dir), cb);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n // on err, ex is false\n if (!ex) return loadpkg(path.dirname(dir), cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) cb(err);\n try { var pkg = JSON.parse(body); } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n cb(null, pkg, dir);\n });\n });\n });\n }\n\n function loadAsDirectory(x, loadAsDirectoryPackage, callback) {\n var cb = callback;\n var fpkg = loadAsDirectoryPackage;\n if (typeof fpkg === 'function') {\n cb = fpkg;\n fpkg = opts.package;\n }\n\n maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return cb(unwrapErr);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n if (err) return cb(err);\n if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) return cb(err);\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n return cb(mainError);\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);\n\n var dir = path.resolve(x, pkg.main);\n loadAsDirectory(dir, pkg, function (err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n loadAsFile(path.join(x, 'index'), pkg, cb);\n });\n });\n return;\n }\n\n loadAsFile(path.join(x, '/index'), pkg, cb);\n });\n });\n });\n }\n\n function processDirs(cb, dirs) {\n if (dirs.length === 0) return cb(null, undefined);\n var dir = dirs[0];\n\n isDirectory(path.dirname(dir), isdir);\n\n function isdir(err, isdir) {\n if (err) return cb(err);\n if (!isdir) return processDirs(cb, dirs.slice(1));\n loadAsFile(dir, opts.package, onfile);\n }\n\n function onfile(err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n loadAsDirectory(dir, opts.package, ondir);\n }\n\n function ondir(err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n processDirs(cb, dirs.slice(1));\n }\n }\n function loadNodeModules(x, start, cb) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n processDirs(\n cb,\n packageIterator ? packageIterator(x, start, thunk, opts) : thunk()\n );\n }\n};\n", "var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];\n\nfunction specifierIncluded(specifier) {\n var parts = specifier.split(' ');\n var op = parts.length > 1 ? parts[0] : '=';\n var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n for (var i = 0; i < 3; ++i) {\n var cur = parseInt(current[i] || 0, 10);\n var ver = parseInt(versionParts[i] || 0, 10);\n if (cur === ver) {\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n }\n if (op === '<') {\n return cur < ver;\n } else if (op === '>=') {\n return cur >= ver;\n } else {\n return false;\n }\n }\n return op === '>=';\n}\n\nfunction matchesRange(range) {\n var specifiers = range.split(/ ?&& ?/);\n if (specifiers.length === 0) { return false; }\n for (var i = 0; i < specifiers.length; ++i) {\n if (!specifierIncluded(specifiers[i])) { return false; }\n }\n return true;\n}\n\nfunction versionIncluded(specifierValue) {\n if (typeof specifierValue === 'boolean') { return specifierValue; }\n if (specifierValue && typeof specifierValue === 'object') {\n for (var i = 0; i < specifierValue.length; ++i) {\n if (matchesRange(specifierValue[i])) { return true; }\n }\n return false;\n }\n return matchesRange(specifierValue);\n}\n\nvar data = require('./core.json');\n\nvar core = {};\nfor (var mod in data) { // eslint-disable-line no-restricted-syntax\n if (Object.prototype.hasOwnProperty.call(data, mod)) {\n core[mod] = versionIncluded(data[mod]);\n }\n}\nmodule.exports = core;\n", "var isCoreModule = require('is-core-module');\n\nmodule.exports = function isCore(x) {\n return isCoreModule(x);\n};\n", "var isCore = require('is-core-module');\nvar fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\n\nvar realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;\n\nvar defaultIsFile = function isFile(file) {\n try {\n var stat = fs.statSync(file);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isFile() || stat.isFIFO();\n};\n\nvar defaultIsDir = function isDirectory(dir) {\n try {\n var stat = fs.statSync(dir);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isDirectory();\n};\n\nvar defaultRealpathSync = function realpathSync(x) {\n try {\n return realpathFS(x);\n } catch (realpathErr) {\n if (realpathErr.code !== 'ENOENT') {\n throw realpathErr;\n }\n }\n return x;\n};\n\nvar maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {\n if (opts && opts.preserveSymlinks === false) {\n return realpathSync(x);\n }\n return x;\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolveSync(x, options) {\n if (typeof x !== 'string') {\n throw new TypeError('Path must be a string.');\n }\n var opts = normalizeOptions(x, options);\n\n var isFile = opts.isFile || defaultIsFile;\n var readFileSync = opts.readFileSync || fs.readFileSync;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var realpathSync = opts.realpathSync || defaultRealpathSync;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);\n\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n var res = path.resolve(absoluteStart, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n var m = loadAsFileSync(res) || loadAsDirectorySync(res);\n if (m) return maybeRealpathSync(realpathSync, m, opts);\n } else if (includeCoreModules && isCore(x)) {\n return x;\n } else {\n var n = loadNodeModulesSync(x, absoluteStart);\n if (n) return maybeRealpathSync(realpathSync, n, opts);\n }\n\n var err = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n\n function loadAsFileSync(x) {\n var pkg = loadpkg(path.dirname(x));\n\n if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {\n var rfile = path.relative(pkg.dir, x);\n var r = opts.pathFilter(pkg.pkg, x, rfile);\n if (r) {\n x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign\n }\n }\n\n if (isFile(x)) {\n return x;\n }\n\n for (var i = 0; i < extensions.length; i++) {\n var file = x + extensions[i];\n if (isFile(file)) {\n return file;\n }\n }\n }\n\n function loadpkg(dir) {\n if (dir === '' || dir === '/') return;\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return;\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return;\n\n var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');\n\n if (!isFile(pkgfile)) {\n return loadpkg(path.dirname(dir));\n }\n\n var body = readFileSync(pkgfile);\n\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment\n }\n\n return { pkg: pkg, dir: dir };\n }\n\n function loadAsDirectorySync(x) {\n var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');\n if (isFile(pkgfile)) {\n try {\n var body = readFileSync(pkgfile, 'UTF8');\n var pkg = JSON.parse(body);\n } catch (e) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n throw mainError;\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n try {\n var m = loadAsFileSync(path.resolve(x, pkg.main));\n if (m) return m;\n var n = loadAsDirectorySync(path.resolve(x, pkg.main));\n if (n) return n;\n } catch (e) {}\n }\n }\n\n return loadAsFileSync(path.join(x, '/index'));\n }\n\n function loadNodeModulesSync(x, start) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();\n\n for (var i = 0; i < dirs.length; i++) {\n var dir = dirs[i];\n if (isDirectory(path.dirname(dir))) {\n var m = loadAsFileSync(dir);\n if (m) return m;\n var n = loadAsDirectorySync(dir);\n if (n) return n;\n }\n }\n }\n};\n", "var async = require('./lib/async');\nasync.core = require('./lib/core');\nasync.isCore = require('./lib/is-core');\nasync.sync = require('./lib/sync');\n\nmodule.exports = async;\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst parseJson = require('parse-json');\n\nconst readFileAsync = promisify(fs.readFile);\n\nmodule.exports = async options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(await readFileAsync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n\nmodule.exports.sync = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(fs.readFileSync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n", "'use strict';\nconst path = require('path');\nconst findUp = require('find-up');\nconst readPkg = require('read-pkg');\n\nmodule.exports = async options => {\n\tconst filePath = await findUp('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: await readPkg({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n\nmodule.exports.sync = options => {\n\tconst filePath = findUp.sync('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: readPkg.sync({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n", "'use strict';\nconst util = require('util');\n\nlet installed = false;\n\nconst hardRejection = (log = console.error) => {\n\tif (installed) {\n\t\treturn;\n\t}\n\n\tinstalled = true;\n\n\tprocess.on('unhandledRejection', error => {\n\t\tif (!(error instanceof Error)) {\n\t\t\terror = new Error(`Promise rejected with value: ${util.inspect(error)}`);\n\t\t}\n\n\t\tlog(error.stack);\n\t\tprocess.exit(1);\n\t});\n};\n\nmodule.exports = hardRejection;\n// TODO: Remove this for the next major release\nmodule.exports.default = hardRejection;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const {MAX_LENGTH} = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(version, options).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst {re, t} = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null)\n return null\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin)))\n minver = setMin\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst {ANY} = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let min = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!min)\n min = version\n } else {\n if (prev) {\n set.push([min, prev])\n }\n prev = null\n min = null\n }\n }\n if (min)\n set.push([min, null])\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max)\n ranges.push(min)\n else if (!max && min === v[0])\n ranges.push('*')\n else if (!max)\n ranges.push(`>=${min}`)\n else if (min === v[0])\n ranges.push(`<=${max}`)\n else\n ranges.push(`${min} - ${max}`)\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst { ANY } = require('../classes/comparator.js')\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else return false\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If any C is a = range, and GT or LT are set, return false\n// - Else return true\n\nconst subset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub)\n continue OUTER\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull)\n return false\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n if (sub.length === 1 && sub[0].semver === ANY)\n return dom.length === 1 && dom[0].semver === ANY\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=')\n gt = higherGT(gt, c, options)\n else if (c.operator === '<' || c.operator === '<=')\n lt = lowerLT(lt, c, options)\n else\n eqSet.add(c.semver)\n }\n\n if (eqSet.size > 1)\n return null\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0)\n return null\n else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))\n return null\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options))\n return null\n\n if (lt && !satisfies(eq, String(lt), options))\n return null\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options))\n return false\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt)\n return false\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))\n return false\n }\n if (lt) {\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt)\n return false\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))\n return false\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0)\n return false\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0)\n return false\n\n if (lt && hasDomGT && !gt && gtltComp !== 0)\n return false\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nmodule.exports = {\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,\n SemVer: require('./classes/semver'),\n compareIdentifiers: require('./internal/identifiers').compareIdentifiers,\n rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,\n parse: require('./functions/parse'),\n valid: require('./functions/valid'),\n clean: require('./functions/clean'),\n inc: require('./functions/inc'),\n diff: require('./functions/diff'),\n major: require('./functions/major'),\n minor: require('./functions/minor'),\n patch: require('./functions/patch'),\n prerelease: require('./functions/prerelease'),\n compare: require('./functions/compare'),\n rcompare: require('./functions/rcompare'),\n compareLoose: require('./functions/compare-loose'),\n compareBuild: require('./functions/compare-build'),\n sort: require('./functions/sort'),\n rsort: require('./functions/rsort'),\n gt: require('./functions/gt'),\n lt: require('./functions/lt'),\n eq: require('./functions/eq'),\n neq: require('./functions/neq'),\n gte: require('./functions/gte'),\n lte: require('./functions/lte'),\n cmp: require('./functions/cmp'),\n coerce: require('./functions/coerce'),\n Comparator: require('./classes/comparator'),\n Range: require('./classes/range'),\n satisfies: require('./functions/satisfies'),\n toComparators: require('./ranges/to-comparators'),\n maxSatisfying: require('./ranges/max-satisfying'),\n minSatisfying: require('./ranges/min-satisfying'),\n minVersion: require('./ranges/min-version'),\n validRange: require('./ranges/valid'),\n outside: require('./ranges/outside'),\n gtr: require('./ranges/gtr'),\n ltr: require('./ranges/ltr'),\n intersects: require('./ranges/intersects'),\n simplifyRange: require('./ranges/simplify'),\n subset: require('./ranges/subset'),\n}\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^\\/([^/]+)\\/((?!.*(\\/-\\/|\\/repository(\\/[^/]+)?\\/archive\\.tar\\.gz)).*?)(?:\\.git|\\/)?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n const keys = Object.keys(source)\n let i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else if (key !== 'domain') {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\nvar LRU = require('lru-cache')\nvar cache = new LRU({max: 1000})\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n cache.set(key, fromUrl(giturl, opts))\n }\n\n return cache.get(key)\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\\/)?([^#]+)/)\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3].replace(/\\.git$/, ''))\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n if (legacy.auth) {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n const authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst path = require('path');\nconst buildParserOptions = require('minimist-options');\nconst parseArguments = require('yargs-parser');\nconst camelCaseKeys = require('camelcase-keys');\nconst decamelize = require('decamelize');\nconst decamelizeKeys = require('decamelize-keys');\nconst trimNewlines = require('trim-newlines');\nconst redent = require('redent');\nconst readPkgUp = require('read-pkg-up');\nconst hardRejection = require('hard-rejection');\nconst normalizePackageData = require('normalize-package-data');\n\n// Prevent caching of this module so module.parent is always accurate\ndelete require.cache[__filename];\nconst parentDir = path.dirname(module.parent && module.parent.filename ? module.parent.filename : '.');\n\nconst isFlagMissing = (flagName, definedFlags, receivedFlags, input) => {\n\tconst flag = definedFlags[flagName];\n\tlet isFlagRequired = true;\n\n\tif (typeof flag.isRequired === 'function') {\n\t\tisFlagRequired = flag.isRequired(receivedFlags, input);\n\t\tif (typeof isFlagRequired !== 'boolean') {\n\t\t\tthrow new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof isFlagRequired} was returned.`);\n\t\t}\n\t}\n\n\tif (typeof receivedFlags[flagName] === 'undefined') {\n\t\treturn isFlagRequired;\n\t}\n\n\treturn flag.isMultiple && receivedFlags[flagName].length === 0;\n};\n\nconst getMissingRequiredFlags = (flags, receivedFlags, input) => {\n\tconst missingRequiredFlags = [];\n\tif (typeof flags === 'undefined') {\n\t\treturn [];\n\t}\n\n\tfor (const flagName of Object.keys(flags)) {\n\t\tif (flags[flagName].isRequired && isFlagMissing(flagName, flags, receivedFlags, input)) {\n\t\t\tmissingRequiredFlags.push({key: flagName, ...flags[flagName]});\n\t\t}\n\t}\n\n\treturn missingRequiredFlags;\n};\n\nconst reportMissingRequiredFlags = missingRequiredFlags => {\n\tconsole.error(`Missing required flag${missingRequiredFlags.length > 1 ? 's' : ''}`);\n\tfor (const flag of missingRequiredFlags) {\n\t\tconsole.error(`\\t--${decamelize(flag.key, '-')}${flag.alias ? `, -${flag.alias}` : ''}`);\n\t}\n};\n\nconst validateOptions = ({flags}) => {\n\tconst invalidFlags = Object.keys(flags).filter(flagKey => flagKey.includes('-') && flagKey !== '--');\n\tif (invalidFlags.length > 0) {\n\t\tthrow new Error(`Flag keys may not contain '-': ${invalidFlags.join(', ')}`);\n\t}\n};\n\nconst reportUnknownFlags = unknownFlags => {\n\tconsole.error([\n\t\t`Unknown flag${unknownFlags.length > 1 ? 's' : ''}`,\n\t\t...unknownFlags\n\t].join('\\n'));\n};\n\nconst buildParserFlags = ({flags, booleanDefault}) => {\n\tconst parserFlags = {};\n\n\tfor (const [flagKey, flagValue] of Object.entries(flags)) {\n\t\tconst flag = {...flagValue};\n\n\t\tif (\n\t\t\ttypeof booleanDefault !== 'undefined' &&\n\t\t\tflag.type === 'boolean' &&\n\t\t\t!Object.prototype.hasOwnProperty.call(flag, 'default')\n\t\t) {\n\t\t\tflag.default = flag.isMultiple ? [booleanDefault] : booleanDefault;\n\t\t}\n\n\t\tif (flag.isMultiple) {\n\t\t\tflag.type = flag.type ? `${flag.type}-array` : 'array';\n\t\t\tflag.default = flag.default || [];\n\t\t\tdelete flag.isMultiple;\n\t\t}\n\n\t\tparserFlags[flagKey] = flag;\n\t}\n\n\treturn parserFlags;\n};\n\nconst validateFlags = (flags, options) => {\n\tfor (const [flagKey, flagValue] of Object.entries(options.flags)) {\n\t\tif (flagKey !== '--' && !flagValue.isMultiple && Array.isArray(flags[flagKey])) {\n\t\t\tthrow new Error(`The flag --${flagKey} can only be set once.`);\n\t\t}\n\t}\n};\n\nconst meow = (helpText, options) => {\n\tif (typeof helpText !== 'string') {\n\t\toptions = helpText;\n\t\thelpText = '';\n\t}\n\n\tconst foundPkg = readPkgUp.sync({\n\t\tcwd: parentDir,\n\t\tnormalize: false\n\t});\n\n\toptions = {\n\t\tpkg: foundPkg ? foundPkg.packageJson : {},\n\t\targv: process.argv.slice(2),\n\t\tflags: {},\n\t\tinferType: false,\n\t\tinput: 'string',\n\t\thelp: helpText,\n\t\tautoHelp: true,\n\t\tautoVersion: true,\n\t\tbooleanDefault: false,\n\t\thardRejection: true,\n\t\tallowUnknownFlags: true,\n\t\t...options\n\t};\n\n\tif (options.hardRejection) {\n\t\thardRejection();\n\t}\n\n\tvalidateOptions(options);\n\tlet parserOptions = {\n\t\targuments: options.input,\n\t\t...buildParserFlags(options)\n\t};\n\n\tparserOptions = decamelizeKeys(parserOptions, '-', {exclude: ['stopEarly', '--']});\n\n\tif (options.inferType) {\n\t\tdelete parserOptions.arguments;\n\t}\n\n\tparserOptions = buildParserOptions(parserOptions);\n\n\tparserOptions.configuration = {\n\t\t...parserOptions.configuration,\n\t\t'greedy-arrays': false\n\t};\n\n\tif (parserOptions['--']) {\n\t\tparserOptions.configuration['populate--'] = true;\n\t}\n\n\tif (!options.allowUnknownFlags) {\n\t\t// Collect unknown options in `argv._` to be checked later.\n\t\tparserOptions.configuration['unknown-options-as-args'] = true;\n\t}\n\n\tconst {pkg} = options;\n\tconst argv = parseArguments(options.argv, parserOptions);\n\tlet help = redent(trimNewlines((options.help || '').replace(/\\t+\\n*$/, '')), 2);\n\n\tnormalizePackageData(pkg);\n\n\tprocess.title = pkg.bin ? Object.keys(pkg.bin)[0] : pkg.name;\n\n\tlet {description} = options;\n\tif (!description && description !== false) {\n\t\t({description} = pkg);\n\t}\n\n\thelp = (description ? `\\n ${description}\\n` : '') + (help ? `\\n${help}\\n` : '\\n');\n\n\tconst showHelp = code => {\n\t\tconsole.log(help);\n\t\tprocess.exit(typeof code === 'number' ? code : 2);\n\t};\n\n\tconst showVersion = () => {\n\t\tconsole.log(typeof options.version === 'string' ? options.version : pkg.version);\n\t\tprocess.exit(0);\n\t};\n\n\tif (argv._.length === 0 && options.argv.length === 1) {\n\t\tif (argv.version === true && options.autoVersion) {\n\t\t\tshowVersion();\n\t\t}\n\n\t\tif (argv.help === true && options.autoHelp) {\n\t\t\tshowHelp(0);\n\t\t}\n\t}\n\n\tconst input = argv._;\n\tdelete argv._;\n\n\tif (!options.allowUnknownFlags) {\n\t\tconst unknownFlags = input.filter(item => typeof item === 'string' && item.startsWith('-'));\n\t\tif (unknownFlags.length > 0) {\n\t\t\treportUnknownFlags(unknownFlags);\n\t\t\tprocess.exit(2);\n\t\t}\n\t}\n\n\tconst flags = camelCaseKeys(argv, {exclude: ['--', /^\\w$/]});\n\tconst unnormalizedFlags = {...flags};\n\n\tvalidateFlags(flags, options);\n\n\tfor (const flagValue of Object.values(options.flags)) {\n\t\tdelete flags[flagValue.alias];\n\t}\n\n\tconst missingRequiredFlags = getMissingRequiredFlags(options.flags, flags, input);\n\tif (missingRequiredFlags.length > 0) {\n\t\treportMissingRequiredFlags(missingRequiredFlags);\n\t\tprocess.exit(2);\n\t}\n\n\treturn {\n\t\tinput,\n\t\tflags,\n\t\tunnormalizedFlags,\n\t\tpkg,\n\t\thelp,\n\t\tshowHelp,\n\t\tshowVersion\n\t};\n};\n\nmodule.exports = meow;\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\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", "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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// patch from https://github.com/nodejs/node/blob/v7.2.1/lib/_http_agent.js\n\n'use strict';\n\nconst net = require('net');\nconst util = require('util');\nconst EventEmitter = require('events');\nconst debug = util.debuglog('http');\n\n// New Agent code.\n\n// The largest departure from the previous implementation is that\n// an Agent instance holds connections for a variable number of host:ports.\n// Surprisingly, this is still API compatible as far as third parties are\n// concerned. The only code that really notices the difference is the\n// request object.\n\n// Another departure is that all code related to HTTP parsing is in\n// ClientRequest.onSocket(). The Agent is now *strictly*\n// concerned with managing a connection pool.\n\nfunction Agent(options) {\n if (!(this instanceof Agent))\n return new Agent(options);\n\n EventEmitter.call(this);\n\n var self = this;\n\n self.defaultPort = 80;\n self.protocol = 'http:';\n\n self.options = util._extend({}, options);\n\n // don't confuse net and make it think that we're connecting to a pipe\n self.options.path = null;\n self.requests = {};\n self.sockets = {};\n self.freeSockets = {};\n self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;\n self.keepAlive = self.options.keepAlive || false;\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;\n self.maxFreeSockets = self.options.maxFreeSockets || 256;\n\n // [patch start]\n // free keep-alive socket timeout. By default free socket do not have a timeout.\n self.freeSocketKeepAliveTimeout = self.options.freeSocketKeepAliveTimeout || 0;\n // working socket timeout. By default working socket do not have a timeout.\n self.timeout = self.options.timeout || 0;\n // the socket active time to live, even if it's in use\n this.socketActiveTTL = this.options.socketActiveTTL || null;\n // [patch end]\n\n self.on('free', function(socket, options) {\n var name = self.getName(options);\n debug('agent.on(free)', name);\n\n if (socket.writable &&\n self.requests[name] && self.requests[name].length) {\n // [patch start]\n debug('continue handle next request');\n // [patch end]\n self.requests[name].shift().onSocket(socket);\n if (self.requests[name].length === 0) {\n // don't leak\n delete self.requests[name];\n }\n } else {\n // If there are no pending requests, then put it in\n // the freeSockets pool, but only if we're allowed to do so.\n var req = socket._httpMessage;\n if (req &&\n req.shouldKeepAlive &&\n socket.writable &&\n self.keepAlive) {\n var freeSockets = self.freeSockets[name];\n var freeLen = freeSockets ? freeSockets.length : 0;\n var count = freeLen;\n if (self.sockets[name])\n count += self.sockets[name].length;\n\n if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {\n socket.destroy();\n } else {\n freeSockets = freeSockets || [];\n self.freeSockets[name] = freeSockets;\n socket.setKeepAlive(true, self.keepAliveMsecs);\n socket.unref();\n socket._httpMessage = null;\n self.removeSocket(socket, options);\n freeSockets.push(socket);\n\n // [patch start]\n // Add a default error handler to avoid Unhandled 'error' event throw on idle socket\n // https://github.com/node-modules/agentkeepalive/issues/25\n // https://github.com/nodejs/node/pull/4482 (fixed in >= 4.4.0 and >= 5.4.0)\n if (socket.listeners('error').length === 0) {\n socket.once('error', freeSocketErrorListener);\n }\n // set free keepalive timer\n // try to use socket custom freeSocketKeepAliveTimeout first\n const freeSocketKeepAliveTimeout = socket.freeSocketKeepAliveTimeout || self.freeSocketKeepAliveTimeout;\n socket.setTimeout(freeSocketKeepAliveTimeout);\n debug(`push to free socket queue and wait for ${freeSocketKeepAliveTimeout}ms`);\n // [patch end]\n }\n } else {\n socket.destroy();\n }\n }\n });\n}\n\nutil.inherits(Agent, EventEmitter);\nexports.Agent = Agent;\n\n// [patch start]\nfunction freeSocketErrorListener(err) {\n var socket = this;\n debug('SOCKET ERROR on FREE socket:', err.message, err.stack);\n socket.destroy();\n socket.emit('agentRemove');\n}\n// [patch end]\n\nAgent.defaultMaxSockets = Infinity;\n\nAgent.prototype.createConnection = net.createConnection;\n\n// Get the key for a given set of request options\nAgent.prototype.getName = function getName(options) {\n var name = options.host || 'localhost';\n\n name += ':';\n if (options.port)\n name += options.port;\n\n name += ':';\n if (options.localAddress)\n name += options.localAddress;\n\n // Pacify parallel/test-http-agent-getname by only appending\n // the ':' when options.family is set.\n if (options.family === 4 || options.family === 6)\n name += ':' + options.family;\n\n return name;\n};\n\n// [patch start]\nfunction handleSocketCreation(req) {\n return function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n req.onSocket(newSocket);\n }\n}\n// [patch end]\n\nAgent.prototype.addRequest = function addRequest(req, options, port/*legacy*/,\n localAddress/*legacy*/) {\n // Legacy API: addRequest(req, host, port, localAddress)\n if (typeof options === 'string') {\n options = {\n host: options,\n port,\n localAddress\n };\n }\n\n options = util._extend({}, options);\n options = util._extend(options, this.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = this.getName(options);\n if (!this.sockets[name]) {\n this.sockets[name] = [];\n }\n\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name].length;\n\n if (freeLen) {\n // we have a free socket, so use that.\n var socket = this.freeSockets[name].shift();\n debug('have free socket');\n\n // [patch start]\n // remove free socket error event handler\n socket.removeListener('error', freeSocketErrorListener);\n // restart the default timer\n socket.setTimeout(this.timeout);\n\n if (this.socketActiveTTL && Date.now() - socket.createdTime > this.socketActiveTTL) {\n debug(`socket ${socket.createdTime} expired`);\n socket.destroy();\n return this.createSocket(req, options, handleSocketCreation(req));\n }\n // [patch end]\n\n // don't leak\n if (!this.freeSockets[name].length)\n delete this.freeSockets[name];\n\n socket.ref();\n req.onSocket(socket);\n this.sockets[name].push(socket);\n } else if (sockLen < this.maxSockets) {\n debug('call onSocket', sockLen, freeLen);\n // If we are under maxSockets create a new one.\n // [patch start]\n this.createSocket(req, options, handleSocketCreation(req));\n // [patch end]\n } else {\n debug('wait for socket');\n // We are over limit so we'll add it to the queue.\n if (!this.requests[name]) {\n this.requests[name] = [];\n }\n this.requests[name].push(req);\n }\n};\n\nAgent.prototype.createSocket = function createSocket(req, options, cb) {\n var self = this;\n options = util._extend({}, options);\n options = util._extend(options, self.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = self.getName(options);\n options._agentKey = name;\n\n debug('createConnection', name, options);\n options.encoding = null;\n var called = false;\n const newSocket = self.createConnection(options, oncreate);\n // [patch start]\n if (newSocket) {\n oncreate(null, Object.assign(newSocket, { createdTime: Date.now() }));\n }\n // [patch end]\n function oncreate(err, s) {\n if (called)\n return;\n called = true;\n if (err)\n return cb(err);\n if (!self.sockets[name]) {\n self.sockets[name] = [];\n }\n self.sockets[name].push(s);\n debug('sockets', name, self.sockets[name].length);\n\n function onFree() {\n self.emit('free', s, options);\n }\n s.on('free', onFree);\n\n function onClose(err) {\n debug('CLIENT socket onClose');\n // This is the only place where sockets get removed from the Agent.\n // If you want to remove a socket from the pool, just close it.\n // All socket errors end in a close event anyway.\n self.removeSocket(s, options);\n\n // [patch start]\n self.emit('close');\n // [patch end]\n }\n s.on('close', onClose);\n\n // [patch start]\n // start socket timeout handler\n function onTimeout() {\n debug('CLIENT socket onTimeout');\n s.destroy();\n // Remove it from freeSockets immediately to prevent new requests from being sent through this socket.\n self.removeSocket(s, options);\n self.emit('timeout');\n }\n s.on('timeout', onTimeout);\n // set the default timer\n s.setTimeout(self.timeout);\n // [patch end]\n\n function onRemove() {\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n debug('CLIENT socket onRemove');\n self.removeSocket(s, options);\n s.removeListener('close', onClose);\n s.removeListener('free', onFree);\n s.removeListener('agentRemove', onRemove);\n\n // [patch start]\n // remove socket timeout handler\n s.setTimeout(0, onTimeout);\n // [patch end]\n }\n s.on('agentRemove', onRemove);\n cb(null, s);\n }\n};\n\nfunction calculateServerName(options, req) {\n let servername = options.host;\n const hostHeader = req.getHeader('host');\n if (hostHeader) {\n // abc => abc\n // abc:123 => abc\n // [::1] => ::1\n // [::1]:123 => ::1\n if (hostHeader.startsWith('[')) {\n const index = hostHeader.indexOf(']');\n if (index === -1) {\n // Leading '[', but no ']'. Need to do something...\n servername = hostHeader;\n } else {\n servername = hostHeader.substr(1, index - 1);\n }\n } else {\n servername = hostHeader.split(':', 1)[0];\n }\n }\n return servername;\n}\n\nAgent.prototype.removeSocket = function removeSocket(s, options) {\n var name = this.getName(options);\n debug('removeSocket', name, 'writable:', s.writable);\n var sets = [this.sockets];\n\n // If the socket was destroyed, remove it from the free buffers too.\n if (!s.writable)\n sets.push(this.freeSockets);\n\n for (var sk = 0; sk < sets.length; sk++) {\n var sockets = sets[sk];\n\n if (sockets[name]) {\n var index = sockets[name].indexOf(s);\n if (index !== -1) {\n sockets[name].splice(index, 1);\n // Don't leak\n if (sockets[name].length === 0)\n delete sockets[name];\n }\n }\n }\n\n // [patch start]\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name] ? this.sockets[name].length : 0;\n // [patch end]\n\n if (this.requests[name] && this.requests[name].length && sockLen < this.maxSockets) {\n debug('removeSocket, have a request, make a socket');\n var req = this.requests[name][0];\n // If we have pending requests and a socket gets closed make a new one\n this.createSocket(req, options, function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n newSocket.emit('free');\n });\n }\n};\n\nAgent.prototype.destroy = function destroy() {\n var sets = [this.freeSockets, this.sockets];\n for (var s = 0; s < sets.length; s++) {\n var set = sets[s];\n var keys = Object.keys(set);\n for (var v = 0; v < keys.length; v++) {\n var setName = set[keys[v]];\n for (var n = 0; n < setName.length; n++) {\n setName[n].destroy();\n }\n }\n }\n};\n\nexports.globalAgent = new Agent();\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 * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse \n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n", "/**\n * refer:\n * * @atimb \"Real keep-alive HTTP agent\": https://gist.github.com/2963672\n * * https://github.com/joyent/node/blob/master/lib/http.js\n * * https://github.com/joyent/node/blob/master/lib/https.js\n * * https://github.com/joyent/node/blob/master/lib/_http_agent.js\n */\n\n'use strict';\n\nconst OriginalAgent = require('./_http_agent').Agent;\nconst ms = require('humanize-ms');\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 15s free socket timeout\n if (options.freeSocketKeepAliveTimeout === undefined) {\n options.freeSocketKeepAliveTimeout = 15000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketKeepAliveTimeout`\n if (options.keepAliveTimeout) {\n options.freeSocketKeepAliveTimeout = options.keepAliveTimeout;\n }\n options.freeSocketKeepAliveTimeout = ms(options.freeSocketKeepAliveTimeout);\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket keepalive timeout.\n if (options.timeout === undefined) {\n options.timeout = options.freeSocketKeepAliveTimeout * 2;\n // make sure socket default inactivity timeout >= 30s\n if (options.timeout < 30000) {\n options.timeout = 30000;\n }\n }\n options.timeout = ms(options.timeout);\n\n super(options);\n\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', s => {\n this.requestCount++;\n // last enter free queue timestamp\n s.lastFreeTime = Date.now();\n });\n this.on('timeout', () => {\n this.timeoutSocketCount++;\n });\n this.on('close', () => {\n this.closeSocketCount++;\n });\n this.on('error', () => {\n this.errorSocketCount++;\n });\n }\n\n createSocket(req, options, cb) {\n super.createSocket(req, options, (err, socket) => {\n if (err) {\n this.createSocketErrorCount++;\n return cb(err);\n }\n if (this.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n cb(null, socket);\n });\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n", "/**\n * Https Agent base on custom http agent\n */\n\n'use strict';\n\nconst https = require('https');\nconst HttpAgent = require('./agent');\nconst OriginalHttpsAgent = https.Agent;\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n}\n\n[\n 'createConnection',\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n", "'use strict';\n\nmodule.exports = require('./lib/agent');\nmodule.exports.HttpsAgent = require('./lib/https_agent');\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\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' && isNaN(val) === false) {\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|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 '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 if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= 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 return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#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\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\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 try {\n return window.localStorage;\n } catch (e) {}\n}\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [ 6, 2, 3, 4, 5, 1 ];\n\ntry {\n var supportsColor = require('supports-color');\n if (supportsColor && supportsColor.level >= 2) {\n exports.colors = [\n 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,\n 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,\n 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,\n 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,\n 205, 206, 207, 208, 209, 214, 215, 220, 221\n ];\n }\n} catch (err) {\n // swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(process.stderr.fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = '\\u001b[3' + (c < 8 ? c : '8;5;' + c);\n var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n } else {\n return new Date().toISOString() + ' ';\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n", "var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n", "module.exports = require('./lib/retry');", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n\n // Default `randomize` to true\n if (!('randomize' in options)) {\n options.randomize = true;\n }\n\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "const retry = require('async-retry');\nconst debug = require('debug')('fetch-retry');\n\n// retry settings\nconst MIN_TIMEOUT = 10;\nconst MAX_RETRIES = 5;\nconst MAX_RETRY_AFTER = 20;\nconst FACTOR = 6;\n\nmodule.exports = exports = setup;\n\nfunction isClientError(err) {\n if (!err) return false;\n return (\n err.code === 'ERR_UNESCAPED_CHARACTERS' ||\n err.message === 'Request path contains unescaped characters'\n );\n}\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch');\n }\n\n async function fetchRetry(url, opts = {}) {\n const retryOpts = Object.assign(\n {\n // timeouts will be [10, 60, 360, 2160, 12960]\n // (before randomization is added)\n minTimeout: MIN_TIMEOUT,\n retries: MAX_RETRIES,\n factor: FACTOR,\n maxRetryAfter: MAX_RETRY_AFTER,\n },\n opts.retry\n );\n\n if (opts.onRetry) {\n retryOpts.onRetry = (error) => {\n opts.onRetry(error, opts);\n if (opts.retry && opts.retry.onRetry) {\n opts.retry.onRetry(error);\n }\n };\n }\n\n try {\n return await retry(async (bail, attempt) => {\n const { method = 'GET' } = opts;\n try {\n // this will be retried\n const res = await fetch(url, opts);\n debug('status %d', res.status);\n if ((res.status >= 500 && res.status < 600) || res.status === 429) {\n // NOTE: doesn't support http-date format\n const retryAfter = parseInt(res.headers.get('retry-after'), 10);\n if (retryAfter) {\n if (retryAfter > retryOpts.maxRetryAfter) {\n return res;\n } else {\n await new Promise((r) => setTimeout(r, retryAfter * 1e3));\n }\n }\n throw new ResponseError(res);\n } else {\n return res;\n }\n } catch (err) {\n const clientError = isClientError(err);\n const isRetry = !clientError && attempt <= retryOpts.retries;\n debug(\n `${method} ${url} error (status = ${err.status}). ${\n isRetry ? 'retrying' : ''\n }`,\n err\n );\n if (clientError) {\n return bail(err);\n }\n throw err;\n }\n }, retryOpts);\n } catch (err) {\n if (err instanceof ResponseError) {\n return err.res;\n }\n throw err;\n }\n }\n\n for (const key of Object.keys(fetch)) {\n fetchRetry[key] = fetch[key];\n }\n fetchRetry.default = fetchRetry;\n\n return fetchRetry;\n}\n\nclass ResponseError extends Error {\n constructor(res) {\n super(res.statusText);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ResponseError);\n }\n\n this.name = this.constructor.name;\n this.res = res;\n\n // backward compat\n this.code = this.status = this.statusCode = res.status;\n this.url = res.url;\n }\n}\n\nexports.ResponseError = ResponseError;\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve4(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve4(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve6(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve6(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve6;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dns_1 = __importDefault(require(\"dns\"));\nconst lru_cache_1 = __importDefault(require(\"lru-cache\"));\nconst async_retry_1 = __importDefault(require(\"async-retry\"));\nconst resolve4_1 = __importDefault(require(\"./resolve4\"));\nconst resolve6_1 = __importDefault(require(\"./resolve6\"));\nconst lruOptions = { max: 500 };\nlet cache4;\nlet cache6;\nsetupCache();\nasync function dnsResolve(host, options = {}) {\n const { ipv6 = false, minimumCacheTime = 300, refreshCache = false, retryOpts = { minTimeout: 10, retries: 3, factor: 5 }, resolver = dns_1.default } = options;\n const { cache, resolve } = ipv6\n ? { cache: cache6, resolve: resolve6_1.default }\n : { cache: cache4, resolve: resolve4_1.default };\n if (refreshCache) {\n cache.del(host);\n }\n else {\n const ip = cache.get(host);\n if (ip)\n return await ip;\n }\n const p = (async () => {\n const res = await async_retry_1.default(() => resolve(host, resolver), retryOpts);\n const rec = res[Math.floor(Math.random() * res.length)];\n const ttl = Math.max(rec.ttl, minimumCacheTime);\n cache.set(host, rec.address, ttl * 1000);\n return rec.address;\n })();\n cache.set(host, p, 5000);\n return p;\n}\nexports.default = dnsResolve;\nfunction setupCache() {\n cache4 = new lru_cache_1.default(lruOptions);\n cache6 = new lru_cache_1.default(lruOptions);\n}\nexports.setupCache = setupCache;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dns_resolve_1 = require(\"./dns-resolve\");\nexports.default = dns_resolve_1.default;\n", "// Used for testing\nexports.dnsCachedUrl = Symbol('dnsCachedUrl')\n", "const { isIP } = require('net')\nconst { format, parse } = require('url')\nconst resolve = require('@zeit/dns-cached-resolve').default\nconst { dnsCachedUrl } = require('./util')\n\nmodule.exports = setup\n\nconst isRedirect = v => ((v / 100) | 0) === 3\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch')\n }\n const { Headers } = fetch\n\n async function fetchCachedDns(url, opts) {\n const parsed = parse(url)\n const originalHost = parsed.host\n const ip = isIP(parsed.hostname)\n if (ip === 0) {\n if (!opts) opts = {}\n opts.headers = new Headers(opts.headers)\n if (!opts.headers.has('Host')) {\n opts.headers.set('Host', parsed.host)\n }\n opts.redirect = 'manual'\n parsed.host = await resolve(parsed.hostname)\n if (parsed.port) {\n parsed.host += `:${parsed.port}`\n }\n url = format(parsed)\n }\n const res = await fetch(url, opts)\n\n // Update `res.url` to contain the original hostname instead of the IP address\n res[dnsCachedUrl] = url\n Object.defineProperty(res, 'url', {\n get() {\n return parsed.href\n }\n })\n\n if (isRedirect(res.status)) {\n const redirectOpts = Object.assign({}, opts)\n redirectOpts.headers = new Headers(opts.headers)\n\n // Per fetch spec, for POST request with 301/302 response, or any\n // request with 303 response, use GET when following redirect\n if (\n res.status === 303 ||\n ((res.status === 301 || res.status === 302) && opts.method === 'POST')\n ) {\n redirectOpts.method = 'GET'\n redirectOpts.body = null\n redirectOpts.headers.delete('content-length')\n }\n\n // Set the proper `Host` request header, considering that node-fetch will\n // absolutize a relative redirect URL, so the IP address needs to be\n // replaced with the original hostname as well.\n const location = res.headers.get('Location')\n const parsedLocation = parse(location)\n if (parsedLocation.host === parsed.host) {\n parsedLocation.host = originalHost\n }\n redirectOpts.headers.set('Host', parsedLocation.host)\n\n if (opts.onRedirect) {\n opts.onRedirect(res, redirectOpts)\n }\n\n return fetchCachedDns(format(parsedLocation), redirectOpts)\n }\n return res\n }\n\n for (const key of Object.keys(fetch)) {\n fetchCachedDns[key] = fetch[key]\n }\n\n fetchCachedDns.default = fetchCachedDns\n\n return fetchCachedDns\n}\n", "const {parse: parseUrl} = require('url');\nconst HttpAgent = require('agentkeepalive');\nconst debug = require('debug')('@vercel/fetch');\nconst setupFetchRetry = require('@vercel/fetch-retry');\nconst setupFetchCachedDns = require('@vercel/fetch-cached-dns');\nconst urlModule = require('url');\n\nconst {HttpsAgent} = HttpAgent;\nconst {URLSearchParams} = urlModule;\n\nconst AGENT_OPTIONS = {\n\tmaxSockets: 200,\n\tmaxFreeSockets: 20,\n\ttimeout: 60000,\n\tfreeSocketTimeout: 30000,\n\tfreeSocketKeepAliveTimeout: 30000 // free socket keepalive for 30 seconds\n};\n\nlet defaultHttpGlobalAgent;\nlet defaultHttpsGlobalAgent;\n\nfunction getDefaultHttpGlobalAgent(agentOpts) {\n\treturn (defaultHttpGlobalAgent =\n\t\tdefaultHttpGlobalAgent ||\n\t\t(debug('init http agent'), new HttpAgent(agentOpts)));\n}\n\nfunction getDefaultHttpsGlobalAgent(agentOpts) {\n\treturn (defaultHttpsGlobalAgent =\n\t\tdefaultHttpsGlobalAgent ||\n\t\t(debug('init https agent'), new HttpsAgent(agentOpts)));\n}\n\nfunction getAgent(url, agentOpts) {\n\treturn /^https/.test(url)\n\t\t? getDefaultHttpsGlobalAgent(agentOpts)\n\t\t: getDefaultHttpGlobalAgent(agentOpts);\n}\n\nfunction setupVercelFetch(fetch, agentOpts = {}) {\n\treturn async function vercelFetch(url, opts = {}) {\n\t\tif (!opts.agent) {\n\t\t\t// Add default `agent` if none was provided\n\t\t\topts.agent = getAgent(url, {AGENT_OPTIONS, ...agentOpts});\n\t\t}\n\n\t\topts.redirect = 'manual';\n\t\topts.headers = new fetch.Headers(opts.headers);\n\t\t// Workaround for node-fetch + agentkeepalive bug/issue\n\t\topts.headers.set(\n\t\t\t'host',\n\t\t\topts.headers.get('host') || parseUrl(url).host\n\t\t);\n\n\t\t// Convert Object bodies to JSON if they are JS objects\n\t\tif (\n\t\t\topts.body &&\n\t\t\t!(opts.body instanceof URLSearchParams) &&\n\t\t\ttypeof opts.body === 'object' &&\n\t\t\t!Buffer.isBuffer(opts.body)\n\t\t) {\n\t\t\topts.body = JSON.stringify(opts.body);\n\t\t\topts.headers.set('Content-Type', 'application/json');\n\t\t\topts.headers.set('Content-Length', Buffer.byteLength(opts.body));\n\t\t}\n\n\t\t// Check the agent on redirections\n\t\topts.onRedirect = (res, redirectOpts) => {\n\t\t\tredirectOpts.agent = getAgent(res.headers.get('Location'));\n\t\t};\n\n\t\ttry {\n\t\t\tdebug('%s %s', opts.method || 'GET', url);\n\t\t\treturn await fetch(url, opts);\n\t\t} catch (err) {\n\t\t\terr.url = url;\n\t\t\terr.opts = opts;\n\t\t\tthrow err;\n\t\t}\n\t};\n}\n\nfunction setup(fetch, options) {\n\tif (!fetch) {\n\t\tfetch = require('node-fetch');\n\t}\n\n\tconst fd = fetch.default;\n\tif (fd) {\n\t\t// combines \"fetch.Headers\" with \"fetch.default\" function.\n\t\t// workaround for \"fetch.Headers is not a constructor\"\n\t\tfetch = Object.assign((...args) => fd(...args), fd, fetch);\n\t}\n\n\tif (typeof fetch !== 'function') {\n\t\tthrow new Error(\n\t\t\t\"fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?\"\n\t\t);\n\t}\n\n\tfetch = setupFetchCachedDns(fetch);\n\tfetch = setupFetchRetry(fetch);\n\tfetch = setupVercelFetch(fetch, options);\n\treturn fetch;\n}\n\nmodule.exports = setup;\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "/* @flow */\n/*::\n\ntype DotenvParseOptions = {\n debug?: boolean\n}\n\n// keys and values from src\ntype DotenvParseOutput = { [string]: string }\n\ntype DotenvConfigOptions = {\n path?: string, // path to .env file\n encoding?: string, // encoding of .env file\n debug?: string // turn on logging for debugging purposes\n}\n\ntype DotenvConfigOutput = {\n parsed?: DotenvParseOutput,\n error?: Error\n}\n\n*/\n\nconst fs = require('fs')\nconst path = require('path')\n\nfunction log (message /*: string */) {\n console.log(`[dotenv][DEBUG] ${message}`)\n}\n\nconst NEWLINE = '\\n'\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\n// Parses src into an Object\nfunction parse (src /*: string | Buffer */, options /*: ?DotenvParseOptions */) /*: DotenvParseOutput */ {\n const debug = Boolean(options && options.debug)\n const obj = {}\n\n // convert Buffers before splitting into lines and processing\n src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = (keyValueArr[2] || '')\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n\n obj[key] = val\n } else if (debug) {\n log(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n }\n })\n\n return obj\n}\n\n// Populates process.env from .env file\nfunction config (options /*: ?DotenvConfigOptions */) /*: DotenvConfigOutput */ {\n let dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding /*: string */ = 'utf8'\n let debug = false\n\n if (options) {\n if (options.path != null) {\n dotenvPath = options.path\n }\n if (options.encoding != null) {\n encoding = options.encoding\n }\n if (options.debug != null) {\n debug = true\n }\n }\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n\n Object.keys(parsed).forEach(function (key) {\n if (!Object.prototype.hasOwnProperty.call(process.env, key)) {\n process.env[key] = parsed[key]\n } else if (debug) {\n log(`\"${key}\" is already defined in \\`process.env\\` and will not be overwritten`)\n }\n })\n\n return { parsed }\n } catch (e) {\n return { error: e }\n }\n}\n\nmodule.exports.config = config\nmodule.exports.parse = parse\n", "/*\n *\tCreated by Trevor Sears .\n *\t10:53 PM -- June 11th, 2019.\n *\tProject: promise-any-polyfill\n */\n\nimport { ReturnResultOrPromiseLike, TypeOrPromiseLike } from \"./declaration\";\n\n/**\n * An implementation of the upcoming `Promise.any` functionality.\n *\n * @author Trevor Sears \n * @version v0.1.0\n * @since v0.1.0\n */\nPromise.any = async <\n\tT = any,\n\tR extends ReturnResultOrPromiseLike = ReturnResultOrPromiseLike>(values: Iterable>):\n\tPromise => {\n\t\n\treturn new Promise((resolve: (value?: (TypeOrPromiseLike)) => void, reject: (reason?: any) => void): void => {\n\t\t\n\t\tlet hasResolved: boolean = false;\n\t\tlet iterableCount: number = 0;\n\t\tlet rejectionReasons: any[] = [];\n\t\t\n\t\tconst resolveOnce: (value?: (TypeOrPromiseLike)) => void = (value?: (TypeOrPromiseLike)): void => {\n\t\t\t\n\t\t\tif (!hasResolved) {\n\t\t\t\t\n\t\t\t\thasResolved = true;\n\t\t\t\tresolve(value);\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t};\n\t\t\n\t\tconst rejectionCheck: (reason: any) => void = (reason: any): void => {\n\t\t\t\n\t\t\trejectionReasons.push(reason);\n\t\t\t\n\t\t\tif (rejectionReasons.length >= iterableCount) reject(rejectionReasons);\n\t\t\t\n\t\t};\n\t\t\n\t\tfor (let value of values) {\n\t\t\t\n\t\t\titerableCount++;\n\t\t\t\n\t\t\tif ((value as any).then !== undefined) {\n\t\t\t\t\n\t\t\t\tlet promiseLikeValue: PromiseLike> =\n\t\t\t\t\tvalue as unknown as PromiseLike>;\n\t\t\t\t\n\t\t\t\tpromiseLikeValue.then((result: TypeOrPromiseLike): void => resolveOnce(result));\n\t\t\t\t\n\t\t\t\tif ((value as any).catch !== undefined) {\n\t\t\t\t\t\n\t\t\t\t\tlet promiseValue: Promise> = promiseLikeValue as Promise>;\n\t\t\t\t\t\n\t\t\t\t\tpromiseValue.catch((reason: any): void => rejectionCheck(reason));\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t});\n\t\n};", "#!/usr/bin/env node\n\nimport childProcess from \"child_process\";\nimport fs from \"fs\";\nimport parse from \"git-url-parse\";\nimport meow from \"meow\";\nimport path from \"path\";\nimport { findGitHubToken } from \"src/findGitHubToken\";\nimport tar from \"tar\";\nimport tmp from \"tmp\";\nimport { fetch } from \"./fetch\";\nimport which from \"which\";\nimport dotenv from \"dotenv\";\nimport type { Writable } from \"stream\";\nimport zlib from \"zlib\";\nimport rimraf from \"rimraf\";\n\nconst _SEARCH_PATH = \"src/Search\";\nconst _REGISTER_PROTOCOL_PATH = \"src/registerProtocol\";\nconst _CONFIRM_PROMPT_PATH = \"src/confirmPrompt\";\n\nfunction resolveAfterDelay(delay) {\n return new Promise((resolve, reject) => setTimeout(resolve, delay));\n}\n// global.fetch = require(\"node-fetch\");\n\n// if (typeof global.AbortController === \"undefined\") {\n// require(\"abortcontroller-polyfill/dist/polyfill-patch-fetch\");\n// }\n\n// This is to trick esbuild into code splitting these files\n\n// const AbortController = global.AbortController;\n\nlet exiting = false;\n\nconst HOME =\n process.platform === \"win32\"\n ? path.join(process.env.HOMEDRIVE, process.env.HOMEPATH)\n : process.env.HOME;\n\nconst GIT_PEEK_ENV_PATH = path.join(HOME, \".git-peek\");\n\nlet editorsToTry = [\"code\", \"subl\", \"code-insiders\", \"vim\", \"vi\"];\n\nlet shouldKeep = false;\n\nlet logFunction = console.log;\nlet exceptionLogger = (...err) => {\n if (exiting) return;\n console.error(...err);\n};\n\n// fs.rmSync was added in Node v14.14\n// See docs: https://nodejs.org/api/fs.html#fs_fs_rmsync_path_options\nif (!fs.rmSync) {\n const rimraf = require(\"rimraf\");\n fs.rmSync = (path: string, options: fs.RmOptions) => {\n // Just in-case!\n if (path === \"/\") return;\n if (path === \"/Applications\") return;\n return rimraf.sync(path);\n };\n}\n\nasync function fetchEditor(_editor, silent) {\n let chosenEditor =\n !_editor || _editor === \"auto\" ? process.env.EDITOR : _editor;\n\n if (!chosenEditor?.trim().length) {\n for (let editor of editorsToTry) {\n try {\n chosenEditor = await which(editor);\n if (chosenEditor.includes(\"code\") || chosenEditor.includes(\"subl\")) {\n chosenEditor = `\"` + chosenEditor + `\"`;\n }\n break;\n } catch (exception) {}\n }\n }\n\n if (!chosenEditor || !chosenEditor?.trim()?.length) {\n if (!silent)\n console.warn(\n \"No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag\"\n );\n chosenEditor = \"code\";\n }\n\n return chosenEditor;\n}\n\nconst DOTENV_EXISTS = fs.existsSync(GIT_PEEK_ENV_PATH);\n\nif (typeof Promise.any !== \"function\") {\n require(\"promise-any-polyfill\");\n}\n\nenum WaitFor {\n childProcessExit,\n downloadComplete,\n confirm,\n}\n\nconst exitBehavior = {\n confirm: false,\n waitFor: WaitFor.downloadComplete,\n};\n\n// This will break if the github repo is called pull or if the organization is called pull\nfunction isPullRequest(url: string) {\n if (!url.includes(GITHUB_BASE_DOMAIN) || !url.includes(\"/pull/\")) {\n return false;\n }\n\n return true;\n}\n\nasync function resolveRefFromPullRequest(url: string) {\n let _url = url.replace(`https://${GITHUB_BASE_DOMAIN}`, \"\");\n const [__, owner, repo, _, pullRequestID] = _url.split(\"/\");\n\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}/pulls/${pullRequestID}`;\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load pull request url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n const { label, sha } = json.head;\n return [label.split(\":\")[0], repo, sha];\n}\n\nasync function resolveRefFromURL(owner: string, repo: string) {\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}`;\n if (process.env.VERBOSE)\n console.log(\"Couldn't auto-detect ref, asking github what the ref is\");\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load github url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n return json.default_branch ?? \"main\";\n}\n\nlet didRemove = false;\n\nlet tmpobj;\nlet slowTask;\n\nlet instance: Command;\n\nconst followRedirect = {\n redirect: \"follow\",\n};\nenum EditorMode {\n unknown = 0,\n vscode = 1,\n sublime = 2,\n vim = 3,\n}\n\nfunction githubFetch(url) {\n const token = findGitHubToken();\n if (token && !followRedirect.headers) {\n followRedirect.headers = { authorization: `Bearer ${token}` };\n }\n return fetch(url, followRedirect);\n}\n\nfunction noop() {}\nlet retryCount = 0;\nlet didPrintDeleted = false;\nfunction doExit() {\n let wasExiting = exiting;\n exiting = true;\n\n if (!didRemove && !shouldKeep && tmpobj) {\n try {\n tmpobj?.removeCallback();\n tmpobj = null;\n didRemove = false;\n } catch (exception) {}\n }\n\n if (instance?._tar) {\n if (!instance._tar.writableEnded) {\n try {\n instance._tar.warn = noop;\n instance._tar.abort();\n } catch (exception) {}\n }\n }\n\n if (instance?.slowTask && exitBehavior.waitFor !== WaitFor.downloadComplete) {\n if (instance.slowTask.connected) {\n try {\n instance.slowTask.kill();\n instance.slowTask.disconnect();\n } catch (exception) {}\n }\n }\n\n if (!shouldKeep && instance?.destination?.length && retryCount < 10) {\n // Error: ENOTEMPTY: directory not empty, rmdir\n if (process.platform === \"win32\") {\n try {\n rimraf.sync(instance.destination + \"/*/**\");\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n } else {\n try {\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n }\n\n if (fs.existsSync(instance.destination)) {\n setTimeout(doExit, 32);\n if (process.env.VERBOSE)\n console.log(`Failed to delete, retry attempt #${retryCount}/10`);\n\n retryCount++;\n return;\n }\n }\n\n if (\n !shouldKeep &&\n instance?.destination?.length &&\n !fs.existsSync(instance.destination) &&\n !didPrintDeleted\n ) {\n instance.slowTask = null;\n instance.log(\"\uD83D\uDDD1 Deleted repository\");\n didPrintDeleted = true;\n }\n\n process.emitWarning = noop;\n process.exit();\n}\n\nprocess.once(\"SIGINT\", doExit);\n\nclass Command {\n log(text) {\n if (this.editorMode === EditorMode.vim && this.slowTask) return;\n console.log(text);\n }\n\n editorMode: EditorMode = EditorMode.unknown;\n destination: string;\n static description =\n \"Quickly open a remote Git repository with your local text editor into a temporary folder.\";\n static usage = \"[git link or github link]\";\n\n static args = [{ name: \"url\" }];\n\n didFinish = false;\n async _prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n destination: string\n ) {\n const url = `https://cdn.jsdelivr.net/gh/${owner}/${repo}@${ref}/${\n filepath || \"README.md\"\n }`;\n\n const resp = await fetch(url, {\n redirect: \"follow\",\n // signal: aborter.signal,\n });\n\n if (!resp.ok || resp.status === 404) {\n return false;\n }\n\n if (exiting) return;\n\n const text = await resp.text();\n\n if (text.trim().length) {\n if (exiting) return;\n await fs.promises.mkdir(path.dirname(destination), { recursive: true });\n if (exiting) return;\n await fs.promises.writeFile(destination, text, \"utf8\");\n return true;\n }\n\n throw \"nope\";\n }\n prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n fallback: string,\n destination: string\n ) {\n return Promise.any([\n this._prefetchGithub(repo, owner, filepath, ref, destination),\n this._prefetchGithub(repo, owner, filepath, fallback, destination),\n ]);\n }\n\n slowTask: childProcess.ChildProcess = null;\n\n search(input: string) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderInk } = require(SEARCH_PATH);\n process.emitWarning = _disableWarning;\n\n return renderInk(input);\n }\n\n async _unzip(source: string) {\n const response = await githubFetch(source);\n if (response.ok) {\n return response.body;\n } else if (response.status === 403 || response.status === 401) {\n const error = `Failed to load git repo: HTTP ${response.status}\n${await response.text()}\n-\nIf this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;\n console.error(error);\n throw error;\n } else {\n throw await response.text();\n }\n }\n didUseFallback = false;\n _tar: Writable;\n unzipPromise: Promise;\n archiveStartPromise: Promise;\n unzip(owner, name, ref, fallback, to: string) {\n return new Promise((resolve2, reject2) => {\n this.archiveStartPromise = new Promise((resolve3, reject3) => {\n this.unzipPromise = new Promise(async (resolve, reject) => {\n const archive = await this.getArchive(\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${ref}`,\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${fallback}`\n );\n resolve3();\n\n this.log(\"\u23F3 Extracting repository to temp folder...\");\n archive.pipe(\n (this._tar = tar.x({\n cwd: to,\n strip: 1,\n \"keep-newer-files\": true,\n noMtime: true,\n // onentry(entry) {},\n // onwarn(message, data) {},\n }))\n );\n\n archive.on(\"end\", () => {\n if (exiting) return;\n this.log(\"\uD83D\uDCBF Finished downloading repository!\");\n resolve();\n resolve2();\n });\n archive.on(\"error\", (error) => {\n if (didRemove || exiting) return;\n\n this.log(\"\uD83D\uDCBF Failed to download repository!\");\n reject(error);\n reject2(error);\n });\n });\n });\n });\n }\n\n clone(source: string, to: string) {\n const git = `git clone --filter=tree:0 --single-branch --depth=1 ${source} ${to}`;\n this.log(`Cloning ${source} to temp folder...`);\n return new Promise((resolve, reject) => {\n const child = childProcess.exec(git, {});\n child.stderr.pipe(process.stderr);\n child.once(\"close\", () => {\n resolve();\n });\n\n child.once(\"exit\", () => {\n resolve();\n });\n\n child.once(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n parse() {\n const cli = meow(\n `\nUSAGE\n $ git-peek [git link or github link or search query or repository file path]\n\nEXAMPLES\n git peek https://github.com/evanw/esbuild/blob/master/lib/common.ts\n git peek https://github.com/ylukem/pin-go\n git peek https://github.com/jarred-sumner/atbuild\n git peek hanford/trends\n git peek react\n git peek https://github.com/jarred-sumner/fastbench.dev/tree/main/\n\nOPTIONS\n -e, --editor=editor [default: ${\n process.env.EDITOR?.length ? process.env.EDITOR : \"auto\"\n }] editor to open with, possible values:\n auto, ${editorsToTry.join(\", \")}.\n By default, it will search $EDITOR. If not found, it\n will try code, then subl, then vim.\n\n -d [default: false] Ask the GitHub API\n for the default_branch to clone.\n\n -r, --register [default: false] Register the git-peek:// url protocol\n This allows the \"Open\" buttons to work on\n github.com once you've installed the extension. Only\n supported on macOS (Windows coming soon).\n\n -w, --wait [default: false] wait to open the editor until the\n repository finishes downloading. always on for vi.\n\n -no-keep [default: false] skip deleting repository on exit.\n\n -b, --branch [default: \"master\"] select a branch/ref to use.\n if the repository doesn't use master/main,\n you'll want to set this manually. but it will\n try to infer from the input by default.\n\n -o, --out= [default: system temp directory] output directory to\n store repository files in. If you're cloning a large\n repo and your tempdir is an in-memory storage (/tmp),\n maybe change this.\n\n -h, --help show CLI help\n\nENVIRONMENT VARIABLES:\n $EDITOR: ${process.env.EDITOR?.length ? process.env.EDITOR : \"not set\"}\n $GITHUB_TOKEN: ${\n process.env.GITHUB_TOKEN?.length\n ? new Array(process.env.GITHUB_TOKEN.length).fill(\"*\").join(\"\")\n : \"not set\"\n }\n $GITHUB_BASE_DOMAIN: ${\n process.env.GITHUB_BASE_DOMAIN?.length\n ? process.env.GITHUB_BASE_DOMAIN\n : \"not set\"\n }\n $GITHUB_API_DOMAIN: ${\n process.env.GITHUB_API_DOMAIN?.length\n ? process.env.GITHUB_API_DOMAIN\n : \"not set\"\n }\n .env: ${DOTENV_EXISTS ? \"\u2705\" : \"\u274C\"} ${GIT_PEEK_ENV_PATH}\n\nFor use with private GitHub repositories, set $GITHUB_TOKEN to a personal\naccess token. To persist it, store it in your shell or the .env shown above.\n\nFor use with GitHub Enterprise, set $GITHUB_BASE_DOMAIN and $GITHUB_API_DOMAIN\nto the appropriate URLs.\n`.trim(),\n {\n flags: {\n fromscript: {\n type: \"boolean\",\n default: false,\n },\n register: {\n type: \"boolean\",\n default: false,\n alias: \"r\",\n description: \"Register protocol handler\",\n },\n confirm: {\n type: \"boolean\",\n default: false,\n alias: \"c\",\n description: \"Confirm before deleting\",\n },\n out: {\n type: \"string\",\n default: \"\",\n alias: \"o\",\n description:\n \"Parent directory to store the repository in. Defaults to system temp folder.\",\n },\n branch: {\n type: \"string\",\n default: \"\",\n alias: \"b\",\n description: \"branch/ref to use when fetching\",\n },\n defaultBranch: {\n type: \"boolean\",\n default: false,\n alias: \"d\",\n description: \"Check default branch\",\n },\n keep: {\n type: \"boolean\",\n default: false,\n alias: \"k\",\n description: \"Don't delete the repository on exit.\",\n },\n wait: {\n type: \"boolean\",\n default: false,\n alias: \"w\",\n description:\n \"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true.\",\n },\n help: {\n type: \"boolean\",\n default: false,\n alias: \"h\",\n isRequired: false,\n },\n version: {\n type: \"boolean\",\n default: false,\n alias: \"v\",\n isRequired: false,\n },\n editor: {\n type: \"string\",\n isMultiple: false,\n isRequired: false,\n default: \"auto\",\n alias: \"e\",\n description: `editor to open with, possible values: auto, code, vim, subl. By default, it will search $EDITOR. If not found, it will try code, then subl, then vim.`,\n },\n },\n }\n );\n\n return cli;\n }\n archive: NodeJS.ReadableStream;\n async getArchive(source: string, fallbackSource: string) {\n let archive: NodeJS.ReadableStream;\n try {\n archive = await this._unzip(source);\n } catch (exception) {\n try {\n this.didUseFallback = true;\n archive = await this._unzip(fallbackSource);\n } catch (exception) {\n if (exiting) return;\n console.error(\n `Invalid repository link. Tried:\\n- ${source}\\n- ${fallbackSource}`\n );\n doExit();\n process.exit();\n }\n }\n\n this.archive = archive;\n return archive;\n }\n\n async run() {\n const cli = this.parse();\n const {\n help,\n version,\n out: tempBaseDir,\n branch,\n defaultBranch,\n register,\n } = cli.flags;\n\n shouldKeep = cli.flags.keep;\n\n if (\n cli.flags.fromscript &&\n process.env.SAY_DEBUG?.length &&\n process.platform === \"darwin\"\n ) {\n console.log = (...args) =>\n childProcess.exec(`say -v \"Samantha\" \"${args.join(\" \")}\"`);\n }\n if (help) {\n cli.showHelp(0);\n process.exit(0);\n }\n\n if (version) {\n console.log(require(\"package.json\").version);\n process.exit(0);\n }\n\n const {\n flags: { editor: _editor = \"auto\" },\n } = cli;\n\n if (register) {\n await require(REGISTER_PROTOCOL_PATH).register(\n await fetchEditor(_editor, false)\n );\n return;\n }\n\n let url = cli.input[0]?.trim() ?? \"\";\n\n if (url.includes(\"git-peek://\")) {\n url = url.replace(\"git-peek://\", \"\").trim();\n }\n\n // url = url.replace(\"/blob/\", \"/tree/\");\n\n let link;\n\n let isMalformed = false;\n if (!url.includes(\"://\") && url.split(\"/\").length === 2) {\n const [owner, repo] = url.split(\"/\");\n\n if (repo.trim().length) {\n url = `https://${GITHUB_BASE_DOMAIN}/${owner}/${repo}`;\n } else {\n isMalformed = true;\n }\n }\n\n if (!isMalformed) {\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n while (!link) {\n if (isMalformed) {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n try {\n link = parse(url);\n } catch (exception) {\n try {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n } catch (exception) {\n this.log(exception);\n }\n }\n }\n\n let ref = link.ref;\n\n if (\n link.resource === GITHUB_BASE_DOMAIN &&\n (branch === \"default\" ||\n defaultBranch ||\n (link.ref === \"\" && cli.flags.fromscript))\n ) {\n ref = await resolveRefFromURL(link.owner, link.name);\n } else if (branch !== \"\") {\n ref = branch;\n } else if (!ref) {\n ref = \"master\";\n }\n\n if (url && url.length && isPullRequest(url)) {\n if (process.env.VERBOSE) this.log(\"Resolving ref from pull request...\");\n const [newOwner, newName, newRef] = await resolveRefFromPullRequest(url);\n link.name = newName;\n link.owner = newOwner;\n ref = newRef;\n }\n\n if (process.env.VERBOSE)\n this.log(`Fetching ${link.owner}/${link.name}#${ref}...`);\n\n const start = new Date().getTime();\n\n let prefix = link.name + \"@\" + ref;\n\n tmpobj = tmp.dirSync(\n tempBaseDir?.length\n ? {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n tmpdir: path.resolve(process.cwd(), tempBaseDir),\n }\n : {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix: prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n }\n );\n this.destination = tmpobj.name;\n let chosenEditorPromise = fetchEditor(_editor, false);\n\n didRemove = false;\n process.once(\"beforeExit\", doExit);\n process.once(\"SIGABRT\", doExit);\n process.once(\"SIGQUIT\", doExit);\n\n let specificFile = link.filepath;\n let usingDefaultFile = !specificFile;\n\n if (usingDefaultFile) {\n specificFile = \"README.md\";\n }\n\n let openPath = path.join(tmpobj.name, specificFile);\n\n // From a simple benchmark, unzip is 2x faster than git clone.\n if (link.resource === GITHUB_BASE_DOMAIN) {\n let fallback = ref === \"main\" ? \"master\" : \"main\";\n\n let prefetchPromise;\n if (ALLOW_JSDELIVR) {\n prefetchPromise = this.prefetchGithub(\n link.name,\n link.owner,\n specificFile,\n ref,\n fallback,\n openPath\n );\n }\n let unzipPromise = this.unzip(\n link.owner,\n link.name,\n ref,\n fallback,\n tmpobj.name\n );\n let archiveStartPromise = this.archiveStartPromise.then(() =>\n resolveAfterDelay(100)\n );\n\n if (prefetchPromise) {\n await Promise.any([prefetchPromise, unzipPromise, archiveStartPromise]);\n } else {\n await Promise.any([unzipPromise, archiveStartPromise]);\n }\n } else {\n await this.clone(link.href, tmpobj.name);\n }\n\n let editorSpecificCommands = [];\n\n // console.log(path.join(tmpobj.name, specificFile));\n\n this.editorMode = EditorMode.unknown;\n let chosenEditor = await chosenEditorPromise;\n\n // VSCode is the happy case.\n // When passed a folder, \"--wait\" correctly waits until the Window is closed.\n // This is NOT the case in Sublime Text.\n if (chosenEditor.includes(\"code\")) {\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n\n this.editorMode = EditorMode.vscode;\n editorSpecificCommands.push(\"-w\", \"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`-g \"${path.resolve(openPath)}\":0:0`);\n }\n\n // So we cannot support auto-deleting on progrma exit immediately with Sublime Text.\n // Because \"--wait\" only applies to files. So you'd be looking at a file. You close it.\n // And bam! All the files are gone.\n // We don't want that. That's bad UX. So we don't do \"--wait\" for Sublime Text.\n } else if (chosenEditor.includes(\"subl\")) {\n if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n }\n\n shouldKeep = true;\n this.editorMode = EditorMode.sublime;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n editorSpecificCommands.push(\"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`\"${path.resolve(openPath)}\":0:0`);\n }\n // TODO: handle go to specific line for vim.\n } else if (chosenEditor.includes(\"vi\")) {\n this.editorMode = EditorMode.vim;\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n // Opening a shell is a little weird when its from the extension\n // So instead, we just wait for it to download, and\n // rely on tmp dir deleting to reoslve it\n } else if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n exitBehavior.confirm = cli.flags.confirm;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n exitBehavior.confirm = cli.flags.confirm;\n }\n\n if (\n ((this.editorMode === EditorMode.vim && usingDefaultFile) ||\n cli.flags.wait) &&\n this.unzipPromise\n ) {\n await this.unzipPromise;\n this.unzipPromise = Promise.resolve(true);\n }\n\n await new Promise((resolve, reject) => {\n if (this.editorMode === EditorMode.vim) {\n process.stdin.setRawMode(true);\n process.stdin.pause();\n\n this.slowTask = childProcess.spawn(\n chosenEditor,\n [\n usingDefaultFile ? tmpobj.name : specificFile,\n ...editorSpecificCommands,\n ],\n {\n env: process.env,\n stdio: \"inherit\",\n detached: false,\n cwd: tmpobj.name,\n }\n );\n let didResolve = false;\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n didResolve = true;\n }\n }\n\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", resolver);\n } else {\n this.log(\n `\uD83D\uDCBB Launched editor in ${(\n (new Date().getTime() - start) /\n 1000\n ).toFixed(2)}s`\n );\n\n const cmd = `${chosenEditor} \"${path.join(\n tmpobj.name\n )}\" ${editorSpecificCommands.join(\" \")}`.trim();\n\n let didResolve = false;\n\n const cwd =\n process.platform === \"win32\"\n ? path.join(tmpobj.name, \"../\")\n : tmpobj.anme;\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"ignore\",\n // This line is important! If detached is true, nothing ever happens.\n detached: false,\n // Windows will refuse to delete if there is an active process in the folder\n cwd,\n });\n } else if (cli.flags.fromscript && process.platform === \"darwin\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"pipe\",\n // This line is important! If detached is true, nothing ever happens.\n detached: true,\n cwd,\n });\n } else {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio:\n exitBehavior.waitFor !== WaitFor.childProcessExit\n ? \"ignore\"\n : \"inherit\",\n detached: exitBehavior.waitFor === WaitFor.childProcessExit,\n cwd,\n });\n }\n\n if (exitBehavior.waitFor === WaitFor.downloadComplete) {\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask.unref();\n this.slowTask = null;\n\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n } else {\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n }\n // This is mostly just VSCode right now.\n } else {\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n }\n }\n\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", reject);\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"disconnect\", resolver);\n }\n }\n });\n\n if (shouldKeep || exitBehavior.waitFor === WaitFor.downloadComplete) {\n didRemove = true;\n }\n\n if (!cli.flags.keep && exitBehavior.waitFor === WaitFor.confirm) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderConfirm } = require(CONFIRM_PROMPT_PATH);\n process.emitWarning = _disableWarning;\n const shouldRemove = await renderConfirm();\n shouldKeep = didRemove = !shouldRemove;\n }\n\n doExit();\n\n // setTimeout(() => {\n // doExit();\n // process.emitWarning = () => {};\n // process.nextTick(() => process.kill(process.pid, \"SIGTERM\"));\n // }, 10000);\n }\n}\n\nprocess.on(\"unhandledRejection\", exceptionLogger);\nprocess.on(\"unhandledException\", exceptionLogger);\n\nif (DOTENV_EXISTS) {\n dotenv.config({ path: GIT_PEEK_ENV_PATH });\n}\n\nconst GITHUB_BASE_DOMAIN = process.env.GITHUB_BASE_DOMAIN || \"github.com\";\nconst GITHUB_API_DOMAIN = process.env.GITHUB_API_DOMAIN || \"api.github.com\";\nconst ALLOW_JSDELIVR = GITHUB_API_DOMAIN === \"api.github.com\";\ninstance = new Command();\ninstance.run();\n", "function _findGitHubToken() {\n if (process.env.GITHUB_TOKEN?.trim()?.length ?? 0) {\n return process.env.GITHUB_TOKEN.trim();\n // } else if (fs.existsSync(hubPath)) {\n // const hub = yaml.load(fs.readFileSync(hubPath, \"utf8\"));\n // if (typeof hub !== \"object\") return null;\n // const githubKey = Object.keys(hub).find((k) =>\n // k.toLowerCase().includes(\"github.com\")\n // );\n // if (githubKey) {\n // const tokenholder = hub[githubKey].find((k) => k?.oauth_token);\n // if (tokenholder) {\n // return tokenholder?.oauth_token;\n // }\n // }\n // return null;\n } else {\n return null;\n }\n}\nlet _githubToken;\nexport function findGitHubToken() {\n if (typeof _githubToken === \"undefined\") {\n _githubToken = _findGitHubToken();\n }\n\n return _githubToken;\n}\n", "import * as _fetch from \"node-fetch\";\nimport createFetcher from \"@vercel/fetch\";\n\nexport const fetch = createFetcher(_fetch);\nexport default fetch;\n"], - "mappings": "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,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,KAAM,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,KAAM,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,IAAK,GAAI,GAAI,EAAG,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,MAAO,GAAI,KAAM,GAAI,IAAK,EAAG,KAAM,GAAI,KAAM,KAAM,IAAK,KAAM,MAC3wD,GAAwB,CAAC,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,E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", + "sourcesContent": ["\"use strict\";\n\n/**\n * protocols\n * Returns the protocols of an input url.\n *\n * @name protocols\n * @function\n * @param {String} input The input url.\n * @param {Boolean|Number} first If `true`, the first protocol will be returned. If number, it will represent the zero-based index of the protocols array.\n * @return {Array|String} The array of protocols or the specified protocol.\n */\nmodule.exports = function protocols(input, first) {\n\n if (first === true) {\n first = 0;\n }\n\n var index = input.indexOf(\"://\"),\n splits = input.substring(0, index).split(\"+\").filter(Boolean);\n\n if (typeof first === \"number\") {\n return splits[first];\n }\n\n return splits;\n};", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\");\n\n/**\n * isSsh\n * Checks if an input value is a ssh url or not.\n *\n * @name isSsh\n * @function\n * @param {String|Array} input The input url or an array of protocols.\n * @return {Boolean} `true` if the input is a ssh url, `false` otherwise.\n */\nfunction isSsh(input) {\n\n if (Array.isArray(input)) {\n return input.indexOf(\"ssh\") !== -1 || input.indexOf(\"rsync\") !== -1;\n }\n\n if (typeof input !== \"string\") {\n return false;\n }\n\n var prots = protocols(input);\n input = input.substring(input.indexOf(\"://\") + 3);\n if (isSsh(prots)) {\n return true;\n }\n\n // TODO This probably could be improved :)\n return input.indexOf(\"@\") < input.indexOf(\":\");\n}\n\nmodule.exports = isSsh;", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "\"use strict\";\n\n// Dependencies\nvar protocols = require(\"protocols\"),\n isSsh = require(\"is-ssh\"),\n qs = require(\"query-string\");\n\n/**\n * parsePath\n * Parses the input url.\n *\n * @name parsePath\n * @function\n * @param {String} url The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parsePath(url) {\n url = (url || \"\").trim();\n var output = {\n protocols: protocols(url),\n protocol: null,\n port: null,\n resource: \"\",\n user: \"\",\n pathname: \"\",\n hash: \"\",\n search: \"\",\n href: url,\n query: Object.create(null)\n },\n protocolIndex = url.indexOf(\"://\"),\n resourceIndex = -1,\n splits = null,\n parts = null;\n\n if (url.startsWith(\".\")) {\n if (url.startsWith(\"./\")) {\n url = url.substring(2);\n }\n output.pathname = url;\n output.protocol = \"file\";\n }\n\n var firstChar = url.charAt(1);\n if (!output.protocol) {\n output.protocol = output.protocols[0];\n if (!output.protocol) {\n if (isSsh(url)) {\n output.protocol = \"ssh\";\n } else if (firstChar === \"/\" || firstChar === \"~\") {\n url = url.substring(2);\n output.protocol = \"file\";\n } else {\n output.protocol = \"file\";\n }\n }\n }\n\n if (protocolIndex !== -1) {\n url = url.substring(protocolIndex + 3);\n }\n\n parts = url.split(/\\/|\\\\/);\n if (output.protocol !== \"file\") {\n output.resource = parts.shift();\n } else {\n output.resource = \"\";\n }\n\n // user@domain\n splits = output.resource.split(\"@\");\n if (splits.length === 2) {\n output.user = splits[0];\n output.resource = splits[1];\n }\n\n // domain.com:port\n splits = output.resource.split(\":\");\n if (splits.length === 2) {\n output.resource = splits[0];\n if (splits[1]) {\n output.port = Number(splits[1]);\n if (isNaN(output.port)) {\n output.port = null;\n parts.unshift(splits[1]);\n }\n } else {\n output.port = null;\n }\n }\n\n // Remove empty elements\n parts = parts.filter(Boolean);\n\n // Stringify the pathname\n if (output.protocol === \"file\") {\n output.pathname = output.href;\n } else {\n output.pathname = output.pathname || (output.protocol !== \"file\" || output.href[0] === \"/\" ? \"/\" : \"\") + parts.join(\"/\");\n }\n\n // #some-hash\n splits = output.pathname.split(\"#\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.hash = splits[1];\n }\n\n // ?foo=bar\n splits = output.pathname.split(\"?\");\n if (splits.length === 2) {\n output.pathname = splits[0];\n output.search = splits[1];\n }\n\n output.query = qs.parse(output.search);\n output.href = output.href.replace(/\\/$/, \"\");\n output.pathname = output.pathname.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = parsePath;", "'use strict';\n// TODO: Use the `URL` global when targeting Node.js 10\nconst URLParser = typeof URL === 'undefined' ? require('url').URL : URL;\n\nconst testParameter = (name, filters) => {\n\treturn filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);\n};\n\nmodule.exports = (urlString, opts) => {\n\topts = Object.assign({\n\t\tdefaultProtocol: 'http:',\n\t\tnormalizeProtocol: true,\n\t\tforceHttp: false,\n\t\tforceHttps: false,\n\t\tstripHash: true,\n\t\tstripWWW: true,\n\t\tremoveQueryParameters: [/^utm_\\w+/i],\n\t\tremoveTrailingSlash: true,\n\t\tremoveDirectoryIndex: false,\n\t\tsortQueryParameters: true\n\t}, opts);\n\n\t// Backwards compatibility\n\tif (Reflect.has(opts, 'normalizeHttps')) {\n\t\topts.forceHttp = opts.normalizeHttps;\n\t}\n\n\tif (Reflect.has(opts, 'normalizeHttp')) {\n\t\topts.forceHttps = opts.normalizeHttp;\n\t}\n\n\tif (Reflect.has(opts, 'stripFragment')) {\n\t\topts.stripHash = opts.stripFragment;\n\t}\n\n\turlString = urlString.trim();\n\n\tconst hasRelativeProtocol = urlString.startsWith('//');\n\tconst isRelativeUrl = !hasRelativeProtocol && /^\\.*\\//.test(urlString);\n\n\t// Prepend protocol\n\tif (!isRelativeUrl) {\n\t\turlString = urlString.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//, opts.defaultProtocol);\n\t}\n\n\tconst urlObj = new URLParser(urlString);\n\n\tif (opts.forceHttp && opts.forceHttps) {\n\t\tthrow new Error('The `forceHttp` and `forceHttps` options cannot be used together');\n\t}\n\n\tif (opts.forceHttp && urlObj.protocol === 'https:') {\n\t\turlObj.protocol = 'http:';\n\t}\n\n\tif (opts.forceHttps && urlObj.protocol === 'http:') {\n\t\turlObj.protocol = 'https:';\n\t}\n\n\t// Remove hash\n\tif (opts.stripHash) {\n\t\turlObj.hash = '';\n\t}\n\n\t// Remove duplicate slashes if not preceded by a protocol\n\tif (urlObj.pathname) {\n\t\t// TODO: Use the following instead when targeting Node.js 10\n\t\t// `urlObj.pathname = urlObj.pathname.replace(/(? {\n\t\t\tif (/^(?!\\/)/g.test(p1)) {\n\t\t\t\treturn `${p1}/`;\n\t\t\t}\n\t\t\treturn '/';\n\t\t});\n\t}\n\n\t// Decode URI octets\n\tif (urlObj.pathname) {\n\t\turlObj.pathname = decodeURI(urlObj.pathname);\n\t}\n\n\t// Remove directory index\n\tif (opts.removeDirectoryIndex === true) {\n\t\topts.removeDirectoryIndex = [/^index\\.[a-z]+$/];\n\t}\n\n\tif (Array.isArray(opts.removeDirectoryIndex) && opts.removeDirectoryIndex.length > 0) {\n\t\tlet pathComponents = urlObj.pathname.split('/');\n\t\tconst lastComponent = pathComponents[pathComponents.length - 1];\n\n\t\tif (testParameter(lastComponent, opts.removeDirectoryIndex)) {\n\t\t\tpathComponents = pathComponents.slice(0, pathComponents.length - 1);\n\t\t\turlObj.pathname = pathComponents.slice(1).join('/') + '/';\n\t\t}\n\t}\n\n\tif (urlObj.hostname) {\n\t\t// Remove trailing dot\n\t\turlObj.hostname = urlObj.hostname.replace(/\\.$/, '');\n\n\t\t// Remove `www.`\n\t\t// eslint-disable-next-line no-useless-escape\n\t\tif (opts.stripWWW && /^www\\.([a-z\\-\\d]{2,63})\\.([a-z\\.]{2,5})$/.test(urlObj.hostname)) {\n\t\t\t// Each label should be max 63 at length (min: 2).\n\t\t\t// The extension should be max 5 at length (min: 2).\n\t\t\t// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names\n\t\t\turlObj.hostname = urlObj.hostname.replace(/^www\\./, '');\n\t\t}\n\t}\n\n\t// Remove query unwanted parameters\n\tif (Array.isArray(opts.removeQueryParameters)) {\n\t\tfor (const key of [...urlObj.searchParams.keys()]) {\n\t\t\tif (testParameter(key, opts.removeQueryParameters)) {\n\t\t\t\turlObj.searchParams.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort query parameters\n\tif (opts.sortQueryParameters) {\n\t\turlObj.searchParams.sort();\n\t}\n\n\t// Take advantage of many of the Node `url` normalizations\n\turlString = urlObj.toString();\n\n\t// Remove ending `/`\n\tif (opts.removeTrailingSlash || urlObj.pathname === '/') {\n\t\turlString = urlString.replace(/\\/$/, '');\n\t}\n\n\t// Restore relative protocol, if applicable\n\tif (hasRelativeProtocol && !opts.normalizeProtocol) {\n\t\turlString = urlString.replace(/^http:\\/\\//, '//');\n\t}\n\n\treturn urlString;\n};\n", "\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar parsePath = require(\"parse-path\"),\n normalizeUrl = require(\"normalize-url\");\n\n/**\n * parseUrl\n * Parses the input url.\n *\n * **Note**: This *throws* if invalid urls are provided.\n *\n * @name parseUrl\n * @function\n * @param {String} url The input url.\n * @param {Boolean|Object} normalize Wheter to normalize the url or not.\n * Default is `false`. If `true`, the url will\n * be normalized. If an object, it will be the\n * options object sent to [`normalize-url`](https://github.com/sindresorhus/normalize-url).\n *\n * For SSH urls, normalize won't work.\n *\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `protocol` (String): The first protocol, `\"ssh\"` (if the url is a ssh url) or `\"file\"`.\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `query` (Object): The url querystring, parsed as object.\n */\nfunction parseUrl(url) {\n var normalize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof url !== \"string\" || !url.trim()) {\n throw new Error(\"Invalid url.\");\n }\n if (normalize) {\n if ((typeof normalize === \"undefined\" ? \"undefined\" : _typeof(normalize)) !== \"object\") {\n normalize = {\n stripFragment: false\n };\n }\n url = normalizeUrl(url, normalize);\n }\n var parsed = parsePath(url);\n return parsed;\n}\n\nmodule.exports = parseUrl;", "\"use strict\";\n\n// Dependencies\n\nvar parseUrl = require(\"parse-url\"),\n isSsh = require(\"is-ssh\");\n\n/**\n * gitUp\n * Parses the input url.\n *\n * @name gitUp\n * @function\n * @param {String} input The input url.\n * @return {Object} An object containing the following fields:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n */\nfunction gitUp(input) {\n var output = parseUrl(input);\n output.token = \"\";\n\n var splits = output.user.split(\":\");\n if (splits.length === 2) {\n if (splits[1] === \"x-oauth-basic\") {\n output.token = splits[0];\n } else if (splits[0] === \"x-token-auth\") {\n output.token = splits[1];\n }\n }\n\n if (isSsh(output.protocols) || isSsh(input)) {\n output.protocol = \"ssh\";\n } else if (output.protocols.length) {\n output.protocol = output.protocols[0];\n } else {\n output.protocol = \"file\";\n }\n\n output.href = output.href.replace(/\\/$/, \"\");\n return output;\n}\n\nmodule.exports = gitUp;", "\"use strict\";\n\nvar gitUp = require(\"git-up\");\n\n/**\n * gitUrlParse\n * Parses a Git url.\n *\n * @name gitUrlParse\n * @function\n * @param {String} url The Git url to parse.\n * @return {GitUrl} The `GitUrl` object containing:\n *\n * - `protocols` (Array): An array with the url protocols (usually it has one element).\n * - `port` (null|Number): The domain port.\n * - `resource` (String): The url domain (including subdomains).\n * - `user` (String): The authentication user (usually for ssh urls).\n * - `pathname` (String): The url pathname.\n * - `hash` (String): The url hash.\n * - `search` (String): The url querystring value.\n * - `href` (String): The input url.\n * - `protocol` (String): The git url protocol.\n * - `token` (String): The oauth token (could appear in the https urls).\n * - `source` (String): The Git provider (e.g. `\"github.com\"`).\n * - `owner` (String): The repository owner.\n * - `name` (String): The repository name.\n * - `ref` (String): The repository ref (e.g., \"master\" or \"dev\").\n * - `filepath` (String): A filepath relative to the repository root.\n * - `filepathtype` (String): The type of filepath in the url (\"blob\" or \"tree\").\n * - `full_name` (String): The owner and name values in the `owner/name` format.\n * - `toString` (Function): A function to stringify the parsed url into another url type.\n * - `organization` (String): The organization the owner belongs to. This is CloudForge specific.\n * - `git_suffix` (Boolean): Whether to add the `.git` suffix or not.\n *\n */\nfunction gitUrlParse(url) {\n\n if (typeof url !== \"string\") {\n throw new Error(\"The url must be a string.\");\n }\n\n var urlInfo = gitUp(url),\n sourceParts = urlInfo.resource.split(\".\"),\n splits = null;\n\n urlInfo.toString = function (type) {\n return gitUrlParse.stringify(this, type);\n };\n\n urlInfo.source = sourceParts.length > 2 ? sourceParts.slice(1 - sourceParts.length).join(\".\") : urlInfo.source = urlInfo.resource;\n\n // Note: Some hosting services (e.g. Visual Studio Team Services) allow whitespace characters\n // in the repository and owner names so we decode the URL pieces to get the correct result\n urlInfo.git_suffix = /\\.git$/.test(urlInfo.pathname);\n urlInfo.name = decodeURIComponent(urlInfo.pathname.replace(/^\\//, '').replace(/\\.git$/, \"\"));\n urlInfo.owner = decodeURIComponent(urlInfo.user);\n\n switch (urlInfo.source) {\n case \"git.cloudforge.com\":\n urlInfo.owner = urlInfo.user;\n urlInfo.organization = sourceParts[0];\n urlInfo.source = \"cloudforge.com\";\n break;\n case \"visualstudio.com\":\n // Handle VSTS SSH URLs\n if (urlInfo.resource === 'vs-ssh.visualstudio.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n urlInfo.full_name = splits[2] + '/' + splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 2) {\n urlInfo.owner = splits[1];\n urlInfo.name = splits[1];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n break;\n }\n\n // Azure DevOps (formerly Visual Studio Team Services)\n case \"dev.azure.com\":\n case \"azure.com\":\n if (urlInfo.resource === 'ssh.dev.azure.com') {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 4) {\n urlInfo.organization = splits[1];\n urlInfo.owner = splits[2];\n urlInfo.name = splits[3];\n }\n break;\n } else {\n splits = urlInfo.name.split(\"/\");\n if (splits.length === 5) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[4];\n urlInfo.full_name = '_git/' + urlInfo.name;\n } else if (splits.length === 3) {\n urlInfo.name = splits[2];\n if (splits[0] === 'DefaultCollection') {\n urlInfo.owner = splits[2];\n urlInfo.organization = splits[0];\n urlInfo.full_name = urlInfo.organization + '/_git/' + urlInfo.name;\n } else {\n urlInfo.owner = splits[0];\n urlInfo.full_name = urlInfo.owner + '/_git/' + urlInfo.name;\n }\n } else if (splits.length === 4) {\n urlInfo.organization = splits[0];\n urlInfo.owner = splits[1];\n urlInfo.name = splits[3];\n urlInfo.full_name = urlInfo.organization + '/' + urlInfo.owner + '/_git/' + urlInfo.name;\n }\n if (urlInfo.query && urlInfo.query['path']) {\n urlInfo.filepath = urlInfo.query['path'].replace(/^\\/+/g, ''); // Strip leading slash (/)\n }\n if (urlInfo.query && urlInfo.query['version']) {\n // version=GB\n urlInfo.ref = urlInfo.query['version'].replace(/^GB/, ''); // remove GB\n }\n break;\n }\n default:\n splits = urlInfo.name.split(\"/\");\n var nameIndex = splits.length - 1;\n if (splits.length >= 2) {\n var dashIndex = splits.indexOf(\"-\", 2);\n var blobIndex = splits.indexOf(\"blob\", 2);\n var treeIndex = splits.indexOf(\"tree\", 2);\n var commitIndex = splits.indexOf(\"commit\", 2);\n var srcIndex = splits.indexOf(\"src\", 2);\n var rawIndex = splits.indexOf(\"raw\", 2);\n nameIndex = dashIndex > 0 ? dashIndex - 1 : blobIndex > 0 ? blobIndex - 1 : treeIndex > 0 ? treeIndex - 1 : commitIndex > 0 ? commitIndex - 1 : srcIndex > 0 ? srcIndex - 1 : rawIndex > 0 ? rawIndex - 1 : nameIndex;\n\n urlInfo.owner = splits.slice(0, nameIndex).join('/');\n urlInfo.name = splits[nameIndex];\n if (commitIndex) {\n urlInfo.commit = splits[nameIndex + 2];\n }\n }\n\n urlInfo.ref = \"\";\n urlInfo.filepathtype = \"\";\n urlInfo.filepath = \"\";\n var offsetNameIndex = splits.length > nameIndex && splits[nameIndex + 1] === \"-\" ? nameIndex + 1 : nameIndex;\n if (splits.length > offsetNameIndex + 2 && [\"raw\", \"src\", \"blob\", \"tree\"].indexOf(splits[offsetNameIndex + 1]) >= 0) {\n urlInfo.filepathtype = splits[offsetNameIndex + 1];\n urlInfo.ref = splits[offsetNameIndex + 2];\n if (splits.length > offsetNameIndex + 3) {\n urlInfo.filepath = splits.slice(offsetNameIndex + 3).join('/');\n }\n }\n urlInfo.organization = urlInfo.owner;\n break;\n }\n\n if (!urlInfo.full_name) {\n urlInfo.full_name = urlInfo.owner;\n if (urlInfo.name) {\n urlInfo.full_name && (urlInfo.full_name += \"/\");\n urlInfo.full_name += urlInfo.name;\n }\n }\n // Bitbucket Server\n if (urlInfo.owner.startsWith(\"scm/\")) {\n urlInfo.source = \"bitbucket-server\";\n urlInfo.owner = urlInfo.owner.replace(\"scm/\", \"\");\n urlInfo.organization = urlInfo.owner;\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n }\n\n var bitbucket = /(projects|users)\\/(.*?)\\/repos\\/(.*?)\\/(raw|browse)(?:\\/(?:$|(.+?)))?$/;\n var matches = bitbucket.exec(urlInfo.pathname);\n if (matches != null) {\n urlInfo.source = \"bitbucket-server\";\n if (matches[1] === \"users\") {\n urlInfo.owner = \"~\" + matches[2];\n } else {\n urlInfo.owner = matches[2];\n }\n\n urlInfo.organization = urlInfo.owner;\n urlInfo.name = matches[3];\n urlInfo.filepathtype = matches[4];\n urlInfo.filepath = matches[5];\n urlInfo.full_name = urlInfo.owner + \"/\" + urlInfo.name;\n\n if (urlInfo.query.at) {\n urlInfo.ref = urlInfo.query.at;\n } else {\n urlInfo.ref = \"\";\n }\n }\n return urlInfo;\n}\n\n/**\n * stringify\n * Stringifies a `GitUrl` object.\n *\n * @name stringify\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @param {String} type The type of the stringified url (default `obj.protocol`).\n * @return {String} The stringified url.\n */\ngitUrlParse.stringify = function (obj, type) {\n type = type || (obj.protocols && obj.protocols.length ? obj.protocols.join('+') : obj.protocol);\n var port = obj.port ? \":\" + obj.port : '';\n var user = obj.user || 'git';\n var maybeGitSuffix = obj.git_suffix ? \".git\" : \"\";\n switch (type) {\n case \"ssh\":\n if (port) return \"ssh://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;else return user + \"@\" + obj.resource + \":\" + obj.full_name + maybeGitSuffix;\n case \"git+ssh\":\n case \"ssh+git\":\n case \"ftp\":\n case \"ftps\":\n return type + \"://\" + user + \"@\" + obj.resource + port + \"/\" + obj.full_name + maybeGitSuffix;\n case \"http\":\n case \"https\":\n var auth = obj.token ? buildToken(obj) : obj.user && (obj.protocols.includes('http') || obj.protocols.includes('https')) ? obj.user + \"@\" : \"\";\n return type + \"://\" + auth + obj.resource + port + \"/\" + buildPath(obj) + maybeGitSuffix;\n default:\n return obj.href;\n }\n};\n\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\nfunction buildToken(obj) {\n switch (obj.source) {\n case \"bitbucket.org\":\n return \"x-token-auth:\" + obj.token + \"@\";\n default:\n return obj.token + \"@\";\n }\n}\n\nfunction buildPath(obj) {\n switch (obj.source) {\n case \"bitbucket-server\":\n return \"scm/\" + obj.full_name;\n default:\n return \"\" + obj.full_name;\n\n }\n}\n\nmodule.exports = gitUrlParse;", "'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n", "'use strict';\nmodule.exports = function (val) {\n\tif (val === null || val === undefined) {\n\t\treturn [];\n\t}\n\n\treturn Array.isArray(val) ? val : [val];\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", "'use strict';\n\nconst isPlainObject = require('is-plain-obj');\nconst arrify = require('arrify');\nconst kindOf = require('kind-of');\n\nconst push = (obj, prop, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = [];\n\t}\n\n\tobj[prop].push(value);\n};\n\nconst insert = (obj, prop, key, value) => {\n\tif (!obj[prop]) {\n\t\tobj[prop] = {};\n\t}\n\n\tobj[prop][key] = value;\n};\n\nconst prettyPrint = output => {\n\treturn Array.isArray(output) ?\n\t\t`[${output.map(prettyPrint).join(', ')}]` :\n\t\tkindOf(output) === 'string' ? JSON.stringify(output) : output;\n};\n\nconst resolveType = value => {\n\tif (Array.isArray(value) && value.length > 0) {\n\t\tconst [element] = value;\n\t\treturn `${kindOf(element)}-array`;\n\t}\n\n\treturn kindOf(value);\n};\n\nconst normalizeExpectedType = (type, defaultValue) => {\n\tconst inferredType = type === 'array' ? 'string-array' : type;\n\n\tif (arrayTypes.includes(inferredType) && Array.isArray(defaultValue) && defaultValue.length === 0) {\n\t\treturn 'array';\n\t}\n\n\treturn inferredType;\n};\n\nconst passthroughOptions = ['stopEarly', 'unknown', '--'];\nconst primitiveTypes = ['string', 'boolean', 'number'];\nconst arrayTypes = primitiveTypes.map(t => `${t}-array`);\nconst availableTypes = [...primitiveTypes, 'array', ...arrayTypes];\n\nconst buildOptions = options => {\n\toptions = options || {};\n\n\tconst result = {};\n\n\tpassthroughOptions.forEach(key => {\n\t\tif (options[key]) {\n\t\t\tresult[key] = options[key];\n\t\t}\n\t});\n\n\tObject.keys(options).forEach(key => {\n\t\tlet value = options[key];\n\n\t\tif (key === 'arguments') {\n\t\t\tkey = '_';\n\t\t}\n\n\t\t// If short form is used\n\t\t// convert it to long form\n\t\t// e.g. { 'name': 'string' }\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = {type: value};\n\t\t}\n\n\t\tif (isPlainObject(value)) {\n\t\t\tconst props = value;\n\t\t\tconst {type} = props;\n\n\t\t\tif (type) {\n\t\t\t\tif (!availableTypes.includes(type)) {\n\t\t\t\t\tthrow new TypeError(`Expected type of \"${key}\" to be one of ${prettyPrint(availableTypes)}, got ${prettyPrint(type)}`);\n\t\t\t\t}\n\n\t\t\t\tif (arrayTypes.includes(type)) {\n\t\t\t\t\tconst [elementType] = type.split('-');\n\t\t\t\t\tpush(result, 'array', {key, [elementType]: true});\n\t\t\t\t} else {\n\t\t\t\t\tpush(result, type, key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ({}.hasOwnProperty.call(props, 'default')) {\n\t\t\t\tconst {default: defaultValue} = props;\n\t\t\t\tconst defaultType = resolveType(defaultValue);\n\t\t\t\tconst expectedType = normalizeExpectedType(type, defaultValue);\n\n\t\t\t\tif (expectedType && expectedType !== defaultType) {\n\t\t\t\t\tthrow new TypeError(`Expected \"${key}\" default value to be of type \"${expectedType}\", got ${prettyPrint(defaultType)}`);\n\t\t\t\t}\n\n\t\t\t\tinsert(result, 'default', key, defaultValue);\n\t\t\t}\n\n\t\t\tarrify(props.alias).forEach(alias => {\n\t\t\t\tinsert(result, 'alias', alias, key);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn result;\n};\n\nmodule.exports = buildOptions;\nmodule.exports.default = buildOptions;\n", "'use strict';\n\nvar util = require('util');\nvar fs = require('fs');\nvar path = require('path');\n\nfunction camelCase(str) {\n str = str.toLocaleLowerCase();\n if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n return str;\n }\n else {\n let camelcase = '';\n let nextChrUpper = false;\n const leadingHyphens = str.match(/^-+/);\n for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n let chr = str.charAt(i);\n if (nextChrUpper) {\n nextChrUpper = false;\n chr = chr.toLocaleUpperCase();\n }\n if (i !== 0 && (chr === '-' || chr === '_')) {\n nextChrUpper = true;\n continue;\n }\n else if (chr !== '-' && chr !== '_') {\n camelcase += chr;\n }\n }\n return camelcase;\n }\n}\nfunction decamelize(str, joinString) {\n const lowercase = str.toLocaleLowerCase();\n joinString = joinString || '-';\n let notCamelcase = '';\n for (let i = 0; i < str.length; i++) {\n const chrLower = lowercase.charAt(i);\n const chrString = str.charAt(i);\n if (chrLower !== chrString && i > 0) {\n notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n }\n else {\n notCamelcase += chrString;\n }\n }\n return notCamelcase;\n}\nfunction looksLikeNumber(x) {\n if (x === null || x === undefined)\n return false;\n if (typeof x === 'number')\n return true;\n if (/^0x[0-9a-f]+$/i.test(x))\n return true;\n if (x.length > 1 && x[0] === '0')\n return false;\n return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\nfunction tokenizeArgString(argString) {\n if (Array.isArray(argString)) {\n return argString.map(e => typeof e !== 'string' ? e + '' : e);\n }\n argString = argString.trim();\n let i = 0;\n let prevC = null;\n let c = null;\n let opening = null;\n const args = [];\n for (let ii = 0; ii < argString.length; ii++) {\n prevC = c;\n c = argString.charAt(ii);\n if (c === ' ' && !opening) {\n if (!(prevC === ' ')) {\n i++;\n }\n continue;\n }\n if (c === opening) {\n opening = null;\n }\n else if ((c === \"'\" || c === '\"') && !opening) {\n opening = c;\n }\n if (!args[i])\n args[i] = '';\n args[i] += c;\n }\n return args;\n}\n\nlet mixin;\nclass YargsParser {\n constructor(_mixin) {\n mixin = _mixin;\n }\n parse(argsInput, options) {\n const opts = Object.assign({\n alias: undefined,\n array: undefined,\n boolean: undefined,\n config: undefined,\n configObjects: undefined,\n configuration: undefined,\n coerce: undefined,\n count: undefined,\n default: undefined,\n envPrefix: undefined,\n narg: undefined,\n normalize: undefined,\n string: undefined,\n number: undefined,\n __: undefined,\n key: undefined\n }, options);\n const args = tokenizeArgString(argsInput);\n const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n const configuration = Object.assign({\n 'boolean-negation': true,\n 'camel-case-expansion': true,\n 'combine-arrays': false,\n 'dot-notation': true,\n 'duplicate-arguments-array': true,\n 'flatten-duplicate-arrays': true,\n 'greedy-arrays': true,\n 'halt-at-non-option': false,\n 'nargs-eats-options': false,\n 'negation-prefix': 'no-',\n 'parse-numbers': true,\n 'parse-positional-numbers': true,\n 'populate--': false,\n 'set-placeholder-key': false,\n 'short-option-groups': true,\n 'strip-aliased': false,\n 'strip-dashed': false,\n 'unknown-options-as-args': false\n }, opts.configuration);\n const defaults = Object.assign(Object.create(null), opts.default);\n const configObjects = opts.configObjects || [];\n const envPrefix = opts.envPrefix;\n const notFlagsOption = configuration['populate--'];\n const notFlagsArgv = notFlagsOption ? '--' : '_';\n const newAliases = Object.create(null);\n const defaulted = Object.create(null);\n const __ = opts.__ || mixin.format;\n const flags = {\n aliases: Object.create(null),\n arrays: Object.create(null),\n bools: Object.create(null),\n strings: Object.create(null),\n numbers: Object.create(null),\n counts: Object.create(null),\n normalize: Object.create(null),\n configs: Object.create(null),\n nargs: Object.create(null),\n coercions: Object.create(null),\n keys: []\n };\n const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n const key = typeof opt === 'object' ? opt.key : opt;\n const assignment = Object.keys(opt).map(function (key) {\n const arrayFlagKeys = {\n boolean: 'bools',\n string: 'strings',\n number: 'numbers'\n };\n return arrayFlagKeys[key];\n }).filter(Boolean).pop();\n if (assignment) {\n flags[assignment][key] = true;\n }\n flags.arrays[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n flags.numbers[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n flags.counts[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n flags.normalize[key] = true;\n flags.keys.push(key);\n });\n if (typeof opts.narg === 'object') {\n Object.entries(opts.narg).forEach(([key, value]) => {\n if (typeof value === 'number') {\n flags.nargs[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.coerce === 'object') {\n Object.entries(opts.coerce).forEach(([key, value]) => {\n if (typeof value === 'function') {\n flags.coercions[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.config !== 'undefined') {\n if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n [].concat(opts.config).filter(Boolean).forEach(function (key) {\n flags.configs[key] = true;\n });\n }\n else if (typeof opts.config === 'object') {\n Object.entries(opts.config).forEach(([key, value]) => {\n if (typeof value === 'boolean' || typeof value === 'function') {\n flags.configs[key] = value;\n }\n });\n }\n }\n extendAliases(opts.key, aliases, opts.default, flags.arrays);\n Object.keys(defaults).forEach(function (key) {\n (flags.aliases[key] || []).forEach(function (alias) {\n defaults[alias] = defaults[key];\n });\n });\n let error = null;\n checkConfiguration();\n let notFlags = [];\n const argv = Object.assign(Object.create(null), { _: [] });\n const argvReturn = {};\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n let broken;\n let key;\n let letters;\n let m;\n let next;\n let value;\n if (arg !== '--' && isUnknownOptionAsArg(arg)) {\n pushPositional(arg);\n }\n else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n if (checkAllAliases(m[1], flags.arrays)) {\n i = eatArray(i, m[1], args, m[2]);\n }\n else if (checkAllAliases(m[1], flags.nargs) !== false) {\n i = eatNargs(i, m[1], args, m[2]);\n }\n else {\n setArg(m[1], m[2]);\n }\n }\n }\n else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n m = arg.match(negatedBoolean);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n }\n }\n else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n m = arg.match(/^--?(.+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!next.match(/^-/) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-.\\..+=/)) {\n m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n setArg(m[1], m[2]);\n }\n }\n else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n next = args[i + 1];\n m = arg.match(/^-(.\\..+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (next !== undefined && !next.match(/^-/) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n letters = arg.slice(1, -1).split('');\n broken = false;\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (letters[j + 1] && letters[j + 1] === '=') {\n value = arg.slice(j + 3);\n key = letters[j];\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args, value);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args, value);\n }\n else {\n setArg(key, value);\n }\n broken = true;\n break;\n }\n if (next === '-') {\n setArg(letters[j], next);\n continue;\n }\n if (/[A-Za-z]/.test(letters[j]) &&\n /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n checkAllAliases(next, flags.bools) === false) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], defaultValue(letters[j]));\n }\n }\n key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (checkAllAliases(key, flags.arrays)) {\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-[0-9]$/) &&\n arg.match(negative) &&\n checkAllAliases(arg.slice(1), flags.bools)) {\n key = arg.slice(1);\n setArg(key, defaultValue(key));\n }\n else if (arg === '--') {\n notFlags = args.slice(i + 1);\n break;\n }\n else if (configuration['halt-at-non-option']) {\n notFlags = args.slice(i);\n break;\n }\n else {\n pushPositional(arg);\n }\n }\n applyEnvVars(argv, true);\n applyEnvVars(argv, false);\n setConfig(argv);\n setConfigObjects();\n applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n applyCoercions(argv);\n if (configuration['set-placeholder-key'])\n setPlaceholderKeys(argv);\n Object.keys(flags.counts).forEach(function (key) {\n if (!hasKey(argv, key.split('.')))\n setArg(key, 0);\n });\n if (notFlagsOption && notFlags.length)\n argv[notFlagsArgv] = [];\n notFlags.forEach(function (key) {\n argv[notFlagsArgv].push(key);\n });\n if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n delete argv[key];\n });\n }\n if (configuration['strip-aliased']) {\n [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n if (configuration['camel-case-expansion'] && alias.includes('-')) {\n delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n }\n delete argv[alias];\n });\n }\n function pushPositional(arg) {\n const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n argv._.push(maybeCoercedNumber);\n }\n }\n function eatNargs(i, key, args, argAfterEqualSign) {\n let ii;\n let toEat = checkAllAliases(key, flags.nargs);\n toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n if (toEat === 0) {\n if (!isUndefined(argAfterEqualSign)) {\n error = Error(__('Argument unexpected for: %s', key));\n }\n setArg(key, defaultValue(key));\n return i;\n }\n let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n if (configuration['nargs-eats-options']) {\n if (args.length - (i + 1) + available < toEat) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n available = toEat;\n }\n else {\n for (ii = i + 1; ii < args.length; ii++) {\n if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n available++;\n else\n break;\n }\n if (available < toEat)\n error = Error(__('Not enough arguments following: %s', key));\n }\n let consumed = Math.min(available, toEat);\n if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n setArg(key, argAfterEqualSign);\n consumed--;\n }\n for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n setArg(key, args[ii]);\n }\n return (i + consumed);\n }\n function eatArray(i, key, args, argAfterEqualSign) {\n let argsToSet = [];\n let next = argAfterEqualSign || args[i + 1];\n const nargsCount = checkAllAliases(key, flags.nargs);\n if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n argsToSet.push(true);\n }\n else if (isUndefined(next) ||\n (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n if (defaults[key] !== undefined) {\n const defVal = defaults[key];\n argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n }\n }\n else {\n if (!isUndefined(argAfterEqualSign)) {\n argsToSet.push(processValue(key, argAfterEqualSign));\n }\n for (let ii = i + 1; ii < args.length; ii++) {\n if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n break;\n next = args[ii];\n if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n break;\n i = ii;\n argsToSet.push(processValue(key, next));\n }\n }\n if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n (isNaN(nargsCount) && argsToSet.length === 0))) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n setArg(key, argsToSet);\n return i;\n }\n function setArg(key, val) {\n if (/-/.test(key) && configuration['camel-case-expansion']) {\n const alias = key.split('.').map(function (prop) {\n return camelCase(prop);\n }).join('.');\n addNewAlias(key, alias);\n }\n const value = processValue(key, val);\n const splitKey = key.split('.');\n setKey(argv, splitKey, value);\n if (flags.aliases[key]) {\n flags.aliases[key].forEach(function (x) {\n const keyProperties = x.split('.');\n setKey(argv, keyProperties, value);\n });\n }\n if (splitKey.length > 1 && configuration['dot-notation']) {\n (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n let keyProperties = x.split('.');\n const a = [].concat(splitKey);\n a.shift();\n keyProperties = keyProperties.concat(a);\n if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n setKey(argv, keyProperties, value);\n }\n });\n }\n if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n const keys = [key].concat(flags.aliases[key] || []);\n keys.forEach(function (key) {\n Object.defineProperty(argvReturn, key, {\n enumerable: true,\n get() {\n return val;\n },\n set(value) {\n val = typeof value === 'string' ? mixin.normalize(value) : value;\n }\n });\n });\n }\n }\n function addNewAlias(key, alias) {\n if (!(flags.aliases[key] && flags.aliases[key].length)) {\n flags.aliases[key] = [alias];\n newAliases[alias] = true;\n }\n if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n addNewAlias(alias, key);\n }\n }\n function processValue(key, val) {\n if (typeof val === 'string' &&\n (val[0] === \"'\" || val[0] === '\"') &&\n val[val.length - 1] === val[0]) {\n val = val.substring(1, val.length - 1);\n }\n if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n if (typeof val === 'string')\n val = val === 'true';\n }\n let value = Array.isArray(val)\n ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n : maybeCoerceNumber(key, val);\n if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n value = increment();\n }\n if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n if (Array.isArray(val))\n value = val.map((val) => { return mixin.normalize(val); });\n else\n value = mixin.normalize(val);\n }\n return value;\n }\n function maybeCoerceNumber(key, value) {\n if (!configuration['parse-positional-numbers'] && key === '_')\n return value;\n if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n value = Number(value);\n }\n }\n return value;\n }\n function setConfig(argv) {\n const configLookup = Object.create(null);\n applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n Object.keys(flags.configs).forEach(function (configKey) {\n const configPath = argv[configKey] || configLookup[configKey];\n if (configPath) {\n try {\n let config = null;\n const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n const resolveConfig = flags.configs[configKey];\n if (typeof resolveConfig === 'function') {\n try {\n config = resolveConfig(resolvedConfigPath);\n }\n catch (e) {\n config = e;\n }\n if (config instanceof Error) {\n error = config;\n return;\n }\n }\n else {\n config = mixin.require(resolvedConfigPath);\n }\n setConfigObject(config);\n }\n catch (ex) {\n if (ex.name === 'PermissionDenied')\n error = ex;\n else if (argv[configKey])\n error = Error(__('Invalid JSON config file: %s', configPath));\n }\n }\n });\n }\n function setConfigObject(config, prev) {\n Object.keys(config).forEach(function (key) {\n const value = config[key];\n const fullKey = prev ? prev + '.' + key : key;\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n setConfigObject(value, fullKey);\n }\n else {\n if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n setArg(fullKey, value);\n }\n }\n });\n }\n function setConfigObjects() {\n if (typeof configObjects !== 'undefined') {\n configObjects.forEach(function (configObject) {\n setConfigObject(configObject);\n });\n }\n }\n function applyEnvVars(argv, configOnly) {\n if (typeof envPrefix === 'undefined')\n return;\n const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n const env = mixin.env();\n Object.keys(env).forEach(function (envVar) {\n if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n const keys = envVar.split('__').map(function (key, i) {\n if (i === 0) {\n key = key.substring(prefix.length);\n }\n return camelCase(key);\n });\n if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n setArg(keys.join('.'), env[envVar]);\n }\n }\n });\n }\n function applyCoercions(argv) {\n let coerce;\n const applied = new Set();\n Object.keys(argv).forEach(function (key) {\n if (!applied.has(key)) {\n coerce = checkAllAliases(key, flags.coercions);\n if (typeof coerce === 'function') {\n try {\n const value = maybeCoerceNumber(key, coerce(argv[key]));\n ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n applied.add(ali);\n argv[ali] = value;\n });\n }\n catch (err) {\n error = err;\n }\n }\n }\n });\n }\n function setPlaceholderKeys(argv) {\n flags.keys.forEach((key) => {\n if (~key.indexOf('.'))\n return;\n if (typeof argv[key] === 'undefined')\n argv[key] = undefined;\n });\n return argv;\n }\n function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(obj, key.split('.'))) {\n setKey(obj, key.split('.'), defaults[key]);\n if (canLog)\n defaulted[key] = true;\n (aliases[key] || []).forEach(function (x) {\n if (hasKey(obj, x.split('.')))\n return;\n setKey(obj, x.split('.'), defaults[key]);\n });\n }\n });\n }\n function hasKey(obj, keys) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n o = (o[key] || {});\n });\n const key = keys[keys.length - 1];\n if (typeof o !== 'object')\n return false;\n else\n return key in o;\n }\n function setKey(obj, keys, value) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n key = sanitizeKey(key);\n if (typeof o === 'object' && o[key] === undefined) {\n o[key] = {};\n }\n if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n if (Array.isArray(o[key])) {\n o[key].push({});\n }\n else {\n o[key] = [o[key], {}];\n }\n o = o[key][o[key].length - 1];\n }\n else {\n o = o[key];\n }\n });\n const key = sanitizeKey(keys[keys.length - 1]);\n const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n const isValueArray = Array.isArray(value);\n let duplicate = configuration['duplicate-arguments-array'];\n if (!duplicate && checkAllAliases(key, flags.nargs)) {\n duplicate = true;\n if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n o[key] = undefined;\n }\n }\n if (value === increment()) {\n o[key] = increment(o[key]);\n }\n else if (Array.isArray(o[key])) {\n if (duplicate && isTypeArray && isValueArray) {\n o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n }\n else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n o[key] = value;\n }\n else {\n o[key] = o[key].concat([value]);\n }\n }\n else if (o[key] === undefined && isTypeArray) {\n o[key] = isValueArray ? value : [value];\n }\n else if (duplicate && !(o[key] === undefined ||\n checkAllAliases(key, flags.counts) ||\n checkAllAliases(key, flags.bools))) {\n o[key] = [o[key], value];\n }\n else {\n o[key] = value;\n }\n }\n function extendAliases(...args) {\n args.forEach(function (obj) {\n Object.keys(obj || {}).forEach(function (key) {\n if (flags.aliases[key])\n return;\n flags.aliases[key] = [].concat(aliases[key] || []);\n flags.aliases[key].concat(key).forEach(function (x) {\n if (/-/.test(x) && configuration['camel-case-expansion']) {\n const c = camelCase(x);\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].concat(key).forEach(function (x) {\n if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n const c = decamelize(x, '-');\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].forEach(function (x) {\n flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n });\n }\n function checkAllAliases(key, flag) {\n const toCheck = [].concat(flags.aliases[key] || [], key);\n const keys = Object.keys(flag);\n const setAlias = toCheck.find(key => keys.includes(key));\n return setAlias ? flag[setAlias] : false;\n }\n function hasAnyFlag(key) {\n const flagsKeys = Object.keys(flags);\n const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n return toCheck.some(function (flag) {\n return Array.isArray(flag) ? flag.includes(key) : flag[key];\n });\n }\n function hasFlagsMatching(arg, ...patterns) {\n const toCheck = [].concat(...patterns);\n return toCheck.some(function (pattern) {\n const match = arg.match(pattern);\n return match && hasAnyFlag(match[1]);\n });\n }\n function hasAllShortFlags(arg) {\n if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n return false;\n }\n let hasAllFlags = true;\n let next;\n const letters = arg.slice(1).split('');\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (!hasAnyFlag(letters[j])) {\n hasAllFlags = false;\n break;\n }\n if ((letters[j + 1] && letters[j + 1] === '=') ||\n next === '-' ||\n (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n break;\n }\n }\n return hasAllFlags;\n }\n function isUnknownOptionAsArg(arg) {\n return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n }\n function isUnknownOption(arg) {\n if (arg.match(negative)) {\n return false;\n }\n if (hasAllShortFlags(arg)) {\n return false;\n }\n const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n const normalFlag = /^-+([^=]+?)$/;\n const flagEndingInHyphen = /^-+([^=]+?)-$/;\n const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n }\n function defaultValue(key) {\n if (!checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts) &&\n `${key}` in defaults) {\n return defaults[key];\n }\n else {\n return defaultForType(guessType(key));\n }\n }\n function defaultForType(type) {\n const def = {\n boolean: true,\n string: '',\n number: undefined,\n array: []\n };\n return def[type];\n }\n function guessType(key) {\n let type = 'boolean';\n if (checkAllAliases(key, flags.strings))\n type = 'string';\n else if (checkAllAliases(key, flags.numbers))\n type = 'number';\n else if (checkAllAliases(key, flags.bools))\n type = 'boolean';\n else if (checkAllAliases(key, flags.arrays))\n type = 'array';\n return type;\n }\n function isUndefined(num) {\n return num === undefined;\n }\n function checkConfiguration() {\n Object.keys(flags.counts).find(key => {\n if (checkAllAliases(key, flags.arrays)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n return true;\n }\n else if (checkAllAliases(key, flags.nargs)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n return true;\n }\n return false;\n });\n }\n return {\n aliases: Object.assign({}, flags.aliases),\n argv: Object.assign(argvReturn, argv),\n configuration: configuration,\n defaulted: Object.assign({}, defaulted),\n error: error,\n newAliases: Object.assign({}, newAliases)\n };\n }\n}\nfunction combineAliases(aliases) {\n const aliasArrays = [];\n const combined = Object.create(null);\n let change = true;\n Object.keys(aliases).forEach(function (key) {\n aliasArrays.push([].concat(aliases[key], key));\n });\n while (change) {\n change = false;\n for (let i = 0; i < aliasArrays.length; i++) {\n for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n const intersect = aliasArrays[i].filter(function (v) {\n return aliasArrays[ii].indexOf(v) !== -1;\n });\n if (intersect.length) {\n aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n aliasArrays.splice(ii, 1);\n change = true;\n break;\n }\n }\n }\n }\n aliasArrays.forEach(function (aliasArray) {\n aliasArray = aliasArray.filter(function (v, i, self) {\n return self.indexOf(v) === i;\n });\n const lastAlias = aliasArray.pop();\n if (lastAlias !== undefined && typeof lastAlias === 'string') {\n combined[lastAlias] = aliasArray;\n }\n });\n return combined;\n}\nfunction increment(orig) {\n return orig !== undefined ? orig + 1 : 1;\n}\nfunction sanitizeKey(key) {\n if (key === '__proto__')\n return '___proto___';\n return key;\n}\n\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n ? Number(process.env.YARGS_MIN_NODE_VERSION)\n : 10;\nif (process && process.version) {\n const major = Number(process.version.match(/v([^.]+)/)[1]);\n if (major < minNodeVersion) {\n throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n }\n}\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n cwd: process.cwd,\n env: () => {\n return env;\n },\n format: util.format,\n normalize: path.normalize,\n resolve: path.resolve,\n require: (path) => {\n if (typeof require !== 'undefined') {\n return require(path);\n }\n else if (path.match(/\\.json$/)) {\n return fs.readFileSync(path, 'utf8');\n }\n else {\n throw Error('only .json config files are supported in ESM');\n }\n }\n});\nconst yargsParser = function Parser(args, opts) {\n const result = parser.parse(args.slice(), opts);\n return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\n\nmodule.exports = yargsParser;\n", "'use strict';\n\nconst isObject = value => typeof value === 'object' && value !== null;\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value) &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tlet [newKey, newValue] = mapper(key, value, object);\n\n\t\tif (options.deep && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue) ?\n\t\t\t\tmapArray(newValue) :\n\t\t\t\tmapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nmodule.exports = (object, mapper, options) => {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn mapObject(object, mapper, options);\n};\n", "'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n", "'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn this._size + oldCacheSize;\n\t}\n}\n\nmodule.exports = QuickLRU;\n", "'use strict';\nconst mapObj = require('map-obj');\nconst camelCase = require('camelcase');\nconst QuickLru = require('quick-lru');\n\nconst has = (array, key) => array.some(x => {\n\tif (typeof x === 'string') {\n\t\treturn x === key;\n\t}\n\n\tx.lastIndex = 0;\n\treturn x.test(key);\n});\n\nconst cache = new QuickLru({maxSize: 100000});\n\n// Reproduces behavior from `map-obj`\nconst isObject = value =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst camelCaseConvert = (input, options) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\toptions = {\n\t\tdeep: false,\n\t\tpascalCase: false,\n\t\t...options\n\t};\n\n\tconst {exclude, pascalCase, stopPaths, deep} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\tconst makeMapper = parentPath => (key, value) => {\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = parentPath === undefined ? key : `${parentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\tvalue = mapObj(value, makeMapper(path));\n\t\t\t}\n\t\t}\n\n\t\tif (!(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tconst ret = camelCase(key, {pascalCase});\n\n\t\t\t\tif (key.length < 100) { // Prevent abuse\n\t\t\t\t\tcache.set(cacheKey, ret);\n\t\t\t\t}\n\n\t\t\t\tkey = ret;\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\treturn mapObj(input, makeMapper(undefined));\n};\n\nmodule.exports = (input, options) => {\n\tif (Array.isArray(input)) {\n\t\treturn Object.keys(input).map(key => camelCaseConvert(input[key], options));\n\t}\n\n\treturn camelCaseConvert(input, options);\n};\n", "'use strict';\nmodule.exports = function (str, sep) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\tsep = typeof sep === 'undefined' ? '_' : sep;\n\n\treturn str\n\t\t.replace(/([a-z\\d])([A-Z])/g, '$1' + sep + '$2')\n\t\t.replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1' + sep + '$2')\n\t\t.toLowerCase();\n};\n", "'use strict';\nmodule.exports = function (obj, cb) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar res = cb(key, obj[key], obj);\n\t\tret[res[0]] = res[1];\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nvar mapObj = require('map-obj');\nvar decamelize = require('decamelize');\n\nmodule.exports = function (input, separator, options) {\n\tif (typeof separator !== 'string') {\n\t\toptions = separator;\n\t\tseparator = null;\n\t}\n\n\toptions = options || {};\n\tseparator = separator || options.separator;\n\tvar exclude = options.exclude || [];\n\n\treturn mapObj(input, function (key, val) {\n\t\tkey = exclude.indexOf(key) === -1 ? decamelize(key, separator) : key;\n\t\treturn [key, val];\n\t});\n};\n", "'use strict';\nmodule.exports = string => string.replace(/^[\\r\\n]+/, '').replace(/[\\r\\n]+$/, '');\nmodule.exports.start = string => string.replace(/^[\\r\\n]+/, '');\nmodule.exports.end = string => string.replace(/[\\r\\n]+$/, '');\n", "'use strict';\nmodule.exports = string => {\n\tconst match = string.match(/^[ \\t]*(?=\\S)/gm);\n\n\tif (!match) {\n\t\treturn 0;\n\t}\n\n\treturn match.reduce((r, a) => Math.min(r, a.length), Infinity);\n};\n", "'use strict';\nconst minIndent = require('min-indent');\n\nmodule.exports = string => {\n\tconst indent = minIndent(string);\n\n\tif (indent === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = new RegExp(`^[ \\\\t]{${indent}}`, 'gm');\n\n\treturn string.replace(regex, '');\n};\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\nconst stripIndent = require('strip-indent');\nconst indentString = require('indent-string');\n\nmodule.exports = (string, count = 0, options) => indentString(stripIndent(string), count, options);\n", "'use strict';\n\nconst pTry = (fn, ...arguments_) => new Promise(resolve => {\n\tresolve(fn(...arguments_));\n});\n\nmodule.exports = pTry;\n// TODO: remove this in the next major version\nmodule.exports.default = pTry;\n", "'use strict';\nconst pTry = require('p-try');\n\nconst pLimit = concurrency => {\n\tif (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {\n\t\treturn Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));\n\t}\n\n\tconst queue = [];\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.length > 0) {\n\t\t\tqueue.shift()();\n\t\t}\n\t};\n\n\tconst run = (fn, resolve, ...args) => {\n\t\tactiveCount++;\n\n\t\tconst result = pTry(fn, ...args);\n\n\t\tresolve(result);\n\n\t\tresult.then(next, next);\n\t};\n\n\tconst enqueue = (fn, resolve, ...args) => {\n\t\tif (activeCount < concurrency) {\n\t\t\trun(fn, resolve, ...args);\n\t\t} else {\n\t\t\tqueue.push(run.bind(null, fn, resolve, ...args));\n\t\t}\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.length\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.length = 0;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn generator;\n};\n\nmodule.exports = pLimit;\nmodule.exports.default = pLimit;\n", "'use strict';\nconst pLimit = require('p-limit');\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nconst pLocate = async (iterable, tester, options) => {\n\toptions = {\n\t\tconcurrency: Infinity,\n\t\tpreserveOrder: true,\n\t\t...options\n\t};\n\n\tconst limit = pLimit(options.concurrency);\n\n\t// Start all the promises concurrently with optional limit\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently\n\tconst checkLimit = pLimit(options.preserveOrder ? 1 : Infinity);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n};\n\nmodule.exports = pLocate;\n// TODO: Remove this for the next major release\nmodule.exports.default = pLocate;\n", "'use strict';\nconst path = require('path');\nconst fs = require('fs');\nconst {promisify} = require('util');\nconst pLocate = require('p-locate');\n\nconst fsStat = promisify(fs.stat);\nconst fsLStat = promisify(fs.lstat);\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile'\n};\n\nfunction checkType({type}) {\n\tif (type in typeMappings) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === undefined || stat[typeMappings[type]]();\n\nmodule.exports = async (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\ttype: 'file',\n\t\tallowSymlinks: true,\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fsStat : fsLStat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFn(path.resolve(options.cwd, path_));\n\t\t\treturn matchType(options.type, stat);\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t}, options);\n};\n\nmodule.exports.sync = (paths, options) => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tallowSymlinks: true,\n\t\ttype: 'file',\n\t\t...options\n\t};\n\tcheckType(options);\n\tconst statFn = options.allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFn(path.resolve(options.cwd, path_));\n\n\t\t\tif (matchType(options.type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch (_) {\n\t\t}\n\t}\n};\n", "'use strict';\nconst fs = require('fs');\nconst {promisify} = require('util');\n\nconst pAccess = promisify(fs.access);\n\nmodule.exports = async path => {\n\ttry {\n\t\tawait pAccess(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports.sync = path => {\n\ttry {\n\t\tfs.accessSync(path);\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n", "'use strict';\nconst path = require('path');\nconst locatePath = require('locate-path');\nconst pathExists = require('path-exists');\n\nconst stop = Symbol('findUp.stop');\n\nmodule.exports = async (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.sync = (name, options = {}) => {\n\tlet directory = path.resolve(options.cwd || '');\n\tconst {root} = path.parse(directory);\n\tconst paths = [].concat(name);\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath.sync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath.sync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === stop) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\treturn path.resolve(directory, foundPath);\n\t\t}\n\n\t\tif (directory === root) {\n\t\t\treturn;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n};\n\nmodule.exports.exists = pathExists;\n\nmodule.exports.sync.exists = pathExists.sync;\n\nmodule.exports.stop = stop;\n", "'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n", "'use strict';\n\nvar util = require('util');\nvar isArrayish = require('is-arrayish');\n\nvar errorEx = function errorEx(name, properties) {\n\tif (!name || name.constructor !== String) {\n\t\tproperties = name || {};\n\t\tname = Error.name;\n\t}\n\n\tvar errorExError = function ErrorEXError(message) {\n\t\tif (!this) {\n\t\t\treturn new ErrorEXError(message);\n\t\t}\n\n\t\tmessage = message instanceof Error\n\t\t\t? message.message\n\t\t\t: (message || this.message);\n\n\t\tError.call(this, message);\n\t\tError.captureStackTrace(this, errorExError);\n\n\t\tthis.name = name;\n\n\t\tObject.defineProperty(this, 'message', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: function () {\n\t\t\t\tvar newMessage = message.split(/\\r?\\n/g);\n\n\t\t\t\tfor (var key in properties) {\n\t\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\t\tif ('message' in modifier) {\n\t\t\t\t\t\tnewMessage = modifier.message(this[key], newMessage) || newMessage;\n\t\t\t\t\t\tif (!isArrayish(newMessage)) {\n\t\t\t\t\t\t\tnewMessage = [newMessage];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newMessage.join('\\n');\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tmessage = v;\n\t\t\t}\n\t\t});\n\n\t\tvar overwrittenStack = null;\n\n\t\tvar stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');\n\t\tvar stackGetter = stackDescriptor.get;\n\t\tvar stackValue = stackDescriptor.value;\n\t\tdelete stackDescriptor.value;\n\t\tdelete stackDescriptor.writable;\n\n\t\tstackDescriptor.set = function (newstack) {\n\t\t\toverwrittenStack = newstack;\n\t\t};\n\n\t\tstackDescriptor.get = function () {\n\t\t\tvar stack = (overwrittenStack || ((stackGetter)\n\t\t\t\t? stackGetter.call(this)\n\t\t\t\t: stackValue)).split(/\\r?\\n+/g);\n\n\t\t\t// starting in Node 7, the stack builder caches the message.\n\t\t\t// just replace it.\n\t\t\tif (!overwrittenStack) {\n\t\t\t\tstack[0] = this.name + ': ' + this.message;\n\t\t\t}\n\n\t\t\tvar lineCount = 1;\n\t\t\tfor (var key in properties) {\n\t\t\t\tif (!properties.hasOwnProperty(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar modifier = properties[key];\n\n\t\t\t\tif ('line' in modifier) {\n\t\t\t\t\tvar line = modifier.line(this[key]);\n\t\t\t\t\tif (line) {\n\t\t\t\t\t\tstack.splice(lineCount++, 0, ' ' + line);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ('stack' in modifier) {\n\t\t\t\t\tmodifier.stack(this[key], stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stack.join('\\n');\n\t\t};\n\n\t\tObject.defineProperty(this, 'stack', stackDescriptor);\n\t};\n\n\tif (Object.setPrototypeOf) {\n\t\tObject.setPrototypeOf(errorExError.prototype, Error.prototype);\n\t\tObject.setPrototypeOf(errorExError, Error);\n\t} else {\n\t\tutil.inherits(errorExError, Error);\n\t}\n\n\treturn errorExError;\n};\n\nerrorEx.append = function (str, def) {\n\treturn {\n\t\tmessage: function (v, message) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\tmessage[0] += ' ' + str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn message;\n\t\t}\n\t};\n};\n\nerrorEx.line = function (str, def) {\n\treturn {\n\t\tline: function (v) {\n\t\t\tv = v || def;\n\n\t\t\tif (v) {\n\t\t\t\treturn str.replace('%s', v.toString());\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t};\n};\n\nmodule.exports = errorEx;\n", "'use strict'\n\nconst hexify = char => {\n const h = char.charCodeAt(0).toString(16).toUpperCase()\n return '0x' + (h.length % 2 ? '0' : '') + h\n}\n\nconst parseError = (e, txt, context) => {\n if (!txt) {\n return {\n message: e.message + ' while parsing empty string',\n position: 0,\n }\n }\n const badToken = e.message.match(/^Unexpected token (.) .*position\\s+(\\d+)/i)\n const errIdx = badToken ? +badToken[2]\n : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1\n : null\n\n const msg = badToken ? e.message.replace(/^Unexpected token ./, `Unexpected token ${\n JSON.stringify(badToken[1])\n } (${hexify(badToken[1])})`)\n : e.message\n\n if (errIdx !== null && errIdx !== undefined) {\n const start = errIdx <= context ? 0\n : errIdx - context\n\n const end = errIdx + context >= txt.length ? txt.length\n : errIdx + context\n\n const slice = (start === 0 ? '' : '...') +\n txt.slice(start, end) +\n (end === txt.length ? '' : '...')\n\n const near = txt === slice ? '' : 'near '\n\n return {\n message: msg + ` while parsing ${near}${JSON.stringify(slice)}`,\n position: errIdx,\n }\n } else {\n return {\n message: msg + ` while parsing '${txt.slice(0, context * 2)}'`,\n position: 0,\n }\n }\n}\n\nclass JSONParseError extends SyntaxError {\n constructor (er, txt, context, caller) {\n context = context || 20\n const metadata = parseError(er, txt, context)\n super(metadata.message)\n Object.assign(this, metadata)\n this.code = 'EJSONPARSE'\n this.systemError = er\n Error.captureStackTrace(this, caller || this.constructor)\n }\n get name () { return this.constructor.name }\n set name (n) {}\n get [Symbol.toStringTag] () { return this.constructor.name }\n}\n\nconst kIndent = Symbol.for('indent')\nconst kNewline = Symbol.for('newline')\n// only respect indentation if we got a line break, otherwise squash it\n// things other than objects and arrays aren't indented, so ignore those\n// Important: in both of these regexps, the $1 capture group is the newline\n// or undefined, and the $2 capture group is the indent, or undefined.\nconst formatRE = /^\\s*[{\\[]((?:\\r?\\n)+)([\\s\\t]*)/\nconst emptyRE = /^(?:\\{\\}|\\[\\])((?:\\r?\\n)+)?$/\n\nconst parseJson = (txt, reviver, context) => {\n const parseText = stripBOM(txt)\n context = context || 20\n try {\n // get the indentation so that we can save it back nicely\n // if the file starts with {\" then we have an indent of '', ie, none\n // otherwise, pick the indentation of the next line after the first \\n\n // If the pattern doesn't match, then it means no indentation.\n // JSON.stringify ignores symbols, so this is reasonably safe.\n // if the string is '{}' or '[]', then use the default 2-space indent.\n const [, newline = '\\n', indent = ' '] = parseText.match(emptyRE) ||\n parseText.match(formatRE) ||\n [, '', '']\n\n const result = JSON.parse(parseText, reviver)\n if (result && typeof result === 'object') {\n result[kNewline] = newline\n result[kIndent] = indent\n }\n return result\n } catch (e) {\n if (typeof txt !== 'string' && !Buffer.isBuffer(txt)) {\n const isEmptyArray = Array.isArray(txt) && txt.length === 0\n throw Object.assign(new TypeError(\n `Cannot parse ${isEmptyArray ? 'an empty array' : String(txt)}`\n ), {\n code: 'EJSONPARSE',\n systemError: e,\n })\n }\n\n throw new JSONParseError(e, parseText, context, parseJson)\n }\n}\n\n// Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n// because the buffer-to-string conversion in `fs.readFileSync()`\n// translates it to FEFF, the UTF-16 BOM.\nconst stripBOM = txt => String(txt).replace(/^\\uFEFF/, '')\n\nmodule.exports = parseJson\nparseJson.JSONParseError = JSONParseError\n\nparseJson.noExceptions = (txt, reviver) => {\n try {\n return JSON.parse(stripBOM(txt), reviver)\n } catch (e) {}\n}\n", "\"use strict\";\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.__esModule = true;\nexports[\"default\"] = LinesAndColumns;\n", "// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierStart = isIdentifierStart;\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08c7\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\u9ffc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7ca\\ua7f5-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf\\u1ac0\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n\n return false;\n}\n\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nfunction isIdentifierName(name) {\n let isFirst = true;\n\n for (let _i = 0, _Array$from = Array.from(name); _i < _Array$from.length; _i++) {\n const char = _Array$from[_i];\n const cp = char.codePointAt(0);\n\n if (isFirst) {\n if (!isIdentifierStart(cp)) {\n return false;\n }\n\n isFirst = false;\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n\n return !isFirst;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isReservedWord = isReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isKeyword = isKeyword;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\n\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\n\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\n\nfunction isKeyword(word) {\n return keywords.has(word);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\n\nvar _identifier = require(\"./identifier\");\n\nvar _keyword = require(\"./keyword\");", "'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n", "'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shouldHighlight = shouldHighlight;\nexports.getChalk = getChalk;\nexports.default = highlight;\n\nvar jsTokensNs = _interopRequireWildcard(require(\"js-tokens\"));\n\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\nfunction getDefs(chalk) {\n return {\n keyword: chalk.cyan,\n capitalized: chalk.yellow,\n jsxIdentifier: chalk.yellow,\n punctuator: chalk.yellow,\n number: chalk.magenta,\n string: chalk.green,\n regex: chalk.magenta,\n comment: chalk.grey,\n invalid: chalk.white.bgRed.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\n{\n const {\n matchToToken\n } = jsTokensNs;\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n const getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {\n return \"keyword\";\n }\n\n if (JSX_TAG.test(token.value) && (text[offset - 1] === \"<\" || text.substr(offset - 2, 2) == \" colorize(str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n\nfunction shouldHighlight(options) {\n return _chalk.default.supportsColor || options.forceColor;\n}\n\nfunction getChalk(options) {\n let chalk = _chalk.default;\n\n if (options.forceColor) {\n chalk = new _chalk.default.constructor({\n enabled: true,\n level: 1\n });\n }\n\n return chalk;\n}\n\nfunction highlight(code, options = {}) {\n if (shouldHighlight(options)) {\n const chalk = getChalk(options);\n const defs = getDefs(chalk);\n return highlightTokens(defs, code);\n } else {\n return code;\n }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = _default;\n\nvar _highlight = _interopRequireWildcard(require(\"@babel/highlight\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nlet deprecationWarningShown = false;\n\nfunction getDefs(chalk) {\n return {\n gutter: chalk.grey,\n marker: chalk.red.bold,\n message: chalk.red.bold\n };\n}\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\nfunction getMarkerLines(loc, source, opts) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return {\n start,\n end,\n markerLines\n };\n}\n\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);\n const chalk = (0, _highlight.getChalk)(opts);\n const defs = getDefs(chalk);\n\n const maybeHighlight = (chalkFn, string) => {\n return highlighted ? chalkFn(string) : string;\n };\n\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end).length;\n const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;\n let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers)].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n }\n }\n\n return [maybeHighlight(defs.marker, \">\"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n if (highlighted) {\n return chalk.reset(frame);\n } else {\n return frame;\n }\n}\n\nfunction _default(rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}", "'use strict';\nconst errorEx = require('error-ex');\nconst fallback = require('json-parse-even-better-errors');\nconst {default: LinesAndColumns} = require('lines-and-columns');\nconst {codeFrameColumns} = require('@babel/code-frame');\n\nconst JSONError = errorEx('JSONError', {\n\tfileName: errorEx.append('in %s'),\n\tcodeFrame: errorEx.append('\\n\\n%s\\n')\n});\n\nconst parseJson = (string, reviver, filename) => {\n\tif (typeof reviver === 'string') {\n\t\tfilename = reviver;\n\t\treviver = null;\n\t}\n\n\ttry {\n\t\ttry {\n\t\t\treturn JSON.parse(string, reviver);\n\t\t} catch (error) {\n\t\t\tfallback(string, reviver);\n\t\t\tthrow error;\n\t\t}\n\t} catch (error) {\n\t\terror.message = error.message.replace(/\\n/g, '');\n\t\tconst indexMatch = error.message.match(/in JSON at position (\\d+) while parsing/);\n\n\t\tconst jsonError = new JSONError(error);\n\t\tif (filename) {\n\t\t\tjsonError.fileName = filename;\n\t\t}\n\n\t\tif (indexMatch && indexMatch.length > 0) {\n\t\t\tconst lines = new LinesAndColumns(string);\n\t\t\tconst index = Number(indexMatch[1]);\n\t\t\tconst location = lines.locationForIndex(index);\n\n\t\t\tconst codeFrame = codeFrameColumns(\n\t\t\t\tstring,\n\t\t\t\t{start: {line: location.line + 1, column: location.column + 1}},\n\t\t\t\t{highlightCode: true}\n\t\t\t);\n\n\t\t\tjsonError.codeFrame = codeFrame;\n\t\t}\n\n\t\tthrow jsonError;\n\t}\n};\n\nparseJson.JSONError = JSONError;\n\nmodule.exports = parseJson;\n", "exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar R = 0\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\nvar NUMERICIDENTIFIERLOOSE = R++\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')'\n\nvar MAINVERSIONLOOSE = R++\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\nvar PRERELEASEIDENTIFIERLOOSE = R++\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))'\n\nvar PRERELEASELOOSE = R++\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?'\n\nsrc[FULL] = '^' + FULLPLAIN + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?'\n\nvar LOOSE = R++\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$'\n\nvar GTLT = R++\nsrc[GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\nvar XRANGEIDENTIFIER = R++\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\nvar XRANGEPLAIN = R++\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGEPLAINLOOSE = R++\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?'\n\nvar XRANGE = R++\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$'\nvar XRANGELOOSE = R++\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++\nsrc[COERCE] = '(?:^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++\nsrc[LONETILDE] = '(?:~>?)'\n\nvar TILDETRIM = R++\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+'\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\nvar TILDE = R++\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'\nvar TILDELOOSE = R++\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++\nsrc[LONECARET] = '(?:\\\\^)'\n\nvar CARETTRIM = R++\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+'\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\nvar CARET = R++\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'\nvar CARETLOOSE = R++\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$'\nvar COMPARATOR = R++\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\nvar HYPHENRANGELOOSE = R++\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[LOOSE] : re[FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1]\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n })\n })\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[TILDELOOSE] : re[TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[CARETLOOSE] : re[CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '')\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n version = new SemVer(version, this.options)\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n var match = version.match(re[COERCE])\n\n if (match == null) {\n return null\n }\n\n return parse(match[1] +\n '.' + (match[2] || '0') +\n '.' + (match[3] || '0'))\n}\n", "'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n", "'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n", "'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n", "/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['-License', '']\n]\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n", "var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN \"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^[/]([^/]+)[/]((?!.*(\\/-\\/|\\/repository\\/archive\\.tar\\.gz\\?=.*|\\/repository\\/[^/]+\\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n var keys = Object.keys(source)\n var i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nvar cache = {}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!(key in cache)) {\n cache[key] = fromUrl(giturl, opts)\n }\n\n return cache[key]\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(new RegExp('^([^:]+):(?:(?:[^@:]+(?:[^@]+)?@)?([^/]*))[/](.+?)(?:[.]git)?($|#)'))\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3])\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n // If we don't have url.URL, then sorry, this is just not fixable.\n // This affects Node <= 6.12.\n if (legacy.auth && typeof url.URL === 'function') {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n var authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = function () {\n // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n var origPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = function (_, stack) { return stack; };\n var stack = (new Error()).stack;\n Error.prepareStackTrace = origPrepareStackTrace;\n return stack[2].getFileName();\n};\n", "'use strict';\n\nvar isWindows = process.platform === 'win32';\n\n// Regex to split a windows path into three parts: [*, device, slash,\n// tail] windows-only\nvar splitDeviceRe =\n /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\n// Regex to split the tail part of the above into [*, dir, basename, ext]\nvar splitTailRe =\n /^([\\s\\S]*?)((?:\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))(?:[\\\\\\/]*)$/;\n\nvar win32 = {};\n\n// Function to split a filename into [root, dir, basename, ext]\nfunction win32SplitPath(filename) {\n // Separate device+slash from tail\n var result = splitDeviceRe.exec(filename),\n device = (result[1] || '') + (result[2] || ''),\n tail = result[3] || '';\n // Split the tail into dir, basename and extension\n var result2 = splitTailRe.exec(tail),\n dir = result2[1],\n basename = result2[2],\n ext = result2[3];\n return [device, dir, basename, ext];\n}\n\nwin32.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n\nposix.parse = function(pathString) {\n if (typeof pathString !== 'string') {\n throw new TypeError(\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\n );\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\n\n\nif (isWindows)\n module.exports = win32.parse;\nelse /* posix */\n module.exports = posix.parse;\n\nmodule.exports.posix = posix.parse;\nmodule.exports.win32 = win32.parse;\n", "var path = require('path');\nvar parse = path.parse || require('path-parse');\n\nvar getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {\n var prefix = '/';\n if ((/^([A-Za-z]:)/).test(absoluteStart)) {\n prefix = '';\n } else if ((/^\\\\\\\\/).test(absoluteStart)) {\n prefix = '\\\\\\\\';\n }\n\n var paths = [absoluteStart];\n var parsed = parse(absoluteStart);\n while (parsed.dir !== paths[paths.length - 1]) {\n paths.push(parsed.dir);\n parsed = parse(parsed.dir);\n }\n\n return paths.reduce(function (dirs, aPath) {\n return dirs.concat(modules.map(function (moduleDir) {\n return path.resolve(prefix, aPath, moduleDir);\n }));\n }, []);\n};\n\nmodule.exports = function nodeModulesPaths(start, opts, request) {\n var modules = opts && opts.moduleDirectory\n ? [].concat(opts.moduleDirectory)\n : ['node_modules'];\n\n if (opts && typeof opts.paths === 'function') {\n return opts.paths(\n request,\n start,\n function () { return getNodeModulesDirs(start, modules); },\n opts\n );\n }\n\n var dirs = getNodeModulesDirs(start, modules);\n return opts && opts.paths ? dirs.concat(opts.paths) : dirs;\n};\n", "module.exports = function (x, opts) {\n /**\n * This file is purposefully a passthrough. It's expected that third-party\n * environments will override it at runtime in order to inject special logic\n * into `resolve` (by manipulating the options). One such example is the PnP\n * code path in Yarn.\n */\n\n return opts || {};\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar has = require('has');\n\nfunction specifierIncluded(current, specifier) {\n\tvar nodeParts = current.split('.');\n\tvar parts = specifier.split(' ');\n\tvar op = parts.length > 1 ? parts[0] : '=';\n\tvar versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n\tfor (var i = 0; i < 3; ++i) {\n\t\tvar cur = parseInt(nodeParts[i] || 0, 10);\n\t\tvar ver = parseInt(versionParts[i] || 0, 10);\n\t\tif (cur === ver) {\n\t\t\tcontinue; // eslint-disable-line no-restricted-syntax, no-continue\n\t\t}\n\t\tif (op === '<') {\n\t\t\treturn cur < ver;\n\t\t}\n\t\tif (op === '>=') {\n\t\t\treturn cur >= ver;\n\t\t}\n\t\treturn false;\n\t}\n\treturn op === '>=';\n}\n\nfunction matchesRange(current, range) {\n\tvar specifiers = range.split(/ ?&& ?/);\n\tif (specifiers.length === 0) {\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < specifiers.length; ++i) {\n\t\tif (!specifierIncluded(current, specifiers[i])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction versionIncluded(nodeVersion, specifierValue) {\n\tif (typeof specifierValue === 'boolean') {\n\t\treturn specifierValue;\n\t}\n\n\tvar current = typeof nodeVersion === 'undefined'\n\t\t? process.versions && process.versions.node && process.versions.node\n\t\t: nodeVersion;\n\n\tif (typeof current !== 'string') {\n\t\tthrow new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required');\n\t}\n\n\tif (specifierValue && typeof specifierValue === 'object') {\n\t\tfor (var i = 0; i < specifierValue.length; ++i) {\n\t\t\tif (matchesRange(current, specifierValue[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\treturn matchesRange(current, specifierValue);\n}\n\nvar data = require('./core.json');\n\nmodule.exports = function isCore(x, nodeVersion) {\n\treturn has(data, x) && versionIncluded(nodeVersion, data[x]);\n};\n", "var fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\nvar isCore = require('is-core-module');\n\nvar realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;\n\nvar defaultIsFile = function isFile(file, cb) {\n fs.stat(file, function (err, stat) {\n if (!err) {\n return cb(null, stat.isFile() || stat.isFIFO());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultIsDir = function isDirectory(dir, cb) {\n fs.stat(dir, function (err, stat) {\n if (!err) {\n return cb(null, stat.isDirectory());\n }\n if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);\n return cb(err);\n });\n};\n\nvar defaultRealpath = function realpath(x, cb) {\n realpathFS(x, function (realpathErr, realPath) {\n if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);\n else cb(null, realpathErr ? x : realPath);\n });\n};\n\nvar maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {\n if (opts && opts.preserveSymlinks === false) {\n realpath(x, cb);\n } else {\n cb(null, x);\n }\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolve(x, options, callback) {\n var cb = callback;\n var opts = options;\n if (typeof options === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof x !== 'string') {\n var err = new TypeError('Path must be a string.');\n return process.nextTick(function () {\n cb(err);\n });\n }\n\n opts = normalizeOptions(x, opts);\n\n var isFile = opts.isFile || defaultIsFile;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var readFile = opts.readFile || fs.readFile;\n var realpath = opts.realpath || defaultRealpath;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = path.resolve(basedir);\n\n maybeRealpath(\n realpath,\n absoluteStart,\n opts,\n function (err, realStart) {\n if (err) cb(err);\n else init(realStart);\n }\n );\n\n var res;\n function init(basedir) {\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n res = path.resolve(basedir, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n if ((/\\/$/).test(x) && res === basedir) {\n loadAsDirectory(res, opts.package, onfile);\n } else loadAsFile(res, opts.package, onfile);\n } else if (includeCoreModules && isCore(x)) {\n return cb(null, x);\n } else loadNodeModules(x, basedir, function (err, n, pkg) {\n if (err) cb(err);\n else if (n) {\n return maybeRealpath(realpath, n, opts, function (err, realN) {\n if (err) {\n cb(err);\n } else {\n cb(null, realN, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function onfile(err, m, pkg) {\n if (err) cb(err);\n else if (m) cb(null, m, pkg);\n else loadAsDirectory(res, function (err, d, pkg) {\n if (err) cb(err);\n else if (d) {\n maybeRealpath(realpath, d, opts, function (err, realD) {\n if (err) {\n cb(err);\n } else {\n cb(null, realD, pkg);\n }\n });\n } else {\n var moduleError = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n moduleError.code = 'MODULE_NOT_FOUND';\n cb(moduleError);\n }\n });\n }\n\n function loadAsFile(x, thePackage, callback) {\n var loadAsFilePackage = thePackage;\n var cb = callback;\n if (typeof loadAsFilePackage === 'function') {\n cb = loadAsFilePackage;\n loadAsFilePackage = undefined;\n }\n\n var exts = [''].concat(extensions);\n load(exts, x, loadAsFilePackage);\n\n function load(exts, x, loadPackage) {\n if (exts.length === 0) return cb(null, undefined, loadPackage);\n var file = x + exts[0];\n\n var pkg = loadPackage;\n if (pkg) onpkg(null, pkg);\n else loadpkg(path.dirname(file), onpkg);\n\n function onpkg(err, pkg_, dir) {\n pkg = pkg_;\n if (err) return cb(err);\n if (dir && pkg && opts.pathFilter) {\n var rfile = path.relative(dir, file);\n var rel = rfile.slice(0, rfile.length - exts[0].length);\n var r = opts.pathFilter(pkg, x, rel);\n if (r) return load(\n [''].concat(extensions.slice()),\n path.resolve(dir, r),\n pkg\n );\n }\n isFile(file, onex);\n }\n function onex(err, ex) {\n if (err) return cb(err);\n if (ex) return cb(null, file, pkg);\n load(exts.slice(1), x, pkg);\n }\n }\n }\n\n function loadpkg(dir, cb) {\n if (dir === '' || dir === '/') return cb(null);\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return cb(null);\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return cb(null);\n\n maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return loadpkg(path.dirname(dir), cb);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n // on err, ex is false\n if (!ex) return loadpkg(path.dirname(dir), cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) cb(err);\n try { var pkg = JSON.parse(body); } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n cb(null, pkg, dir);\n });\n });\n });\n }\n\n function loadAsDirectory(x, loadAsDirectoryPackage, callback) {\n var cb = callback;\n var fpkg = loadAsDirectoryPackage;\n if (typeof fpkg === 'function') {\n cb = fpkg;\n fpkg = opts.package;\n }\n\n maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {\n if (unwrapErr) return cb(unwrapErr);\n var pkgfile = path.join(pkgdir, 'package.json');\n isFile(pkgfile, function (err, ex) {\n if (err) return cb(err);\n if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);\n\n readFile(pkgfile, function (err, body) {\n if (err) return cb(err);\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n pkg = opts.packageFilter(pkg, pkgfile);\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n return cb(mainError);\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);\n\n var dir = path.resolve(x, pkg.main);\n loadAsDirectory(dir, pkg, function (err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n loadAsFile(path.join(x, 'index'), pkg, cb);\n });\n });\n return;\n }\n\n loadAsFile(path.join(x, '/index'), pkg, cb);\n });\n });\n });\n }\n\n function processDirs(cb, dirs) {\n if (dirs.length === 0) return cb(null, undefined);\n var dir = dirs[0];\n\n isDirectory(path.dirname(dir), isdir);\n\n function isdir(err, isdir) {\n if (err) return cb(err);\n if (!isdir) return processDirs(cb, dirs.slice(1));\n loadAsFile(dir, opts.package, onfile);\n }\n\n function onfile(err, m, pkg) {\n if (err) return cb(err);\n if (m) return cb(null, m, pkg);\n loadAsDirectory(dir, opts.package, ondir);\n }\n\n function ondir(err, n, pkg) {\n if (err) return cb(err);\n if (n) return cb(null, n, pkg);\n processDirs(cb, dirs.slice(1));\n }\n }\n function loadNodeModules(x, start, cb) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n processDirs(\n cb,\n packageIterator ? packageIterator(x, start, thunk, opts) : thunk()\n );\n }\n};\n", "var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];\n\nfunction specifierIncluded(specifier) {\n var parts = specifier.split(' ');\n var op = parts.length > 1 ? parts[0] : '=';\n var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');\n\n for (var i = 0; i < 3; ++i) {\n var cur = parseInt(current[i] || 0, 10);\n var ver = parseInt(versionParts[i] || 0, 10);\n if (cur === ver) {\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n }\n if (op === '<') {\n return cur < ver;\n } else if (op === '>=') {\n return cur >= ver;\n } else {\n return false;\n }\n }\n return op === '>=';\n}\n\nfunction matchesRange(range) {\n var specifiers = range.split(/ ?&& ?/);\n if (specifiers.length === 0) { return false; }\n for (var i = 0; i < specifiers.length; ++i) {\n if (!specifierIncluded(specifiers[i])) { return false; }\n }\n return true;\n}\n\nfunction versionIncluded(specifierValue) {\n if (typeof specifierValue === 'boolean') { return specifierValue; }\n if (specifierValue && typeof specifierValue === 'object') {\n for (var i = 0; i < specifierValue.length; ++i) {\n if (matchesRange(specifierValue[i])) { return true; }\n }\n return false;\n }\n return matchesRange(specifierValue);\n}\n\nvar data = require('./core.json');\n\nvar core = {};\nfor (var mod in data) { // eslint-disable-line no-restricted-syntax\n if (Object.prototype.hasOwnProperty.call(data, mod)) {\n core[mod] = versionIncluded(data[mod]);\n }\n}\nmodule.exports = core;\n", "var isCoreModule = require('is-core-module');\n\nmodule.exports = function isCore(x) {\n return isCoreModule(x);\n};\n", "var isCore = require('is-core-module');\nvar fs = require('fs');\nvar path = require('path');\nvar caller = require('./caller');\nvar nodeModulesPaths = require('./node-modules-paths');\nvar normalizeOptions = require('./normalize-options');\n\nvar realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;\n\nvar defaultIsFile = function isFile(file) {\n try {\n var stat = fs.statSync(file);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isFile() || stat.isFIFO();\n};\n\nvar defaultIsDir = function isDirectory(dir) {\n try {\n var stat = fs.statSync(dir);\n } catch (e) {\n if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;\n throw e;\n }\n return stat.isDirectory();\n};\n\nvar defaultRealpathSync = function realpathSync(x) {\n try {\n return realpathFS(x);\n } catch (realpathErr) {\n if (realpathErr.code !== 'ENOENT') {\n throw realpathErr;\n }\n }\n return x;\n};\n\nvar maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {\n if (opts && opts.preserveSymlinks === false) {\n return realpathSync(x);\n }\n return x;\n};\n\nvar getPackageCandidates = function getPackageCandidates(x, start, opts) {\n var dirs = nodeModulesPaths(start, opts, x);\n for (var i = 0; i < dirs.length; i++) {\n dirs[i] = path.join(dirs[i], x);\n }\n return dirs;\n};\n\nmodule.exports = function resolveSync(x, options) {\n if (typeof x !== 'string') {\n throw new TypeError('Path must be a string.');\n }\n var opts = normalizeOptions(x, options);\n\n var isFile = opts.isFile || defaultIsFile;\n var readFileSync = opts.readFileSync || fs.readFileSync;\n var isDirectory = opts.isDirectory || defaultIsDir;\n var realpathSync = opts.realpathSync || defaultRealpathSync;\n var packageIterator = opts.packageIterator;\n\n var extensions = opts.extensions || ['.js'];\n var includeCoreModules = opts.includeCoreModules !== false;\n var basedir = opts.basedir || path.dirname(caller());\n var parent = opts.filename || basedir;\n\n opts.paths = opts.paths || [];\n\n // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory\n var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);\n\n if ((/^(?:\\.\\.?(?:\\/|$)|\\/|([A-Za-z]:)?[/\\\\])/).test(x)) {\n var res = path.resolve(absoluteStart, x);\n if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';\n var m = loadAsFileSync(res) || loadAsDirectorySync(res);\n if (m) return maybeRealpathSync(realpathSync, m, opts);\n } else if (includeCoreModules && isCore(x)) {\n return x;\n } else {\n var n = loadNodeModulesSync(x, absoluteStart);\n if (n) return maybeRealpathSync(realpathSync, n, opts);\n }\n\n var err = new Error(\"Cannot find module '\" + x + \"' from '\" + parent + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n\n function loadAsFileSync(x) {\n var pkg = loadpkg(path.dirname(x));\n\n if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {\n var rfile = path.relative(pkg.dir, x);\n var r = opts.pathFilter(pkg.pkg, x, rfile);\n if (r) {\n x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign\n }\n }\n\n if (isFile(x)) {\n return x;\n }\n\n for (var i = 0; i < extensions.length; i++) {\n var file = x + extensions[i];\n if (isFile(file)) {\n return file;\n }\n }\n }\n\n function loadpkg(dir) {\n if (dir === '' || dir === '/') return;\n if (process.platform === 'win32' && (/^\\w:[/\\\\]*$/).test(dir)) {\n return;\n }\n if ((/[/\\\\]node_modules[/\\\\]*$/).test(dir)) return;\n\n var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');\n\n if (!isFile(pkgfile)) {\n return loadpkg(path.dirname(dir));\n }\n\n var body = readFileSync(pkgfile);\n\n try {\n var pkg = JSON.parse(body);\n } catch (jsonErr) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment\n }\n\n return { pkg: pkg, dir: dir };\n }\n\n function loadAsDirectorySync(x) {\n var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');\n if (isFile(pkgfile)) {\n try {\n var body = readFileSync(pkgfile, 'UTF8');\n var pkg = JSON.parse(body);\n } catch (e) {}\n\n if (pkg && opts.packageFilter) {\n // v2 will pass pkgfile\n pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment\n }\n\n if (pkg && pkg.main) {\n if (typeof pkg.main !== 'string') {\n var mainError = new TypeError('package \u201C' + pkg.name + '\u201D `main` must be a string');\n mainError.code = 'INVALID_PACKAGE_MAIN';\n throw mainError;\n }\n if (pkg.main === '.' || pkg.main === './') {\n pkg.main = 'index';\n }\n try {\n var m = loadAsFileSync(path.resolve(x, pkg.main));\n if (m) return m;\n var n = loadAsDirectorySync(path.resolve(x, pkg.main));\n if (n) return n;\n } catch (e) {}\n }\n }\n\n return loadAsFileSync(path.join(x, '/index'));\n }\n\n function loadNodeModulesSync(x, start) {\n var thunk = function () { return getPackageCandidates(x, start, opts); };\n var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();\n\n for (var i = 0; i < dirs.length; i++) {\n var dir = dirs[i];\n if (isDirectory(path.dirname(dir))) {\n var m = loadAsFileSync(dir);\n if (m) return m;\n var n = loadAsDirectorySync(dir);\n if (n) return n;\n }\n }\n }\n};\n", "var async = require('./lib/async');\nasync.core = require('./lib/core');\nasync.isCore = require('./lib/is-core');\nasync.sync = require('./lib/sync');\n\nmodule.exports = async;\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst {promisify} = require('util');\nconst fs = require('fs');\nconst path = require('path');\nconst parseJson = require('parse-json');\n\nconst readFileAsync = promisify(fs.readFile);\n\nmodule.exports = async options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(await readFileAsync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n\nmodule.exports.sync = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tnormalize: true,\n\t\t...options\n\t};\n\n\tconst filePath = path.resolve(options.cwd, 'package.json');\n\tconst json = parseJson(fs.readFileSync(filePath, 'utf8'));\n\n\tif (options.normalize) {\n\t\trequire('normalize-package-data')(json);\n\t}\n\n\treturn json;\n};\n", "'use strict';\nconst path = require('path');\nconst findUp = require('find-up');\nconst readPkg = require('read-pkg');\n\nmodule.exports = async options => {\n\tconst filePath = await findUp('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: await readPkg({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n\nmodule.exports.sync = options => {\n\tconst filePath = findUp.sync('package.json', options);\n\n\tif (!filePath) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tpackageJson: readPkg.sync({...options, cwd: path.dirname(filePath)}),\n\t\tpath: filePath\n\t};\n};\n", "'use strict';\nconst util = require('util');\n\nlet installed = false;\n\nconst hardRejection = (log = console.error) => {\n\tif (installed) {\n\t\treturn;\n\t}\n\n\tinstalled = true;\n\n\tprocess.on('unhandledRejection', error => {\n\t\tif (!(error instanceof Error)) {\n\t\t\terror = new Error(`Promise rejected with value: ${util.inspect(error)}`);\n\t\t}\n\n\t\tlog(error.stack);\n\t\tprocess.exit(1);\n\t});\n};\n\nmodule.exports = hardRejection;\n// TODO: Remove this for the next major release\nmodule.exports.default = hardRejection;\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\nmodule.exports = {\n SEMVER_SPEC_VERSION,\n MAX_LENGTH,\n MAX_SAFE_INTEGER,\n MAX_SAFE_COMPONENT_LENGTH\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst createToken = (name, value, isGlobal) => {\n const index = R++\n debug(index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*')\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\.0\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\.0\\.0-0\\\\s*$')\n", "// parse out just the options we care about so we always get a consistent\n// obj with keys in a consistent order.\nconst opts = ['includePrerelease', 'loose', 'rtl']\nconst parseOptions = options =>\n !options ? {}\n : typeof options !== 'object' ? { loose: true }\n : opts.filter(k => options[k]).reduce((options, k) => {\n options[k] = true\n return options\n }, {})\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.format()\n this.raw = this.version\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const {MAX_LENGTH} = require('../internal/constants')\nconst { re, t } = require('../internal/re')\nconst SemVer = require('../classes/semver')\n\nconst parseOptions = require('../internal/parse-options')\nconst parse = (version, options) => {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n const r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n", "const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier) => {\n if (typeof (options) === 'string') {\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(version, options).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const parse = require('./parse')\nconst eq = require('./eq')\n\nconst diff = (version1, version2) => {\n if (eq(version1, version2)) {\n return null\n } else {\n const v1 = parse(version1)\n const v2 = parse(version2)\n const hasPre = v1.prerelease.length || v2.prerelease.length\n const prefix = hasPre ? 'pre' : ''\n const defaultResult = hasPre ? 'prerelease' : ''\n for (const key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst {re, t} = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null)\n return null\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range\n .split(/\\s*\\|\\|\\s*/)\n // map the range to a 2d array of comparators\n .map(range => this.parseRange(range.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${range}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0)\n this.set = [first]\n else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => {\n return comps.join(' ').trim()\n })\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n range = range.trim()\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts = Object.keys(this.options).join(',')\n const memoKey = `parseRange:${memoOpts}:${range}`\n const cached = cache.get(memoKey)\n if (cached)\n return cached\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n // in loose mode, throw out any that are not valid comparators\n .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)\n .map(comp => new Comparator(comp, this.options))\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const l = rangeList.length\n const rangeMap = new Map()\n for (const comp of rangeList) {\n if (isNullSet(comp))\n return [comp]\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has(''))\n rangeMap.delete('')\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace\n} = require('../internal/re')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\nconst replaceTildes = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceTilde(comp, options)\n }).join(' ')\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\nconst replaceCarets = (comp, options) =>\n comp.trim().split(/\\s+/).map((comp) => {\n return replaceCaret(comp, options)\n }).join(' ')\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map((comp) => {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<')\n pr = '-0'\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp.trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return (`${from} ${to}`).trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n const sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n const sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n const sameSemVer = this.semver.version === comp.semver.version\n const differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n const oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<')\n const oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>')\n\n return (\n sameDirectionIncreasing ||\n sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan ||\n oppositeDirectionsGreaterThan\n )\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst {re, t} = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n", "const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin)))\n minver = setMin\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst {ANY} = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n", "// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\nmodule.exports = intersects\n", "// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let min = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!min)\n min = version\n } else {\n if (prev) {\n set.push([min, prev])\n }\n prev = null\n min = null\n }\n }\n if (min)\n set.push([min, null])\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max)\n ranges.push(min)\n else if (!max && min === v[0])\n ranges.push('*')\n else if (!max)\n ranges.push(`>=${min}`)\n else if (min === v[0])\n ranges.push(`<=${max}`)\n else\n ranges.push(`${min} - ${max}`)\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n", "const Range = require('../classes/range.js')\nconst { ANY } = require('../classes/comparator.js')\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else return false\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If any C is a = range, and GT or LT are set, return false\n// - Else return true\n\nconst subset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub)\n continue OUTER\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull)\n return false\n }\n return true\n}\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom)\n return true\n\n if (sub.length === 1 && sub[0].semver === ANY)\n return dom.length === 1 && dom[0].semver === ANY\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=')\n gt = higherGT(gt, c, options)\n else if (c.operator === '<' || c.operator === '<=')\n lt = lowerLT(lt, c, options)\n else\n eqSet.add(c.semver)\n }\n\n if (eqSet.size > 1)\n return null\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0)\n return null\n else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))\n return null\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options))\n return null\n\n if (lt && !satisfies(eq, String(lt), options))\n return null\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options))\n return false\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt)\n return false\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))\n return false\n }\n if (lt) {\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt)\n return false\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))\n return false\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0)\n return false\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0)\n return false\n\n if (lt && hasDomGT && !gt && gtltComp !== 0)\n return false\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a)\n return b\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n", "// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nmodule.exports = {\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,\n SemVer: require('./classes/semver'),\n compareIdentifiers: require('./internal/identifiers').compareIdentifiers,\n rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,\n parse: require('./functions/parse'),\n valid: require('./functions/valid'),\n clean: require('./functions/clean'),\n inc: require('./functions/inc'),\n diff: require('./functions/diff'),\n major: require('./functions/major'),\n minor: require('./functions/minor'),\n patch: require('./functions/patch'),\n prerelease: require('./functions/prerelease'),\n compare: require('./functions/compare'),\n rcompare: require('./functions/rcompare'),\n compareLoose: require('./functions/compare-loose'),\n compareBuild: require('./functions/compare-build'),\n sort: require('./functions/sort'),\n rsort: require('./functions/rsort'),\n gt: require('./functions/gt'),\n lt: require('./functions/lt'),\n eq: require('./functions/eq'),\n neq: require('./functions/neq'),\n gte: require('./functions/gte'),\n lte: require('./functions/lte'),\n cmp: require('./functions/cmp'),\n coerce: require('./functions/coerce'),\n Comparator: require('./classes/comparator'),\n Range: require('./classes/range'),\n satisfies: require('./functions/satisfies'),\n toComparators: require('./ranges/to-comparators'),\n maxSatisfying: require('./ranges/max-satisfying'),\n minSatisfying: require('./ranges/min-satisfying'),\n minVersion: require('./ranges/min-version'),\n validRange: require('./ranges/valid'),\n outside: require('./ranges/outside'),\n gtr: require('./ranges/gtr'),\n ltr: require('./ranges/ltr'),\n intersects: require('./ranges/intersects'),\n simplifyRange: require('./ranges/simplify'),\n subset: require('./ranges/subset'),\n}\n", "'use strict'\n\nvar gitHosts = module.exports = {\n github: {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'github.com',\n 'treepath': 'tree',\n 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}'\n },\n bitbucket: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'bitbucket.org',\n 'treepath': 'src',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz'\n },\n gitlab: {\n 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gitlab.com',\n 'treepath': 'tree',\n 'bugstemplate': 'https://{domain}/{user}/{project}/issues',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}',\n 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}',\n 'pathmatch': /^\\/([^/]+)\\/((?!.*(\\/-\\/|\\/repository(\\/[^/]+)?\\/archive\\.tar\\.gz)).*?)(?:\\.git|\\/)?$/\n },\n gist: {\n 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ],\n 'domain': 'gist.github.com',\n 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{7,})(?:[.]git)?$/,\n 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}',\n 'bugstemplate': 'https://{domain}/{project}',\n 'gittemplate': 'git://{domain}/{project}.git{#committish}',\n 'sshtemplate': 'git@{domain}:/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{project}{/committish}',\n 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}',\n 'docstemplate': 'https://{domain}/{project}{/committish}',\n 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}',\n 'shortcuttemplate': '{type}:{project}{#committish}',\n 'pathtemplate': '{project}{#committish}',\n 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}',\n 'hashformat': function (fragment) {\n return 'file-' + formatHashFragment(fragment)\n }\n }\n}\n\nvar gitHostDefaults = {\n 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}',\n 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',\n 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}',\n 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}',\n 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme',\n 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',\n 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}',\n 'shortcuttemplate': '{type}:{user}/{project}{#committish}',\n 'pathtemplate': '{user}/{project}{#committish}',\n 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/,\n 'hashformat': formatHashFragment\n}\n\nObject.keys(gitHosts).forEach(function (name) {\n Object.keys(gitHostDefaults).forEach(function (key) {\n if (gitHosts[name][key]) return\n gitHosts[name][key] = gitHostDefaults[key]\n })\n gitHosts[name].protocols_re = RegExp('^(' +\n gitHosts[name].protocols.map(function (protocol) {\n return protocol.replace(/([\\\\+*{}()[\\]$^|])/g, '\\\\$1')\n }).join('|') + '):$')\n})\n\nfunction formatHashFragment (fragment) {\n return fragment.toLowerCase().replace(/^\\W+|\\/|\\W+$/g, '').replace(/\\W+/g, '-')\n}\n", "'use strict'\nvar gitHosts = require('./git-host-info.js')\n/* eslint-disable node/no-deprecated-api */\n\n// copy-pasta util._extend from node's source, to avoid pulling\n// the whole util module into peoples' webpack bundles.\n/* istanbul ignore next */\nvar extend = Object.assign || function _extend (target, source) {\n // Don't do anything if source isn't an object\n if (source === null || typeof source !== 'object') return target\n\n const keys = Object.keys(source)\n let i = keys.length\n while (i--) {\n target[keys[i]] = source[keys[i]]\n }\n return target\n}\n\nmodule.exports = GitHost\nfunction GitHost (type, user, auth, project, committish, defaultRepresentation, opts) {\n var gitHostInfo = this\n gitHostInfo.type = type\n Object.keys(gitHosts[type]).forEach(function (key) {\n gitHostInfo[key] = gitHosts[type][key]\n })\n gitHostInfo.user = user\n gitHostInfo.auth = auth\n gitHostInfo.project = project\n gitHostInfo.committish = committish\n gitHostInfo.default = defaultRepresentation\n gitHostInfo.opts = opts || {}\n}\n\nGitHost.prototype.hash = function () {\n return this.committish ? '#' + this.committish : ''\n}\n\nGitHost.prototype._fill = function (template, opts) {\n if (!template) return\n var vars = extend({}, opts)\n vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : ''\n opts = extend(extend({}, this.opts), opts)\n var self = this\n Object.keys(this).forEach(function (key) {\n if (self[key] != null && vars[key] == null) vars[key] = self[key]\n })\n var rawAuth = vars.auth\n var rawcommittish = vars.committish\n var rawFragment = vars.fragment\n var rawPath = vars.path\n var rawProject = vars.project\n Object.keys(vars).forEach(function (key) {\n var value = vars[key]\n if ((key === 'path' || key === 'project') && typeof value === 'string') {\n vars[key] = value.split('/').map(function (pathComponent) {\n return encodeURIComponent(pathComponent)\n }).join('/')\n } else if (key !== 'domain') {\n vars[key] = encodeURIComponent(value)\n }\n })\n vars['auth@'] = rawAuth ? rawAuth + '@' : ''\n vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : ''\n vars.fragment = vars.fragment ? vars.fragment : ''\n vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : ''\n vars['/path'] = vars.path ? '/' + vars.path : ''\n vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/')\n if (opts.noCommittish) {\n vars['#committish'] = ''\n vars['/tree/committish'] = ''\n vars['/committish'] = ''\n vars.committish = ''\n } else {\n vars['#committish'] = rawcommittish ? '#' + rawcommittish : ''\n vars['/tree/committish'] = vars.committish\n ? '/' + vars.treepath + '/' + vars.committish\n : ''\n vars['/committish'] = vars.committish ? '/' + vars.committish : ''\n vars.committish = vars.committish || 'master'\n }\n var res = template\n Object.keys(vars).forEach(function (key) {\n res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key])\n })\n if (opts.noGitPlus) {\n return res.replace(/^git[+]/, '')\n } else {\n return res\n }\n}\n\nGitHost.prototype.ssh = function (opts) {\n return this._fill(this.sshtemplate, opts)\n}\n\nGitHost.prototype.sshurl = function (opts) {\n return this._fill(this.sshurltemplate, opts)\n}\n\nGitHost.prototype.browse = function (P, F, opts) {\n if (typeof P === 'string') {\n if (typeof F !== 'string') {\n opts = F\n F = null\n }\n return this._fill(this.browsefiletemplate, extend({\n fragment: F,\n path: P\n }, opts))\n } else {\n return this._fill(this.browsetemplate, P)\n }\n}\n\nGitHost.prototype.docs = function (opts) {\n return this._fill(this.docstemplate, opts)\n}\n\nGitHost.prototype.bugs = function (opts) {\n return this._fill(this.bugstemplate, opts)\n}\n\nGitHost.prototype.https = function (opts) {\n return this._fill(this.httpstemplate, opts)\n}\n\nGitHost.prototype.git = function (opts) {\n return this._fill(this.gittemplate, opts)\n}\n\nGitHost.prototype.shortcut = function (opts) {\n return this._fill(this.shortcuttemplate, opts)\n}\n\nGitHost.prototype.path = function (opts) {\n return this._fill(this.pathtemplate, opts)\n}\n\nGitHost.prototype.tarball = function (opts_) {\n var opts = extend({}, opts_, { noCommittish: false })\n return this._fill(this.tarballtemplate, opts)\n}\n\nGitHost.prototype.file = function (P, opts) {\n return this._fill(this.filetemplate, extend({ path: P }, opts))\n}\n\nGitHost.prototype.getDefaultRepresentation = function () {\n return this.default\n}\n\nGitHost.prototype.toString = function (opts) {\n if (this.default && typeof this[this.default] === 'function') return this[this.default](opts)\n return this.sshurl(opts)\n}\n", "'use strict'\nvar url = require('url')\nvar gitHosts = require('./git-host-info.js')\nvar GitHost = module.exports = require('./git-host.js')\nvar LRU = require('lru-cache')\nvar cache = new LRU({max: 1000})\n\nvar protocolToRepresentationMap = {\n 'git+ssh:': 'sshurl',\n 'git+https:': 'https',\n 'ssh:': 'sshurl',\n 'git:': 'git'\n}\n\nfunction protocolToRepresentation (protocol) {\n return protocolToRepresentationMap[protocol] || protocol.slice(0, -1)\n}\n\nvar authProtocols = {\n 'git:': true,\n 'https:': true,\n 'git+https:': true,\n 'http:': true,\n 'git+http:': true\n}\n\nmodule.exports.fromUrl = function (giturl, opts) {\n if (typeof giturl !== 'string') return\n var key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n cache.set(key, fromUrl(giturl, opts))\n }\n\n return cache.get(key)\n}\n\nfunction fromUrl (giturl, opts) {\n if (giturl == null || giturl === '') return\n var url = fixupUnqualifiedGist(\n isGitHubShorthand(giturl) ? 'github:' + giturl : giturl\n )\n var parsed = parseGitUrl(url)\n var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\\/)?([^#]+)/)\n var matches = Object.keys(gitHosts).map(function (gitHostName) {\n try {\n var gitHostInfo = gitHosts[gitHostName]\n var auth = null\n if (parsed.auth && authProtocols[parsed.protocol]) {\n auth = parsed.auth\n }\n var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null\n var user = null\n var project = null\n var defaultRepresentation = null\n if (shortcutMatch && shortcutMatch[1] === gitHostName) {\n user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2])\n project = decodeURIComponent(shortcutMatch[3].replace(/\\.git$/, ''))\n defaultRepresentation = 'shortcut'\n } else {\n if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return\n if (!gitHostInfo.protocols_re.test(parsed.protocol)) return\n if (!parsed.path) return\n var pathmatch = gitHostInfo.pathmatch\n var matched = parsed.path.match(pathmatch)\n if (!matched) return\n /* istanbul ignore else */\n if (matched[1] !== null && matched[1] !== undefined) {\n user = decodeURIComponent(matched[1].replace(/^:/, ''))\n }\n project = decodeURIComponent(matched[2])\n defaultRepresentation = protocolToRepresentation(parsed.protocol)\n }\n return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts)\n } catch (ex) {\n /* istanbul ignore else */\n if (ex instanceof URIError) {\n } else throw ex\n }\n }).filter(function (gitHostInfo) { return gitHostInfo })\n if (matches.length !== 1) return\n return matches[0]\n}\n\nfunction isGitHubShorthand (arg) {\n // Note: This does not fully test the git ref format.\n // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html\n //\n // The only way to do this properly would be to shell out to\n // git-check-ref-format, and as this is a fast sync function,\n // we don't want to do that. Just let git fail if it turns\n // out that the commit-ish is invalid.\n // GH usernames cannot start with . or -\n return /^[^:@%/\\s.-][^:@%/\\s]*[/][^:@\\s/%]+(?:#.*)?$/.test(arg)\n}\n\nfunction fixupUnqualifiedGist (giturl) {\n // necessary for round-tripping gists\n var parsed = url.parse(giturl)\n if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) {\n return parsed.protocol + '/' + parsed.host\n } else {\n return giturl\n }\n}\n\nfunction parseGitUrl (giturl) {\n var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/)\n if (!matched) {\n var legacy = url.parse(giturl)\n if (legacy.auth) {\n // git urls can be in the form of scp-style/ssh-connect strings, like\n // git+ssh://user@host.com:some/path, which the legacy url parser\n // supports, but WhatWG url.URL class does not. However, the legacy\n // parser de-urlencodes the username and password, so something like\n // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes\n // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong.\n // Pull off just the auth and host, so we dont' get the confusing\n // scp-style URL, then pass that to the WhatWG parser to get the\n // auth properly escaped.\n const authmatch = giturl.match(/[^@]+@[^:/]+/)\n /* istanbul ignore else - this should be impossible */\n if (authmatch) {\n var whatwg = new url.URL(authmatch[0])\n legacy.auth = whatwg.username || ''\n if (whatwg.password) legacy.auth += ':' + whatwg.password\n }\n }\n return legacy\n }\n return {\n protocol: 'git+ssh:',\n slashes: true,\n auth: matched[1],\n host: matched[2],\n port: null,\n hostname: matched[2],\n hash: matched[4],\n search: null,\n query: null,\n pathname: '/' + matched[3],\n path: '/' + matched[3],\n href: 'git+ssh://' + matched[1] + '@' + matched[2] +\n '/' + matched[3] + (matched[4] || '')\n }\n}\n", "module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) return;\n if (d === \"ERROR: No README data found!\") return;\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++);\n var l = d.length\n for (var e = s + 1; e < l && d[e].trim(); e ++);\n return d.slice(s, e).join(' ').trim()\n}\n", "var semver = require(\"semver\")\nvar validateLicense = require('validate-npm-package-license');\nvar hostedGitInfo = require(\"hosted-git-info\")\nvar isBuiltinModule = require(\"resolve\").isCore\nvar depTypes = [\"dependencies\",\"devDependencies\",\"optionalDependencies\"]\nvar extractDescription = require(\"./extract_description\")\nvar url = require(\"url\")\nvar typos = require(\"./typos.json\")\n\nvar fixer = module.exports = {\n // default warning function\n warn: function() {},\n\n fixRepositoryField: function(data) {\n if (data.repositories) {\n this.warn(\"repositories\");\n data.repository = data.repositories[0]\n }\n if (!data.repository) return this.warn(\"missingRepository\")\n if (typeof data.repository === \"string\") {\n data.repository = {\n type: \"git\",\n url: data.repository\n }\n }\n var r = data.repository.url || \"\"\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() == \"shortcut\" ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^\\/]+\\/[^\\/]+\\.git\\.git$/)) {\n this.warn(\"brokenGitUrl\", r)\n }\n }\n\n, fixTypos: function(data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (data.hasOwnProperty(d)) {\n this.warn(\"typo\", d, typos.topLevel[d])\n }\n }, this)\n }\n\n, fixScriptsField: function(data) {\n if (!data.scripts) return\n if (typeof data.scripts !== \"object\") {\n this.warn(\"nonObjectScripts\")\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== \"string\") {\n this.warn(\"nonStringScript\")\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn(\"typo\", k, typos.script[k], \"scripts\")\n }\n }, this)\n }\n\n, fixFilesField: function(data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn(\"nonArrayFiles\")\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function(file) {\n if (!file || typeof file !== \"string\") {\n this.warn(\"invalidFilename\", file)\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixBinField: function(data) {\n if (!data.bin) return;\n if (typeof data.bin === \"string\") {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n }\n\n, fixManField: function(data) {\n if (!data.man) return;\n if (typeof data.man === \"string\") {\n data.man = [ data.man ]\n }\n }\n, fixBundleDependenciesField: function(data) {\n var bdd = \"bundledDependencies\"\n var bd = \"bundleDependencies\"\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn(\"nonArrayBundleDependencies\")\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function(bd) {\n if (!bd || typeof bd !== 'string') {\n this.warn(\"nonStringBundleDependency\", bd)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!data.dependencies.hasOwnProperty(bd)) {\n this.warn(\"nonDependencyBundleDependency\", bd)\n data.dependencies[bd] = \"*\"\n }\n return true\n }\n }, this)\n }\n }\n\n, fixDependencies: function(data, strict) {\n var loose = !strict\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies','devDependencies'].forEach(function(deps) {\n if (!(deps in data)) return\n if (!data[deps] || typeof data[deps] !== \"object\") {\n this.warn(\"nonObjectDependencies\", deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn(\"nonStringDependency\", d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) data[deps][d] = hosted.toString()\n }, this)\n }, this)\n }\n\n, fixModulesField: function (data) {\n if (data.modules) {\n this.warn(\"deprecatedModules\")\n delete data.modules\n }\n }\n\n, fixKeywordsField: function (data) {\n if (typeof data.keywords === \"string\") {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn(\"nonArrayKeywords\")\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function(kw) {\n if (typeof kw !== \"string\" || !kw) {\n this.warn(\"nonStringKeyword\");\n return false\n } else {\n return true\n }\n }, this)\n }\n }\n\n, fixVersionField: function(data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = \"\"\n return true\n }\n if (!semver.valid(data.version, loose)) {\n throw new Error('Invalid version: \"'+ data.version + '\"')\n }\n data.version = semver.clean(data.version, loose)\n return true\n }\n\n, fixPeople: function(data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n }\n\n, fixNameField: function(data, options) {\n if (typeof options === \"boolean\") options = {strict: options}\n else if (typeof options === \"undefined\") options = {}\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = \"\"\n return\n }\n if (typeof data.name !== \"string\") {\n throw new Error(\"name field must be a string.\")\n }\n if (!strict)\n data.name = data.name.trim()\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltinModule(data.name))\n this.warn(\"conflictingName\", data.name)\n }\n\n\n, fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn(\"nonStringDescription\")\n delete data.description\n }\n if (data.readme && !data.description)\n data.description = extractDescription(data.readme)\n if(data.description === undefined) delete data.description;\n if (!data.description) this.warn(\"missingDescription\")\n }\n\n, fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn(\"missingReadme\")\n data.readme = \"ERROR: No README data found!\"\n }\n }\n\n, fixBugsField: function(data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if(hosted && hosted.bugs()) {\n data.bugs = {url: hosted.bugs()}\n }\n }\n else if(data.bugs) {\n var emailRe = /^.+@.*\\..+$/\n if(typeof data.bugs == \"string\") {\n if(emailRe.test(data.bugs))\n data.bugs = {email:data.bugs}\n else if(url.parse(data.bugs).protocol)\n data.bugs = {url: data.bugs}\n else\n this.warn(\"nonEmailUrlBugsString\")\n }\n else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if(oldBugs.url) {\n if(typeof(oldBugs.url) == \"string\" && url.parse(oldBugs.url).protocol)\n data.bugs.url = oldBugs.url\n else\n this.warn(\"nonUrlBugsUrlField\")\n }\n if(oldBugs.email) {\n if(typeof(oldBugs.email) == \"string\" && emailRe.test(oldBugs.email))\n data.bugs.email = oldBugs.email\n else\n this.warn(\"nonEmailBugsEmailField\")\n }\n }\n if(!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn(\"emptyNormalizedBugs\")\n }\n }\n }\n\n, fixHomepageField: function(data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) data.homepage = hosted.docs()\n }\n if (!data.homepage) return\n\n if(typeof data.homepage !== \"string\") {\n this.warn(\"nonUrlHomepage\")\n return delete data.homepage\n }\n if(!url.parse(data.homepage).protocol) {\n data.homepage = \"http://\" + data.homepage\n }\n }\n\n, fixLicenseField: function(data) {\n if (!data.license) {\n return this.warn(\"missingLicense\")\n } else{\n if (\n typeof(data.license) !== 'string' ||\n data.license.length < 1 ||\n data.license.trim() === ''\n ) {\n this.warn(\"invalidLicense\")\n } else {\n if (!validateLicense(data.license).validForNewPackages)\n this.warn(\"invalidLicense\")\n }\n }\n }\n}\n\nfunction isValidScopedPackageName(spec) {\n if (spec.charAt(0) !== '@') return false\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) return false\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName(spec) {\n return !spec.match(/[\\/@\\s\\+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === \".\" ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === \"node_modules\" ||\n name.toLowerCase() === \"favicon.ico\") {\n throw new Error(\"Invalid name: \" + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) data.author = fn(data.author)\n ;[\"maintainers\", \"contributors\"].forEach(function (set) {\n if (!Array.isArray(data[set])) return;\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === \"string\") return person\n var name = person.name || \"\"\n var u = person.url || person.web\n var url = u ? (\" (\"+u+\")\") : \"\"\n var e = person.email || person.mail\n var email = e ? (\" <\"+e+\">\") : \"\"\n return name+email+url\n}\n\nfunction parsePerson (person) {\n if (typeof person !== \"string\") return person\n var name = person.match(/^([^\\(<]+)/)\n var url = person.match(/\\(([^\\)]+)\\)/)\n var email = person.match(/<([^>]+)>/)\n var obj = {}\n if (name && name[0].trim()) obj.name = name[0].trim()\n if (email) obj.email = email[1];\n if (url) obj.url = url[1];\n return obj\n}\n\nfunction addOptionalDepsToDeps (data, warn) {\n var o = data.optionalDependencies\n if (!o) return;\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) return {}\n if (typeof deps === \"string\") {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) return deps\n warn(\"deprecatedArrayDependencies\", type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === \"string\"\n }).forEach(function(d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join(\"\")\n dv = dv.trim()\n dv = dv.replace(/^@/, \"\")\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) return;\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos(bugs, warn) {\n if (!bugs) return\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn(\"typo\", k, typos.bugs[k], \"bugs\")\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n", "var util = require(\"util\")\nvar messages = require(\"./warning_messages.json\")\n\nmodule.exports = function() {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName == \"typo\") {\n return makeTypoWarning.apply(null,args)\n }\n else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n", "module.exports = normalize\n\nvar fixer = require(\"./fixer\")\nnormalize.fixer = fixer\n\nvar makeWarning = require(\"./make_warning\")\n\nvar fieldsToFix = ['name','version','description','repository','modules','scripts'\n ,'files','bin','man','bugs','keywords','readme','homepage','license']\nvar otherThingsToFix = ['dependencies','people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function(fieldName) {\n return ucFirst(fieldName) + \"Field\"\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if(warn === true) warn = null, strict = true\n if(!strict) strict = false\n if(!warn || data.private) warn = function(msg) { /* noop */ }\n\n if (data.scripts &&\n data.scripts.install === \"node-gyp rebuild\" &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function() { warn(makeWarning.apply(null, arguments)) }\n thingsToFix.forEach(function(thingName) {\n fixer[\"fix\" + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + \"@\" + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n", "'use strict';\nconst path = require('path');\nconst buildParserOptions = require('minimist-options');\nconst parseArguments = require('yargs-parser');\nconst camelCaseKeys = require('camelcase-keys');\nconst decamelize = require('decamelize');\nconst decamelizeKeys = require('decamelize-keys');\nconst trimNewlines = require('trim-newlines');\nconst redent = require('redent');\nconst readPkgUp = require('read-pkg-up');\nconst hardRejection = require('hard-rejection');\nconst normalizePackageData = require('normalize-package-data');\n\n// Prevent caching of this module so module.parent is always accurate\ndelete require.cache[__filename];\nconst parentDir = path.dirname(module.parent && module.parent.filename ? module.parent.filename : '.');\n\nconst isFlagMissing = (flagName, definedFlags, receivedFlags, input) => {\n\tconst flag = definedFlags[flagName];\n\tlet isFlagRequired = true;\n\n\tif (typeof flag.isRequired === 'function') {\n\t\tisFlagRequired = flag.isRequired(receivedFlags, input);\n\t\tif (typeof isFlagRequired !== 'boolean') {\n\t\t\tthrow new TypeError(`Return value for isRequired callback should be of type boolean, but ${typeof isFlagRequired} was returned.`);\n\t\t}\n\t}\n\n\tif (typeof receivedFlags[flagName] === 'undefined') {\n\t\treturn isFlagRequired;\n\t}\n\n\treturn flag.isMultiple && receivedFlags[flagName].length === 0;\n};\n\nconst getMissingRequiredFlags = (flags, receivedFlags, input) => {\n\tconst missingRequiredFlags = [];\n\tif (typeof flags === 'undefined') {\n\t\treturn [];\n\t}\n\n\tfor (const flagName of Object.keys(flags)) {\n\t\tif (flags[flagName].isRequired && isFlagMissing(flagName, flags, receivedFlags, input)) {\n\t\t\tmissingRequiredFlags.push({key: flagName, ...flags[flagName]});\n\t\t}\n\t}\n\n\treturn missingRequiredFlags;\n};\n\nconst reportMissingRequiredFlags = missingRequiredFlags => {\n\tconsole.error(`Missing required flag${missingRequiredFlags.length > 1 ? 's' : ''}`);\n\tfor (const flag of missingRequiredFlags) {\n\t\tconsole.error(`\\t--${decamelize(flag.key, '-')}${flag.alias ? `, -${flag.alias}` : ''}`);\n\t}\n};\n\nconst validateOptions = ({flags}) => {\n\tconst invalidFlags = Object.keys(flags).filter(flagKey => flagKey.includes('-') && flagKey !== '--');\n\tif (invalidFlags.length > 0) {\n\t\tthrow new Error(`Flag keys may not contain '-': ${invalidFlags.join(', ')}`);\n\t}\n};\n\nconst reportUnknownFlags = unknownFlags => {\n\tconsole.error([\n\t\t`Unknown flag${unknownFlags.length > 1 ? 's' : ''}`,\n\t\t...unknownFlags\n\t].join('\\n'));\n};\n\nconst buildParserFlags = ({flags, booleanDefault}) => {\n\tconst parserFlags = {};\n\n\tfor (const [flagKey, flagValue] of Object.entries(flags)) {\n\t\tconst flag = {...flagValue};\n\n\t\tif (\n\t\t\ttypeof booleanDefault !== 'undefined' &&\n\t\t\tflag.type === 'boolean' &&\n\t\t\t!Object.prototype.hasOwnProperty.call(flag, 'default')\n\t\t) {\n\t\t\tflag.default = flag.isMultiple ? [booleanDefault] : booleanDefault;\n\t\t}\n\n\t\tif (flag.isMultiple) {\n\t\t\tflag.type = flag.type ? `${flag.type}-array` : 'array';\n\t\t\tflag.default = flag.default || [];\n\t\t\tdelete flag.isMultiple;\n\t\t}\n\n\t\tparserFlags[flagKey] = flag;\n\t}\n\n\treturn parserFlags;\n};\n\nconst validateFlags = (flags, options) => {\n\tfor (const [flagKey, flagValue] of Object.entries(options.flags)) {\n\t\tif (flagKey !== '--' && !flagValue.isMultiple && Array.isArray(flags[flagKey])) {\n\t\t\tthrow new Error(`The flag --${flagKey} can only be set once.`);\n\t\t}\n\t}\n};\n\nconst meow = (helpText, options) => {\n\tif (typeof helpText !== 'string') {\n\t\toptions = helpText;\n\t\thelpText = '';\n\t}\n\n\tconst foundPkg = readPkgUp.sync({\n\t\tcwd: parentDir,\n\t\tnormalize: false\n\t});\n\n\toptions = {\n\t\tpkg: foundPkg ? foundPkg.packageJson : {},\n\t\targv: process.argv.slice(2),\n\t\tflags: {},\n\t\tinferType: false,\n\t\tinput: 'string',\n\t\thelp: helpText,\n\t\tautoHelp: true,\n\t\tautoVersion: true,\n\t\tbooleanDefault: false,\n\t\thardRejection: true,\n\t\tallowUnknownFlags: true,\n\t\t...options\n\t};\n\n\tif (options.hardRejection) {\n\t\thardRejection();\n\t}\n\n\tvalidateOptions(options);\n\tlet parserOptions = {\n\t\targuments: options.input,\n\t\t...buildParserFlags(options)\n\t};\n\n\tparserOptions = decamelizeKeys(parserOptions, '-', {exclude: ['stopEarly', '--']});\n\n\tif (options.inferType) {\n\t\tdelete parserOptions.arguments;\n\t}\n\n\tparserOptions = buildParserOptions(parserOptions);\n\n\tparserOptions.configuration = {\n\t\t...parserOptions.configuration,\n\t\t'greedy-arrays': false\n\t};\n\n\tif (parserOptions['--']) {\n\t\tparserOptions.configuration['populate--'] = true;\n\t}\n\n\tif (!options.allowUnknownFlags) {\n\t\t// Collect unknown options in `argv._` to be checked later.\n\t\tparserOptions.configuration['unknown-options-as-args'] = true;\n\t}\n\n\tconst {pkg} = options;\n\tconst argv = parseArguments(options.argv, parserOptions);\n\tlet help = redent(trimNewlines((options.help || '').replace(/\\t+\\n*$/, '')), 2);\n\n\tnormalizePackageData(pkg);\n\n\tprocess.title = pkg.bin ? Object.keys(pkg.bin)[0] : pkg.name;\n\n\tlet {description} = options;\n\tif (!description && description !== false) {\n\t\t({description} = pkg);\n\t}\n\n\thelp = (description ? `\\n ${description}\\n` : '') + (help ? `\\n${help}\\n` : '\\n');\n\n\tconst showHelp = code => {\n\t\tconsole.log(help);\n\t\tprocess.exit(typeof code === 'number' ? code : 2);\n\t};\n\n\tconst showVersion = () => {\n\t\tconsole.log(typeof options.version === 'string' ? options.version : pkg.version);\n\t\tprocess.exit(0);\n\t};\n\n\tif (argv._.length === 0 && options.argv.length === 1) {\n\t\tif (argv.version === true && options.autoVersion) {\n\t\t\tshowVersion();\n\t\t}\n\n\t\tif (argv.help === true && options.autoHelp) {\n\t\t\tshowHelp(0);\n\t\t}\n\t}\n\n\tconst input = argv._;\n\tdelete argv._;\n\n\tif (!options.allowUnknownFlags) {\n\t\tconst unknownFlags = input.filter(item => typeof item === 'string' && item.startsWith('-'));\n\t\tif (unknownFlags.length > 0) {\n\t\t\treportUnknownFlags(unknownFlags);\n\t\t\tprocess.exit(2);\n\t\t}\n\t}\n\n\tconst flags = camelCaseKeys(argv, {exclude: ['--', /^\\w$/]});\n\tconst unnormalizedFlags = {...flags};\n\n\tvalidateFlags(flags, options);\n\n\tfor (const flagValue of Object.values(options.flags)) {\n\t\tdelete flags[flagValue.alias];\n\t}\n\n\tconst missingRequiredFlags = getMissingRequiredFlags(options.flags, flags, input);\n\tif (missingRequiredFlags.length > 0) {\n\t\treportMissingRequiredFlags(missingRequiredFlags);\n\t\tprocess.exit(2);\n\t}\n\n\treturn {\n\t\tinput,\n\t\tflags,\n\t\tunnormalizedFlags,\n\t\tpkg,\n\t\thelp,\n\t\tshowHelp,\n\t\tshowVersion\n\t};\n};\n\nmodule.exports = meow;\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst EE = require('events')\nconst Stream = require('stream')\nconst Yallist = require('yallist')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = new Yallist()\n this.buffer = new Yallist()\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // this ensures at this point that the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!this.objectMode && !chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n cb()\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' && !this[OBJECTMODE] &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n if (this.flowing) {\n // if we somehow have something in the buffer, but we think we're\n // flowing, then we need to flush all that out first, or we get\n // chunks coming in out of order. Can't emit 'drain' here though,\n // because we're mid-write, so that'd be bad.\n if (this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n this.emit('data', chunk)\n } else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n cb()\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n try {\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])\n return null\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = new Yallist([\n Array.from(this.buffer).join('')\n ])\n else\n this.buffer = new Yallist([\n Buffer.concat(Array.from(this.buffer), this[BUFFERLENGTH])\n ])\n }\n\n return this[READ](n || null, this.buffer.head.value)\n } finally {\n this[MAYBE_EMIT_END]()\n }\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer.head.value = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n return this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer.head.value.length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === process.stdout || dest === process.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n\n const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }\n this.pipes.push(p)\n\n dest.on('drain', p.ondrain)\n this[RESUME]()\n // piping an ended stream ends immediately\n if (ended && p.opts.end)\n p.dest.end()\n return dest\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n try {\n return super.on(ev, fn)\n } finally {\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n }\n }\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n if (!data)\n return\n\n if (this.pipes.length)\n this.pipes.forEach(p =>\n p.dest.write(data) === false && this.pause())\n } else if (ev === 'end') {\n // only actual end gets this treatment\n if (this[EMITTED_END] === true)\n return\n\n this[EMITTED_END] = true\n this.readable = false\n\n if (this[DECODER]) {\n data = this[DECODER].end()\n if (data) {\n this.pipes.forEach(p => p.dest.write(data))\n super.emit('data', data)\n }\n }\n\n this.pipes.forEach(p => {\n p.dest.removeListener('drain', p.ondrain)\n if (p.opts.end)\n p.dest.end()\n })\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n }\n\n // TODO: replace with a spread operator when Node v4 support drops\n const args = new Array(arguments.length)\n args[0] = ev\n args[1] = data\n if (arguments.length > 2) {\n for (let i = 2; i < arguments.length; i++) {\n args[i] = arguments[i]\n }\n }\n\n try {\n return super.emit.apply(this, args)\n } finally {\n if (!isEndish(ev))\n this[MAYBE_EMIT_END]()\n else\n this.removeAllListeners(ev)\n }\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('end', () => resolve())\n this.on('error', er => reject(er))\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer = new Yallist()\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "'use strict'\nconst MiniPass = require('minipass')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends MiniPass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = header.path\n this.mode = header.mode\n if (this.mode)\n this.mode = this.mode & 0o7777\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = header.linkpath\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex)\n this[SLURP](ex)\n if (gex)\n this[SLURP](gex, true)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore)\n return true\n\n if (r >= writeLen)\n return super.write(data)\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n else if (num < 0)\n encodeNegative(num, buf)\n else\n encodePositive(num, buf)\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped)\n buf[i - 1] = onesComp(byte)\n else if (byte === 0)\n buf[i - 1] = 0\n else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null)\n throw Error('invalid base256 encoding')\n\n if (!Number.isSafeInteger(value))\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped)\n f = onesComp(byte)\n else if (byte === 0)\n f = byte\n else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0)\n sum -= f * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0)\n sum += byte * Math.pow(256, len - i - 1)\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data))\n this.decode(data, off || 0, ex, gex)\n else if (data)\n this.set(data)\n }\n\n decode (buf, off, ex, gex) {\n if (!off)\n off = 0\n\n if (!buf || !(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '')\n this[TYPE] = '0'\n if (this[TYPE] === '0' && this.path.substr(-1) === '/')\n this[TYPE] = '5'\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5')\n this.size = 0\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix)\n this.path = prefix + '/' + this.path\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20)\n this.nullBlock = true\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path'))\n this[k] = ex[k]\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off)\n off = 0\n\n if (!(buf.length >= off + 512))\n throw new Error('need 512 bytes for header')\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0)\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++)\n sum += buf[i]\n\n for (let i = off + 156; i < off + 512; i++)\n sum += buf[i]\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined)\n this[i] = data[i]\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type))\n this[TYPE] = types.code.get(type)\n else\n this[TYPE] = type\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize)\n ret = [pp, prefix, false]\n else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n // both fit!\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp, prefix, false]\n\n // prefix fits in prefix, but path doesn't fit in path\n else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize)\n ret = [pp.substr(0, pathSize - 1), prefix, true]\n\n else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret)\n ret = [p.substr(0, pathSize - 1), '', true]\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '')\n return null\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++)\n buf[i] = 0\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++)\n buf[i] = 0\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined)\n return ''\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits))\n digits += 1\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1)\n return set\n\n line = line.substr((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k)\n return set\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file)\n data.file = this.file\n if (this.cwd)\n data.cwd = this.cwd\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error)\n this.emit('error', Object.assign(message, data))\n else\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable)\n mode = (mode | 0o600) & ~0o22\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400)\n mode |= 0o100\n if (mode & 0o40)\n mode |= 0o10\n if (mode & 0o4)\n mode |= 0o1\n }\n return mode\n}\n", "'use strict'\nconst MiniPass = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends MiniPass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string')\n throw new TypeError('path is required')\n this.path = p\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid()\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = opt.cwd || process.cwd()\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (!this.preservePaths && path.win32.isAbsolute(p)) {\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n const parsed = path.win32.parse(p)\n this.path = p.substr(parsed.root.length)\n pathWarn = parsed.root\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = opt.absolute || path.resolve(this.cwd, p)\n\n if (this.path === '')\n this.path = './'\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute))\n this[ONLSTAT](this.statCache.get(this.absolute))\n else\n this[LSTAT]()\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er)\n return this.emit('error', er)\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile())\n stat.size = 0\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n this.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n this.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.substr(-1) !== '/')\n this.path += '/'\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er)\n return this.emit('error', er)\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = linkpath.replace(/\\\\/g, '/')\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = path.relative(this.cwd, linkpath).replace(/\\\\/g, '/')\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0)\n return this[HARDLINK](linkpath)\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0)\n return this.end()\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er)\n return this.emit('error', er)\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n const blockLen = 512 * Math.ceil(this.stat.size / 512)\n const bufLen = Math.min(blockLen, this.maxReadSize)\n const buf = Buffer.allocUnsafe(bufLen)\n this[READ](fd, buf, 0, buf.length, 0, this.stat.size, blockLen)\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n })\n }\n\n [CLOSE] (fd, cb) {\n fs.close(fd, cb)\n }\n\n [ONREAD] (fd, buf, offset, length, pos, remain, blockRemain, bytesRead) {\n if (bytesRead <= 0 && remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n if (bytesRead > remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](fd, () => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n if (bytesRead === remain) {\n for (let i = bytesRead; i < length && bytesRead < blockRemain; i++) {\n buf[i + offset] = 0\n bytesRead++\n remain++\n }\n }\n\n const writeBuf = offset === 0 && bytesRead === buf.length ?\n buf : buf.slice(offset, offset + bytesRead)\n remain -= bytesRead\n blockRemain -= bytesRead\n pos += bytesRead\n offset += bytesRead\n\n this.write(writeBuf)\n\n if (!remain) {\n if (blockRemain)\n this.write(Buffer.alloc(blockRemain))\n return this[CLOSE](fd, er => er ? this.emit('error', er) : this.end())\n }\n\n if (offset >= length) {\n buf = Buffer.allocUnsafe(length)\n offset = 0\n }\n length = buf.length - offset\n this[READ](fd, buf, offset, length, pos, remain, blockRemain)\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] (fd, buf, offset, length, pos, remain, blockRemain) {\n let threw = true\n try {\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](fd, buf, offset, length, pos, remain, blockRemain, bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](fd, () => {})\n } catch (er) {}\n }\n }\n }\n\n [CLOSE] (fd, cb) {\n fs.closeSync(fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends MiniPass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable)\n this.noMtime = true\n\n this.path = readEntry.path\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = readEntry.linkpath\n\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n let pathWarn = false\n if (path.isAbsolute(this.path) && !this.preservePaths) {\n const parsed = path.parse(this.path)\n pathWarn = parsed.root\n this.path = this.path.substr(parsed.root.length)\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this.path,\n linkpath: this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this.path,\n linkpath: this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain)\n throw new Error('writing more to entry than is appropriate')\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain)\n this.write(Buffer.alloc(this.blockRemain))\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst MiniPass = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\n\nconst Pack = warner(class Pack extends MiniPass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = (opt.prefix || '').replace(/(\\\\|\\/)+$/, '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n\n this.portable = !!opt.portable\n this.zip = null\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object')\n opt.gzip = {}\n if (this.portable)\n opt.gzip.portable = true\n this.zip = new zlib.Gzip(opt.gzip)\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else\n this.on('drain', this[ONDRAIN])\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path)\n this.write(path)\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED])\n throw new Error('write after end')\n\n if (path instanceof ReadEntry)\n this[ADDTARENTRY](path)\n else\n this[ADDFSENTRY](path)\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = path.resolve(this.cwd, p.path)\n if (this.prefix)\n p.path = this.prefix + '/' + p.path.replace(/^\\.(\\/+|$)/, '')\n\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p))\n p.resume()\n else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = path.resolve(this.cwd, p)\n if (this.prefix)\n p = this.prefix + '/' + p.replace(/^\\.(\\/+|$)/, '')\n\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n this.emit('error', er)\n else\n this[ONSTAT](job, stat)\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat))\n job.ignore = true\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er)\n return this.emit('error', er)\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING])\n return\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip)\n this.zip.end(EOF)\n else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending)\n return\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute))\n this[ONSTAT](job, this.statCache.get(job.absolute))\n else\n this[STAT](job)\n }\n if (!job.stat)\n return\n\n // filtered out!\n if (job.ignore)\n return\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute))\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n else\n this[READDIR](job)\n if (!job.readdir)\n return\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped)\n this[PIPE](job)\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry)\n this[CURRENT].entry.resume()\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk))\n source.pause()\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk))\n source.pause()\n })\n }\n }\n\n pause () {\n if (this.zip)\n this.zip.pause()\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = this.prefix ?\n job.path.slice(this.prefix.length + 1) || './'\n : job.path\n\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone)\n this.on(DONE, opt.ondone)\n else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n if (typeof opt.onwarn === 'function')\n this.on('warn', opt.onwarn)\n if (typeof opt.onentry === 'function')\n this.on('entry', opt.onentry)\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null)\n this[SAW_VALID_ENTRY] = false\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin')\n this[STATE] = 'header'\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid)\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', {header})\n else if (!header.path)\n this.warn('TAR_ENTRY_INVALID', 'path is required', {header})\n else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', {header})\n else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath)\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {header})\n else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid)\n this[SAW_VALID_ENTRY] = true\n }\n entry.on('end', onend)\n } else\n this[SAW_VALID_ENTRY] = true\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain)\n this[STATE] = 'body'\n else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry))\n this.emit.apply(this, entry)\n else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING])\n this.emit('drain')\n } else\n re.once('drain', _ => this.emit('drain'))\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY])\n this[EMITMETA](entry)\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY])\n this.emit(ev, data, extra)\n else\n this[QUEUE].push([ev, data, extra])\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED])\n return\n\n // first write, might be gzipped\n if (this[UNZIP] === null && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i])\n this[UNZIP] = false\n }\n if (this[UNZIP] === null) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = new zlib.Unzip()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP])\n this[UNZIP].write(chunk)\n else\n this[CONSUMECHUNK](chunk)\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length)\n this[READENTRY].once('drain', _ => this.emit('drain'))\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED])\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, {entry})\n if (this[BUFFER])\n entry.write(this[BUFFER])\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING])\n this[BUFFERCONCAT](chunk)\n else if (!chunk && !this[BUFFER])\n this[MAYBEEND]()\n else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else\n this[CONSUMECHUNKSUB](chunk)\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED])\n this[MAYBEEND]()\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER])\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n else\n this[BUFFER] = chunk.slice(position)\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP])\n this[UNZIP].end(chunk)\n else {\n this[ENDED] = true\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n if (!opt.noResume)\n onentryFunction(opt)\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize)\n p.end(fs.readFileSync(file))\n else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function')\n cb = files\n\n if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT')\n fd = fs.openSync(opt.file, 'w+')\n else\n throw er\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n throw new Error('cannot append to compressed archives')\n\n if (!bytes)\n break POSITION\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n break\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size)\n break\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er)\n fs.close(fd, _ => cb_(er))\n else\n cb_(null, pos)\n }\n\n let position = 0\n if (size === 0)\n return cb(null, 0)\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er)\n return cb(er)\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b)\n return cb(new Error('cannot append to compressed archives'))\n\n // truncated header\n if (bufPos < 512)\n return cb(null, position)\n\n const h = new Header(headBuf)\n if (!h.cksumValid)\n return cb(null, position)\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size)\n return cb(null, position)\n\n position += entryBlockSize + 512\n if (position >= size)\n return cb(null, position)\n\n if (opt.mtimeCache)\n opt.mtimeCache.set(h.path, h.mtime)\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er)\n return reject(er)\n\n fs.fstat(fd, (er, st) => {\n if (er)\n return reject(er)\n getPos(fd, st.size, (er, position) => {\n if (er)\n return reject(er)\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.substr(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else\n p.add(file)\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.substr(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else\n p.add(file)\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file)\n throw new TypeError('file is required')\n\n if (opt.gzip)\n throw new TypeError('cannot append to compressed archives')\n\n if (!files || !Array.isArray(files) || !files.length)\n throw new TypeError('no files or directories specified')\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache)\n opt.mtimeCache = new Map()\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nmodule.exports = (dir, opt, cb) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (er, created) => {\n if (er)\n cb(er)\n else {\n cache.set(dir, true)\n if (created && doChown)\n chownr(created, uid, gid, er => done(er))\n else if (needChmod)\n fs.chmod(dir, mode, cb)\n else\n cb()\n }\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n return fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory())\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n done(er)\n })\n }\n\n if (preserve)\n return mkdirp(dir, {mode}).then(made => done(null, made), done)\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length)\n return cb(null, created)\n const p = parts.shift()\n const part = base + '/' + p\n if (cache.get(part))\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return cb(new CwdError(cwd, er.code))\n\n fs.lstat(part, (statEr, st) => {\n if (statEr)\n cb(statEr)\n else if (st.isDirectory())\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n else if (unlink) {\n fs.unlink(part, er => {\n if (er)\n return cb(er)\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink())\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n else\n cb(er)\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = opt.cwd\n\n const done = (created) => {\n cache.set(dir, true)\n if (created && doChown)\n chownr.sync(created, uid, gid)\n if (needChmod)\n fs.chmodSync(dir, mode)\n }\n\n if (cache && cache.get(dir) === true)\n return done()\n\n if (dir === cwd) {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok)\n throw new CwdError(dir, code)\n }\n done()\n return\n }\n\n if (preserve)\n return done(mkdirp.sync(dir, mode))\n\n const sub = path.relative(cwd, dir)\n const parts = sub.split(/\\/|\\\\/)\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n if (cache.get(part))\n continue\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n } catch (er) {\n if (er.path && path.dirname(er.path) === cwd &&\n (er.code === 'ENOTDIR' || er.code === 'ENOENT'))\n return new CwdError(cwd, er.code)\n\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cache.set(part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cache.set(part, true)\n continue\n } else if (st.isSymbolicLink())\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n\n return done(created)\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n const { join } = require('path')\n const getDirs = path =>\n join(path).split(/[\\\\/]/).slice(0, -1).reduce((set, path) =>\n set.length ? set.concat(join(set[set.length - 1], path)) : [path], [])\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res)\n throw new Error('function does not have any path reservations')\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const {paths, dirs} = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn))\n return false\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn))\n return false\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1)\n queues.delete(path)\n else {\n q.shift()\n if (typeof q[0] === 'function')\n next.add(q[0])\n else\n q[0].forEach(fn => next.add(fn))\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1)\n queues.delete(dir)\n else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else\n q[0].delete(fn)\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, {dirs, paths})\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q)\n queues.set(path, [fn])\n else\n q.push(fn)\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q)\n queues.set(dir, [new Set([fn])])\n else if (q[q.length - 1] instanceof Set)\n q[q.length - 1].add(fn)\n else\n q.push(new Set([fn]))\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\n\n/* istanbul ignore next */\nconst neverCalled = () => {\n throw new Error('sync function called cb somehow?!?')\n}\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (process.platform !== 'win32')\n return fs.unlink(path, cb)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er)\n return cb(er)\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (process.platform !== 'win32')\n return fs.unlinkSync(path)\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt)\n opt = {}\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')\n throw new TypeError('cannot set owner without number uid and gid')\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')\n this.preserveOwner = process.getuid && process.getuid() === 0\n else\n this.preserveOwner = !!opt.preserveOwner\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn > this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT')\n data.recoverable = false\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n this.emit('close')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = entry.path.split(/\\/|\\\\/)\n if (parts.length < this.strip)\n return false\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = entry.linkpath.split(/\\/|\\\\/)\n if (linkparts.length >= this.strip)\n entry.linkpath = linkparts.slice(this.strip).join('/')\n }\n }\n\n if (!this.preservePaths) {\n const p = entry.path\n if (p.match(/(^|\\/|\\\\)\\.\\.(\\\\|\\/|$)/)) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // absolutes on posix are also absolutes on win32\n // so we only need to test this one to get both\n if (path.win32.isAbsolute(p)) {\n const parsed = path.win32.parse(p)\n entry.path = p.substr(parsed.root.length)\n const r = parsed.root\n this.warn('TAR_ENTRY_INFO', `stripping ${r} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const parsed = path.win32.parse(entry.path)\n entry.path = parsed.root === '' ? wc.encode(entry.path)\n : parsed.root + wc.encode(entry.path.substr(parsed.root.length))\n }\n\n if (path.isAbsolute(entry.path))\n entry.absolute = entry.path\n else\n entry.absolute = path.resolve(this.cwd, entry.path)\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry))\n return entry.resume()\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode)\n entry.mode = entry.mode | 0o700\n\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError')\n this.emit('error', er)\n else {\n this.warn('TAR_ENTRY_ERROR', er, {entry})\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => this[ONERROR](er, entry))\n\n let actions = 1\n const done = er => {\n if (er)\n return this[ONERROR](er, entry)\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n fullyDone()\n er ? this[ONERROR](er, entry) : this[UNPEND]()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n fullyDone()\n return this[ONERROR](er, entry)\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, {entry})\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n process.platform !== 'win32'\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath)\n paths.push(entry.linkpath)\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [CHECKFS2] (entry, done) {\n this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {\n if (er) {\n done()\n return this[ONERROR](er, entry)\n }\n fs.lstat(entry.absolute, (er, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n } else if (er || this[ISREUSABLE](entry, st))\n this[MAKEFS](null, entry, done)\n\n else if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && (!entry.mode || (st.mode & 0o7777) === entry.mode))\n this[MAKEFS](null, entry, done)\n else {\n fs.chmod(entry.absolute, entry.mode,\n er => this[MAKEFS](er, entry, done))\n }\n } else\n fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry, done))\n } else\n unlinkFile(entry.absolute, er => this[MAKEFS](er, entry, done))\n })\n })\n }\n\n [MAKEFS] (er, entry, done) {\n if (er)\n return this[ONERROR](er, entry)\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('file' or 'dir') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er)\n return this[ONERROR](er, entry)\n done()\n this[UNPEND]()\n entry.resume()\n })\n }\n}\n\nclass UnpackSync extends Unpack {\n [CHECKFS] (entry) {\n const er = this[MKDIR](path.dirname(entry.absolute), this.dmode, neverCalled)\n if (er)\n return this[ONERROR](er, entry)\n try {\n const st = fs.lstatSync(entry.absolute)\n if (this.keep || this.newer && st.mtime > entry.mtime)\n return this[SKIP](entry)\n else if (this[ISREUSABLE](entry, st))\n return this[MAKEFS](null, entry, neverCalled)\n else {\n try {\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n if (!this.noChmod && entry.mode && (st.mode & 0o7777) !== entry.mode)\n fs.chmodSync(entry.absolute, entry.mode)\n } else\n fs.rmdirSync(entry.absolute)\n } else\n unlinkFileSync(entry.absolute)\n return this[MAKEFS](null, entry, neverCalled)\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n } catch (er) {\n return this[MAKEFS](null, entry, neverCalled)\n }\n }\n\n [FILE] (entry, _) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError)\n this[ONERROR](er || closeError, entry)\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, _) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er)\n return this[ONERROR](er, entry)\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(dir, {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, _) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function')\n cb = opt_, files = null, opt_ = {}\n else if (Array.isArray(opt_))\n files = opt_, opt_ = {}\n\n if (typeof files === 'function')\n cb = files, files = null\n\n if (!files)\n files = []\n else\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function')\n throw new TypeError('callback not supported for sync tar functions')\n\n if (!opt.file && typeof cb === 'function')\n throw new TypeError('callback only supported with file option')\n\n if (files.length)\n filesFilter(opt, files)\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [f.replace(/\\/+$/, ''), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(file.replace(/\\/+$/, ''))\n : file => mapHas(file.replace(/\\/+$/, ''))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er)\n reject(er)\n else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n", "module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\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", "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", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction posix(path) {\n\treturn path.charAt(0) === '/';\n}\n\nfunction win32(path) {\n\t// https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56\n\tvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\tvar result = splitDeviceRe.exec(path);\n\tvar device = result[1] || '';\n\tvar isUnc = Boolean(device && device.charAt(1) !== ':');\n\n\t// UNC paths are always absolute\n\treturn Boolean(result[2] || isUnc);\n}\n\nmodule.exports = process.platform === 'win32' ? win32 : posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;\n", "exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n", "module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n", "// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n", "const assert = require(\"assert\")\nconst path = require(\"path\")\nconst fs = require(\"fs\")\nlet glob = undefined\ntry {\n glob = require(\"glob\")\n} catch (_err) {\n // treat glob as optional.\n}\n\nconst defaultGlobOpts = {\n nosort: true,\n silent: true\n}\n\n// for EMFILE handling\nlet timeout = 0\n\nconst isWindows = (process.platform === \"win32\")\n\nconst defaults = options => {\n const methods = [\n 'unlink',\n 'chmod',\n 'stat',\n 'lstat',\n 'rmdir',\n 'readdir'\n ]\n methods.forEach(m => {\n options[m] = options[m] || fs[m]\n m = m + 'Sync'\n options[m] = options[m] || fs[m]\n })\n\n options.maxBusyTries = options.maxBusyTries || 3\n options.emfileWait = options.emfileWait || 1000\n if (options.glob === false) {\n options.disableGlob = true\n }\n if (options.disableGlob !== true && glob === undefined) {\n throw Error('glob dependency not found, set `options.disableGlob = true` if intentional')\n }\n options.disableGlob = options.disableGlob || false\n options.glob = options.glob || defaultGlobOpts\n}\n\nconst rimraf = (p, options, cb) => {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert.equal(typeof cb, 'function', 'rimraf: callback function required')\n assert(options, 'rimraf: invalid options argument provided')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n defaults(options)\n\n let busyTries = 0\n let errState = null\n let n = 0\n\n const next = (er) => {\n errState = errState || er\n if (--n === 0)\n cb(errState)\n }\n\n const afterGlob = (er, results) => {\n if (er)\n return cb(er)\n\n n = results.length\n if (n === 0)\n return cb()\n\n results.forEach(p => {\n const CB = (er) => {\n if (er) {\n if ((er.code === \"EBUSY\" || er.code === \"ENOTEMPTY\" || er.code === \"EPERM\") &&\n busyTries < options.maxBusyTries) {\n busyTries ++\n // try again, with the same exact callback as this one.\n return setTimeout(() => rimraf_(p, options, CB), busyTries * 100)\n }\n\n // this one won't happen if graceful-fs is used.\n if (er.code === \"EMFILE\" && timeout < options.emfileWait) {\n return setTimeout(() => rimraf_(p, options, CB), timeout ++)\n }\n\n // already gone\n if (er.code === \"ENOENT\") er = null\n }\n\n timeout = 0\n next(er)\n }\n rimraf_(p, options, CB)\n })\n }\n\n if (options.disableGlob || !glob.hasMagic(p))\n return afterGlob(null, [p])\n\n options.lstat(p, (er, stat) => {\n if (!er)\n return afterGlob(null, [p])\n\n glob(p, options.glob, afterGlob)\n })\n\n}\n\n// Two possible strategies.\n// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR\n// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR\n//\n// Both result in an extra syscall when you guess wrong. However, there\n// are likely far more normal files in the world than directories. This\n// is based on the assumption that a the average number of files per\n// directory is >= 1.\n//\n// If anyone ever complains about this, then I guess the strategy could\n// be made configurable somehow. But until then, YAGNI.\nconst rimraf_ = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // sunos lets the root user unlink directories, which is... weird.\n // so we have to lstat here and make sure it's not a dir.\n options.lstat(p, (er, st) => {\n if (er && er.code === \"ENOENT\")\n return cb(null)\n\n // Windows can EPERM on stat. Life is suffering.\n if (er && er.code === \"EPERM\" && isWindows)\n fixWinEPERM(p, options, er, cb)\n\n if (st && st.isDirectory())\n return rmdir(p, options, er, cb)\n\n options.unlink(p, er => {\n if (er) {\n if (er.code === \"ENOENT\")\n return cb(null)\n if (er.code === \"EPERM\")\n return (isWindows)\n ? fixWinEPERM(p, options, er, cb)\n : rmdir(p, options, er, cb)\n if (er.code === \"EISDIR\")\n return rmdir(p, options, er, cb)\n }\n return cb(er)\n })\n })\n}\n\nconst fixWinEPERM = (p, options, er, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.chmod(p, 0o666, er2 => {\n if (er2)\n cb(er2.code === \"ENOENT\" ? null : er)\n else\n options.stat(p, (er3, stats) => {\n if (er3)\n cb(er3.code === \"ENOENT\" ? null : er)\n else if (stats.isDirectory())\n rmdir(p, options, er, cb)\n else\n options.unlink(p, cb)\n })\n })\n}\n\nconst fixWinEPERMSync = (p, options, er) => {\n assert(p)\n assert(options)\n\n try {\n options.chmodSync(p, 0o666)\n } catch (er2) {\n if (er2.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n let stats\n try {\n stats = options.statSync(p)\n } catch (er3) {\n if (er3.code === \"ENOENT\")\n return\n else\n throw er\n }\n\n if (stats.isDirectory())\n rmdirSync(p, options, er)\n else\n options.unlinkSync(p)\n}\n\nconst rmdir = (p, options, originalEr, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)\n // if we guessed wrong, and it's not a directory, then\n // raise the original error.\n options.rmdir(p, er => {\n if (er && (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\"))\n rmkids(p, options, cb)\n else if (er && er.code === \"ENOTDIR\")\n cb(originalEr)\n else\n cb(er)\n })\n}\n\nconst rmkids = (p, options, cb) => {\n assert(p)\n assert(options)\n assert(typeof cb === 'function')\n\n options.readdir(p, (er, files) => {\n if (er)\n return cb(er)\n let n = files.length\n if (n === 0)\n return options.rmdir(p, cb)\n let errState\n files.forEach(f => {\n rimraf(path.join(p, f), options, er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (--n === 0)\n options.rmdir(p, cb)\n })\n })\n })\n}\n\n// this looks simpler, and is strictly *faster*, but will\n// tie up the JavaScript thread and fail on excessively\n// deep directory trees.\nconst rimrafSync = (p, options) => {\n options = options || {}\n defaults(options)\n\n assert(p, 'rimraf: missing path')\n assert.equal(typeof p, 'string', 'rimraf: path should be a string')\n assert(options, 'rimraf: missing options')\n assert.equal(typeof options, 'object', 'rimraf: options should be object')\n\n let results\n\n if (options.disableGlob || !glob.hasMagic(p)) {\n results = [p]\n } else {\n try {\n options.lstatSync(p)\n results = [p]\n } catch (er) {\n results = glob.sync(p, options.glob)\n }\n }\n\n if (!results.length)\n return\n\n for (let i = 0; i < results.length; i++) {\n const p = results[i]\n\n let st\n try {\n st = options.lstatSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n\n // Windows can EPERM on stat. Life is suffering.\n if (er.code === \"EPERM\" && isWindows)\n fixWinEPERMSync(p, options, er)\n }\n\n try {\n // sunos lets the root user unlink directories, which is... weird.\n if (st && st.isDirectory())\n rmdirSync(p, options, null)\n else\n options.unlinkSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"EPERM\")\n return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)\n if (er.code !== \"EISDIR\")\n throw er\n\n rmdirSync(p, options, er)\n }\n }\n}\n\nconst rmdirSync = (p, options, originalEr) => {\n assert(p)\n assert(options)\n\n try {\n options.rmdirSync(p)\n } catch (er) {\n if (er.code === \"ENOENT\")\n return\n if (er.code === \"ENOTDIR\")\n throw originalEr\n if (er.code === \"ENOTEMPTY\" || er.code === \"EEXIST\" || er.code === \"EPERM\")\n rmkidsSync(p, options)\n }\n}\n\nconst rmkidsSync = (p, options) => {\n assert(p)\n assert(options)\n options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options))\n\n // We only end up here once we got ENOTEMPTY at least once, and\n // at this point, we are guaranteed to have removed all the kids.\n // So, we know that it won't be ENOENT or ENOTDIR or anything else.\n // try really hard to delete stuff on windows, because it has a\n // PROFOUNDLY annoying habit of not closing handles promptly when\n // files are deleted, resulting in spurious ENOTEMPTY errors.\n const retries = isWindows ? 100 : 1\n let i = 0\n do {\n let threw = true\n try {\n const ret = options.rmdirSync(p, options)\n threw = false\n return ret\n } finally {\n if (++i < retries && threw)\n continue\n }\n } while (true)\n}\n\nmodule.exports = rimraf\nrimraf.sync = rimrafSync\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan \n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\nconst rimraf = require('rimraf');\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs),\n FN_RIMRAF_SYNC = rimraf.sync;\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : _sanitizeName(options.name);\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n const sanitizedName = _sanitizeName(name);\n if (sanitizedName.startsWith(tmpDir)) {\n return path.resolve(sanitizedName);\n } else {\n return path.resolve(path.join(tmpDir, sanitizedName));\n }\n}\n\n/**\n * Sanitize the specified path name by removing all quote characters.\n *\n * @param name\n * @returns {string}\n * @private\n */\nfunction _sanitizeName(name) {\n if (_isBlank(name)) {\n return name;\n }\n return name.replace(/[\"']/g, '');\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid . or .. or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(_sanitizeName(options && options.tmpdir || os.tmpdir()));\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// patch from https://github.com/nodejs/node/blob/v7.2.1/lib/_http_agent.js\n\n'use strict';\n\nconst net = require('net');\nconst util = require('util');\nconst EventEmitter = require('events');\nconst debug = util.debuglog('http');\n\n// New Agent code.\n\n// The largest departure from the previous implementation is that\n// an Agent instance holds connections for a variable number of host:ports.\n// Surprisingly, this is still API compatible as far as third parties are\n// concerned. The only code that really notices the difference is the\n// request object.\n\n// Another departure is that all code related to HTTP parsing is in\n// ClientRequest.onSocket(). The Agent is now *strictly*\n// concerned with managing a connection pool.\n\nfunction Agent(options) {\n if (!(this instanceof Agent))\n return new Agent(options);\n\n EventEmitter.call(this);\n\n var self = this;\n\n self.defaultPort = 80;\n self.protocol = 'http:';\n\n self.options = util._extend({}, options);\n\n // don't confuse net and make it think that we're connecting to a pipe\n self.options.path = null;\n self.requests = {};\n self.sockets = {};\n self.freeSockets = {};\n self.keepAliveMsecs = self.options.keepAliveMsecs || 1000;\n self.keepAlive = self.options.keepAlive || false;\n self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets;\n self.maxFreeSockets = self.options.maxFreeSockets || 256;\n\n // [patch start]\n // free keep-alive socket timeout. By default free socket do not have a timeout.\n self.freeSocketKeepAliveTimeout = self.options.freeSocketKeepAliveTimeout || 0;\n // working socket timeout. By default working socket do not have a timeout.\n self.timeout = self.options.timeout || 0;\n // the socket active time to live, even if it's in use\n this.socketActiveTTL = this.options.socketActiveTTL || null;\n // [patch end]\n\n self.on('free', function(socket, options) {\n var name = self.getName(options);\n debug('agent.on(free)', name);\n\n if (socket.writable &&\n self.requests[name] && self.requests[name].length) {\n // [patch start]\n debug('continue handle next request');\n // [patch end]\n self.requests[name].shift().onSocket(socket);\n if (self.requests[name].length === 0) {\n // don't leak\n delete self.requests[name];\n }\n } else {\n // If there are no pending requests, then put it in\n // the freeSockets pool, but only if we're allowed to do so.\n var req = socket._httpMessage;\n if (req &&\n req.shouldKeepAlive &&\n socket.writable &&\n self.keepAlive) {\n var freeSockets = self.freeSockets[name];\n var freeLen = freeSockets ? freeSockets.length : 0;\n var count = freeLen;\n if (self.sockets[name])\n count += self.sockets[name].length;\n\n if (count > self.maxSockets || freeLen >= self.maxFreeSockets) {\n socket.destroy();\n } else {\n freeSockets = freeSockets || [];\n self.freeSockets[name] = freeSockets;\n socket.setKeepAlive(true, self.keepAliveMsecs);\n socket.unref();\n socket._httpMessage = null;\n self.removeSocket(socket, options);\n freeSockets.push(socket);\n\n // [patch start]\n // Add a default error handler to avoid Unhandled 'error' event throw on idle socket\n // https://github.com/node-modules/agentkeepalive/issues/25\n // https://github.com/nodejs/node/pull/4482 (fixed in >= 4.4.0 and >= 5.4.0)\n if (socket.listeners('error').length === 0) {\n socket.once('error', freeSocketErrorListener);\n }\n // set free keepalive timer\n // try to use socket custom freeSocketKeepAliveTimeout first\n const freeSocketKeepAliveTimeout = socket.freeSocketKeepAliveTimeout || self.freeSocketKeepAliveTimeout;\n socket.setTimeout(freeSocketKeepAliveTimeout);\n debug(`push to free socket queue and wait for ${freeSocketKeepAliveTimeout}ms`);\n // [patch end]\n }\n } else {\n socket.destroy();\n }\n }\n });\n}\n\nutil.inherits(Agent, EventEmitter);\nexports.Agent = Agent;\n\n// [patch start]\nfunction freeSocketErrorListener(err) {\n var socket = this;\n debug('SOCKET ERROR on FREE socket:', err.message, err.stack);\n socket.destroy();\n socket.emit('agentRemove');\n}\n// [patch end]\n\nAgent.defaultMaxSockets = Infinity;\n\nAgent.prototype.createConnection = net.createConnection;\n\n// Get the key for a given set of request options\nAgent.prototype.getName = function getName(options) {\n var name = options.host || 'localhost';\n\n name += ':';\n if (options.port)\n name += options.port;\n\n name += ':';\n if (options.localAddress)\n name += options.localAddress;\n\n // Pacify parallel/test-http-agent-getname by only appending\n // the ':' when options.family is set.\n if (options.family === 4 || options.family === 6)\n name += ':' + options.family;\n\n return name;\n};\n\n// [patch start]\nfunction handleSocketCreation(req) {\n return function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n req.onSocket(newSocket);\n }\n}\n// [patch end]\n\nAgent.prototype.addRequest = function addRequest(req, options, port/*legacy*/,\n localAddress/*legacy*/) {\n // Legacy API: addRequest(req, host, port, localAddress)\n if (typeof options === 'string') {\n options = {\n host: options,\n port,\n localAddress\n };\n }\n\n options = util._extend({}, options);\n options = util._extend(options, this.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = this.getName(options);\n if (!this.sockets[name]) {\n this.sockets[name] = [];\n }\n\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name].length;\n\n if (freeLen) {\n // we have a free socket, so use that.\n var socket = this.freeSockets[name].shift();\n debug('have free socket');\n\n // [patch start]\n // remove free socket error event handler\n socket.removeListener('error', freeSocketErrorListener);\n // restart the default timer\n socket.setTimeout(this.timeout);\n\n if (this.socketActiveTTL && Date.now() - socket.createdTime > this.socketActiveTTL) {\n debug(`socket ${socket.createdTime} expired`);\n socket.destroy();\n return this.createSocket(req, options, handleSocketCreation(req));\n }\n // [patch end]\n\n // don't leak\n if (!this.freeSockets[name].length)\n delete this.freeSockets[name];\n\n socket.ref();\n req.onSocket(socket);\n this.sockets[name].push(socket);\n } else if (sockLen < this.maxSockets) {\n debug('call onSocket', sockLen, freeLen);\n // If we are under maxSockets create a new one.\n // [patch start]\n this.createSocket(req, options, handleSocketCreation(req));\n // [patch end]\n } else {\n debug('wait for socket');\n // We are over limit so we'll add it to the queue.\n if (!this.requests[name]) {\n this.requests[name] = [];\n }\n this.requests[name].push(req);\n }\n};\n\nAgent.prototype.createSocket = function createSocket(req, options, cb) {\n var self = this;\n options = util._extend({}, options);\n options = util._extend(options, self.options);\n\n if (!options.servername)\n options.servername = calculateServerName(options, req);\n\n var name = self.getName(options);\n options._agentKey = name;\n\n debug('createConnection', name, options);\n options.encoding = null;\n var called = false;\n const newSocket = self.createConnection(options, oncreate);\n // [patch start]\n if (newSocket) {\n oncreate(null, Object.assign(newSocket, { createdTime: Date.now() }));\n }\n // [patch end]\n function oncreate(err, s) {\n if (called)\n return;\n called = true;\n if (err)\n return cb(err);\n if (!self.sockets[name]) {\n self.sockets[name] = [];\n }\n self.sockets[name].push(s);\n debug('sockets', name, self.sockets[name].length);\n\n function onFree() {\n self.emit('free', s, options);\n }\n s.on('free', onFree);\n\n function onClose(err) {\n debug('CLIENT socket onClose');\n // This is the only place where sockets get removed from the Agent.\n // If you want to remove a socket from the pool, just close it.\n // All socket errors end in a close event anyway.\n self.removeSocket(s, options);\n\n // [patch start]\n self.emit('close');\n // [patch end]\n }\n s.on('close', onClose);\n\n // [patch start]\n // start socket timeout handler\n function onTimeout() {\n debug('CLIENT socket onTimeout');\n s.destroy();\n // Remove it from freeSockets immediately to prevent new requests from being sent through this socket.\n self.removeSocket(s, options);\n self.emit('timeout');\n }\n s.on('timeout', onTimeout);\n // set the default timer\n s.setTimeout(self.timeout);\n // [patch end]\n\n function onRemove() {\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n debug('CLIENT socket onRemove');\n self.removeSocket(s, options);\n s.removeListener('close', onClose);\n s.removeListener('free', onFree);\n s.removeListener('agentRemove', onRemove);\n\n // [patch start]\n // remove socket timeout handler\n s.setTimeout(0, onTimeout);\n // [patch end]\n }\n s.on('agentRemove', onRemove);\n cb(null, s);\n }\n};\n\nfunction calculateServerName(options, req) {\n let servername = options.host;\n const hostHeader = req.getHeader('host');\n if (hostHeader) {\n // abc => abc\n // abc:123 => abc\n // [::1] => ::1\n // [::1]:123 => ::1\n if (hostHeader.startsWith('[')) {\n const index = hostHeader.indexOf(']');\n if (index === -1) {\n // Leading '[', but no ']'. Need to do something...\n servername = hostHeader;\n } else {\n servername = hostHeader.substr(1, index - 1);\n }\n } else {\n servername = hostHeader.split(':', 1)[0];\n }\n }\n return servername;\n}\n\nAgent.prototype.removeSocket = function removeSocket(s, options) {\n var name = this.getName(options);\n debug('removeSocket', name, 'writable:', s.writable);\n var sets = [this.sockets];\n\n // If the socket was destroyed, remove it from the free buffers too.\n if (!s.writable)\n sets.push(this.freeSockets);\n\n for (var sk = 0; sk < sets.length; sk++) {\n var sockets = sets[sk];\n\n if (sockets[name]) {\n var index = sockets[name].indexOf(s);\n if (index !== -1) {\n sockets[name].splice(index, 1);\n // Don't leak\n if (sockets[name].length === 0)\n delete sockets[name];\n }\n }\n }\n\n // [patch start]\n var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0;\n var sockLen = freeLen + this.sockets[name] ? this.sockets[name].length : 0;\n // [patch end]\n\n if (this.requests[name] && this.requests[name].length && sockLen < this.maxSockets) {\n debug('removeSocket, have a request, make a socket');\n var req = this.requests[name][0];\n // If we have pending requests and a socket gets closed make a new one\n this.createSocket(req, options, function(err, newSocket) {\n if (err) {\n process.nextTick(function() {\n req.emit('error', err);\n });\n return;\n }\n newSocket.emit('free');\n });\n }\n};\n\nAgent.prototype.destroy = function destroy() {\n var sets = [this.freeSockets, this.sockets];\n for (var s = 0; s < sets.length; s++) {\n var set = sets[s];\n var keys = Object.keys(set);\n for (var v = 0; v < keys.length; v++) {\n var setName = set[keys[v]];\n for (var n = 0; n < setName.length; n++) {\n setName[n].destroy();\n }\n }\n }\n};\n\nexports.globalAgent = new Agent();\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 * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse \n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n", "/**\n * refer:\n * * @atimb \"Real keep-alive HTTP agent\": https://gist.github.com/2963672\n * * https://github.com/joyent/node/blob/master/lib/http.js\n * * https://github.com/joyent/node/blob/master/lib/https.js\n * * https://github.com/joyent/node/blob/master/lib/_http_agent.js\n */\n\n'use strict';\n\nconst OriginalAgent = require('./_http_agent').Agent;\nconst ms = require('humanize-ms');\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 15s free socket timeout\n if (options.freeSocketKeepAliveTimeout === undefined) {\n options.freeSocketKeepAliveTimeout = 15000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketKeepAliveTimeout`\n if (options.keepAliveTimeout) {\n options.freeSocketKeepAliveTimeout = options.keepAliveTimeout;\n }\n options.freeSocketKeepAliveTimeout = ms(options.freeSocketKeepAliveTimeout);\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket keepalive timeout.\n if (options.timeout === undefined) {\n options.timeout = options.freeSocketKeepAliveTimeout * 2;\n // make sure socket default inactivity timeout >= 30s\n if (options.timeout < 30000) {\n options.timeout = 30000;\n }\n }\n options.timeout = ms(options.timeout);\n\n super(options);\n\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', s => {\n this.requestCount++;\n // last enter free queue timestamp\n s.lastFreeTime = Date.now();\n });\n this.on('timeout', () => {\n this.timeoutSocketCount++;\n });\n this.on('close', () => {\n this.closeSocketCount++;\n });\n this.on('error', () => {\n this.errorSocketCount++;\n });\n }\n\n createSocket(req, options, cb) {\n super.createSocket(req, options, (err, socket) => {\n if (err) {\n this.createSocketErrorCount++;\n return cb(err);\n }\n if (this.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n cb(null, socket);\n });\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n", "/**\n * Https Agent base on custom http agent\n */\n\n'use strict';\n\nconst https = require('https');\nconst HttpAgent = require('./agent');\nconst OriginalHttpsAgent = https.Agent;\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n}\n\n[\n 'createConnection',\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n", "'use strict';\n\nmodule.exports = require('./lib/agent');\nmodule.exports.HttpsAgent = require('./lib/https_agent');\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\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' && isNaN(val) === false) {\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|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 '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 if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= 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 return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#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\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\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 try {\n return window.localStorage;\n } catch (e) {}\n}\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [ 6, 2, 3, 4, 5, 1 ];\n\ntry {\n var supportsColor = require('supports-color');\n if (supportsColor && supportsColor.level >= 2) {\n exports.colors = [\n 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68,\n 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134,\n 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,\n 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204,\n 205, 206, 207, 208, 209, 214, 215, 220, 221\n ];\n }\n} catch (err) {\n // swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(process.stderr.fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var colorCode = '\\u001b[3' + (c < 8 ? c : '8;5;' + c);\n var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = getDate() + name + ' ' + args[0];\n }\n}\n\nfunction getDate() {\n if (exports.inspectOpts.hideDate) {\n return '';\n } else {\n return new Date().toISOString() + ' ';\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log() {\n return process.stderr.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n", "var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n", "module.exports = require('./lib/retry');", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n\n // Default `randomize` to true\n if (!('randomize' in options)) {\n options.randomize = true;\n }\n\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "const retry = require('async-retry');\nconst debug = require('debug')('fetch-retry');\n\n// retry settings\nconst MIN_TIMEOUT = 10;\nconst MAX_RETRIES = 5;\nconst MAX_RETRY_AFTER = 20;\nconst FACTOR = 6;\n\nmodule.exports = exports = setup;\n\nfunction isClientError(err) {\n if (!err) return false;\n return (\n err.code === 'ERR_UNESCAPED_CHARACTERS' ||\n err.message === 'Request path contains unescaped characters'\n );\n}\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch');\n }\n\n async function fetchRetry(url, opts = {}) {\n const retryOpts = Object.assign(\n {\n // timeouts will be [10, 60, 360, 2160, 12960]\n // (before randomization is added)\n minTimeout: MIN_TIMEOUT,\n retries: MAX_RETRIES,\n factor: FACTOR,\n maxRetryAfter: MAX_RETRY_AFTER,\n },\n opts.retry\n );\n\n if (opts.onRetry) {\n retryOpts.onRetry = (error) => {\n opts.onRetry(error, opts);\n if (opts.retry && opts.retry.onRetry) {\n opts.retry.onRetry(error);\n }\n };\n }\n\n try {\n return await retry(async (bail, attempt) => {\n const { method = 'GET' } = opts;\n try {\n // this will be retried\n const res = await fetch(url, opts);\n debug('status %d', res.status);\n if ((res.status >= 500 && res.status < 600) || res.status === 429) {\n // NOTE: doesn't support http-date format\n const retryAfter = parseInt(res.headers.get('retry-after'), 10);\n if (retryAfter) {\n if (retryAfter > retryOpts.maxRetryAfter) {\n return res;\n } else {\n await new Promise((r) => setTimeout(r, retryAfter * 1e3));\n }\n }\n throw new ResponseError(res);\n } else {\n return res;\n }\n } catch (err) {\n const clientError = isClientError(err);\n const isRetry = !clientError && attempt <= retryOpts.retries;\n debug(\n `${method} ${url} error (status = ${err.status}). ${\n isRetry ? 'retrying' : ''\n }`,\n err\n );\n if (clientError) {\n return bail(err);\n }\n throw err;\n }\n }, retryOpts);\n } catch (err) {\n if (err instanceof ResponseError) {\n return err.res;\n }\n throw err;\n }\n }\n\n for (const key of Object.keys(fetch)) {\n fetchRetry[key] = fetch[key];\n }\n fetchRetry.default = fetchRetry;\n\n return fetchRetry;\n}\n\nclass ResponseError extends Error {\n constructor(res) {\n super(res.statusText);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ResponseError);\n }\n\n this.name = this.constructor.name;\n this.res = res;\n\n // backward compat\n this.code = this.status = this.statusCode = res.status;\n this.url = res.url;\n }\n}\n\nexports.ResponseError = ResponseError;\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n function run(resolve, reject) {\n var options = opts || {};\n var op = retrier.operation(options);\n\n // We allow the user to abort retrying\n // this makes sense in the cases where\n // knowledge is obtained that retrying\n // would be futile (e.g.: auth errors)\n\n function bail(err) {\n reject(err || new Error('Aborted'));\n }\n\n function onError(err, num) {\n if (err.bail) {\n bail(err);\n return;\n }\n\n if (!op.retry(err)) {\n reject(op.mainError());\n } else if (options.onRetry) {\n options.onRetry(err, num);\n }\n }\n\n function runAttempt(num) {\n var val;\n\n try {\n val = fn(bail, num);\n } catch (err) {\n onError(err, num);\n return;\n }\n\n Promise.resolve(val)\n .then(resolve)\n .catch(function catchIt(err) {\n onError(err, num);\n });\n }\n\n op.attempt(runAttempt);\n }\n\n return new Promise(run);\n}\n\nmodule.exports = retry;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve4(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve4(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction resolve6(host, resolver) {\n return new Promise((resolve, reject) => {\n resolver.resolve6(host, { ttl: true }, (err, res) => {\n if (err)\n return reject(err);\n resolve(res);\n });\n });\n}\nexports.default = resolve6;\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dns_1 = __importDefault(require(\"dns\"));\nconst lru_cache_1 = __importDefault(require(\"lru-cache\"));\nconst async_retry_1 = __importDefault(require(\"async-retry\"));\nconst resolve4_1 = __importDefault(require(\"./resolve4\"));\nconst resolve6_1 = __importDefault(require(\"./resolve6\"));\nconst lruOptions = { max: 500 };\nlet cache4;\nlet cache6;\nsetupCache();\nasync function dnsResolve(host, options = {}) {\n const { ipv6 = false, minimumCacheTime = 300, refreshCache = false, retryOpts = { minTimeout: 10, retries: 3, factor: 5 }, resolver = dns_1.default } = options;\n const { cache, resolve } = ipv6\n ? { cache: cache6, resolve: resolve6_1.default }\n : { cache: cache4, resolve: resolve4_1.default };\n if (refreshCache) {\n cache.del(host);\n }\n else {\n const ip = cache.get(host);\n if (ip)\n return await ip;\n }\n const p = (async () => {\n const res = await async_retry_1.default(() => resolve(host, resolver), retryOpts);\n const rec = res[Math.floor(Math.random() * res.length)];\n const ttl = Math.max(rec.ttl, minimumCacheTime);\n cache.set(host, rec.address, ttl * 1000);\n return rec.address;\n })();\n cache.set(host, p, 5000);\n return p;\n}\nexports.default = dnsResolve;\nfunction setupCache() {\n cache4 = new lru_cache_1.default(lruOptions);\n cache6 = new lru_cache_1.default(lruOptions);\n}\nexports.setupCache = setupCache;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dns_resolve_1 = require(\"./dns-resolve\");\nexports.default = dns_resolve_1.default;\n", "// Used for testing\nexports.dnsCachedUrl = Symbol('dnsCachedUrl')\n", "const { isIP } = require('net')\nconst { format, parse } = require('url')\nconst resolve = require('@zeit/dns-cached-resolve').default\nconst { dnsCachedUrl } = require('./util')\n\nmodule.exports = setup\n\nconst isRedirect = v => ((v / 100) | 0) === 3\n\nfunction setup(fetch) {\n if (!fetch) {\n fetch = require('node-fetch')\n }\n const { Headers } = fetch\n\n async function fetchCachedDns(url, opts) {\n const parsed = parse(url)\n const originalHost = parsed.host\n const ip = isIP(parsed.hostname)\n if (ip === 0) {\n if (!opts) opts = {}\n opts.headers = new Headers(opts.headers)\n if (!opts.headers.has('Host')) {\n opts.headers.set('Host', parsed.host)\n }\n opts.redirect = 'manual'\n parsed.host = await resolve(parsed.hostname)\n if (parsed.port) {\n parsed.host += `:${parsed.port}`\n }\n url = format(parsed)\n }\n const res = await fetch(url, opts)\n\n // Update `res.url` to contain the original hostname instead of the IP address\n res[dnsCachedUrl] = url\n Object.defineProperty(res, 'url', {\n get() {\n return parsed.href\n }\n })\n\n if (isRedirect(res.status)) {\n const redirectOpts = Object.assign({}, opts)\n redirectOpts.headers = new Headers(opts.headers)\n\n // Per fetch spec, for POST request with 301/302 response, or any\n // request with 303 response, use GET when following redirect\n if (\n res.status === 303 ||\n ((res.status === 301 || res.status === 302) && opts.method === 'POST')\n ) {\n redirectOpts.method = 'GET'\n redirectOpts.body = null\n redirectOpts.headers.delete('content-length')\n }\n\n // Set the proper `Host` request header, considering that node-fetch will\n // absolutize a relative redirect URL, so the IP address needs to be\n // replaced with the original hostname as well.\n const location = res.headers.get('Location')\n const parsedLocation = parse(location)\n if (parsedLocation.host === parsed.host) {\n parsedLocation.host = originalHost\n }\n redirectOpts.headers.set('Host', parsedLocation.host)\n\n if (opts.onRedirect) {\n opts.onRedirect(res, redirectOpts)\n }\n\n return fetchCachedDns(format(parsedLocation), redirectOpts)\n }\n return res\n }\n\n for (const key of Object.keys(fetch)) {\n fetchCachedDns[key] = fetch[key]\n }\n\n fetchCachedDns.default = fetchCachedDns\n\n return fetchCachedDns\n}\n", "const {parse: parseUrl} = require('url');\nconst HttpAgent = require('agentkeepalive');\nconst debug = require('debug')('@vercel/fetch');\nconst setupFetchRetry = require('@vercel/fetch-retry');\nconst setupFetchCachedDns = require('@vercel/fetch-cached-dns');\nconst urlModule = require('url');\n\nconst {HttpsAgent} = HttpAgent;\nconst {URLSearchParams} = urlModule;\n\nconst AGENT_OPTIONS = {\n\tmaxSockets: 200,\n\tmaxFreeSockets: 20,\n\ttimeout: 60000,\n\tfreeSocketTimeout: 30000,\n\tfreeSocketKeepAliveTimeout: 30000 // free socket keepalive for 30 seconds\n};\n\nlet defaultHttpGlobalAgent;\nlet defaultHttpsGlobalAgent;\n\nfunction getDefaultHttpGlobalAgent(agentOpts) {\n\treturn (defaultHttpGlobalAgent =\n\t\tdefaultHttpGlobalAgent ||\n\t\t(debug('init http agent'), new HttpAgent(agentOpts)));\n}\n\nfunction getDefaultHttpsGlobalAgent(agentOpts) {\n\treturn (defaultHttpsGlobalAgent =\n\t\tdefaultHttpsGlobalAgent ||\n\t\t(debug('init https agent'), new HttpsAgent(agentOpts)));\n}\n\nfunction getAgent(url, agentOpts) {\n\treturn /^https/.test(url)\n\t\t? getDefaultHttpsGlobalAgent(agentOpts)\n\t\t: getDefaultHttpGlobalAgent(agentOpts);\n}\n\nfunction setupVercelFetch(fetch, agentOpts = {}) {\n\treturn async function vercelFetch(url, opts = {}) {\n\t\tif (!opts.agent) {\n\t\t\t// Add default `agent` if none was provided\n\t\t\topts.agent = getAgent(url, {AGENT_OPTIONS, ...agentOpts});\n\t\t}\n\n\t\topts.redirect = 'manual';\n\t\topts.headers = new fetch.Headers(opts.headers);\n\t\t// Workaround for node-fetch + agentkeepalive bug/issue\n\t\topts.headers.set(\n\t\t\t'host',\n\t\t\topts.headers.get('host') || parseUrl(url).host\n\t\t);\n\n\t\t// Convert Object bodies to JSON if they are JS objects\n\t\tif (\n\t\t\topts.body &&\n\t\t\t!(opts.body instanceof URLSearchParams) &&\n\t\t\ttypeof opts.body === 'object' &&\n\t\t\t!Buffer.isBuffer(opts.body)\n\t\t) {\n\t\t\topts.body = JSON.stringify(opts.body);\n\t\t\topts.headers.set('Content-Type', 'application/json');\n\t\t\topts.headers.set('Content-Length', Buffer.byteLength(opts.body));\n\t\t}\n\n\t\t// Check the agent on redirections\n\t\topts.onRedirect = (res, redirectOpts) => {\n\t\t\tredirectOpts.agent = getAgent(res.headers.get('Location'));\n\t\t};\n\n\t\ttry {\n\t\t\tdebug('%s %s', opts.method || 'GET', url);\n\t\t\treturn await fetch(url, opts);\n\t\t} catch (err) {\n\t\t\terr.url = url;\n\t\t\terr.opts = opts;\n\t\t\tthrow err;\n\t\t}\n\t};\n}\n\nfunction setup(fetch, options) {\n\tif (!fetch) {\n\t\tfetch = require('node-fetch');\n\t}\n\n\tconst fd = fetch.default;\n\tif (fd) {\n\t\t// combines \"fetch.Headers\" with \"fetch.default\" function.\n\t\t// workaround for \"fetch.Headers is not a constructor\"\n\t\tfetch = Object.assign((...args) => fd(...args), fd, fetch);\n\t}\n\n\tif (typeof fetch !== 'function') {\n\t\tthrow new Error(\n\t\t\t\"fetch() argument isn't a function; did you forget to initialize your `@vercel/fetch` import?\"\n\t\t);\n\t}\n\n\tfetch = setupFetchCachedDns(fetch);\n\tfetch = setupFetchRetry(fetch);\n\tfetch = setupVercelFetch(fetch, options);\n\treturn fetch;\n}\n\nmodule.exports = setup;\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "/* @flow */\n/*::\n\ntype DotenvParseOptions = {\n debug?: boolean\n}\n\n// keys and values from src\ntype DotenvParseOutput = { [string]: string }\n\ntype DotenvConfigOptions = {\n path?: string, // path to .env file\n encoding?: string, // encoding of .env file\n debug?: string // turn on logging for debugging purposes\n}\n\ntype DotenvConfigOutput = {\n parsed?: DotenvParseOutput,\n error?: Error\n}\n\n*/\n\nconst fs = require('fs')\nconst path = require('path')\n\nfunction log (message /*: string */) {\n console.log(`[dotenv][DEBUG] ${message}`)\n}\n\nconst NEWLINE = '\\n'\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)?\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\n|\\r|\\r\\n/\n\n// Parses src into an Object\nfunction parse (src /*: string | Buffer */, options /*: ?DotenvParseOptions */) /*: DotenvParseOutput */ {\n const debug = Boolean(options && options.debug)\n const obj = {}\n\n // convert Buffers before splitting into lines and processing\n src.toString().split(NEWLINES_MATCH).forEach(function (line, idx) {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = (keyValueArr[2] || '')\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === \"'\" && val[end] === \"'\"\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted) {\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n } else {\n // remove surrounding whitespace\n val = val.trim()\n }\n\n obj[key] = val\n } else if (debug) {\n log(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n }\n })\n\n return obj\n}\n\n// Populates process.env from .env file\nfunction config (options /*: ?DotenvConfigOptions */) /*: DotenvConfigOutput */ {\n let dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding /*: string */ = 'utf8'\n let debug = false\n\n if (options) {\n if (options.path != null) {\n dotenvPath = options.path\n }\n if (options.encoding != null) {\n encoding = options.encoding\n }\n if (options.debug != null) {\n debug = true\n }\n }\n\n try {\n // specifying an encoding returns a string instead of a buffer\n const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug })\n\n Object.keys(parsed).forEach(function (key) {\n if (!Object.prototype.hasOwnProperty.call(process.env, key)) {\n process.env[key] = parsed[key]\n } else if (debug) {\n log(`\"${key}\" is already defined in \\`process.env\\` and will not be overwritten`)\n }\n })\n\n return { parsed }\n } catch (e) {\n return { error: e }\n }\n}\n\nmodule.exports.config = config\nmodule.exports.parse = parse\n", "/*\n *\tCreated by Trevor Sears .\n *\t10:53 PM -- June 11th, 2019.\n *\tProject: promise-any-polyfill\n */\n\nimport { ReturnResultOrPromiseLike, TypeOrPromiseLike } from \"./declaration\";\n\n/**\n * An implementation of the upcoming `Promise.any` functionality.\n *\n * @author Trevor Sears \n * @version v0.1.0\n * @since v0.1.0\n */\nPromise.any = async <\n\tT = any,\n\tR extends ReturnResultOrPromiseLike = ReturnResultOrPromiseLike>(values: Iterable>):\n\tPromise => {\n\t\n\treturn new Promise((resolve: (value?: (TypeOrPromiseLike)) => void, reject: (reason?: any) => void): void => {\n\t\t\n\t\tlet hasResolved: boolean = false;\n\t\tlet iterableCount: number = 0;\n\t\tlet rejectionReasons: any[] = [];\n\t\t\n\t\tconst resolveOnce: (value?: (TypeOrPromiseLike)) => void = (value?: (TypeOrPromiseLike)): void => {\n\t\t\t\n\t\t\tif (!hasResolved) {\n\t\t\t\t\n\t\t\t\thasResolved = true;\n\t\t\t\tresolve(value);\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t};\n\t\t\n\t\tconst rejectionCheck: (reason: any) => void = (reason: any): void => {\n\t\t\t\n\t\t\trejectionReasons.push(reason);\n\t\t\t\n\t\t\tif (rejectionReasons.length >= iterableCount) reject(rejectionReasons);\n\t\t\t\n\t\t};\n\t\t\n\t\tfor (let value of values) {\n\t\t\t\n\t\t\titerableCount++;\n\t\t\t\n\t\t\tif ((value as any).then !== undefined) {\n\t\t\t\t\n\t\t\t\tlet promiseLikeValue: PromiseLike> =\n\t\t\t\t\tvalue as unknown as PromiseLike>;\n\t\t\t\t\n\t\t\t\tpromiseLikeValue.then((result: TypeOrPromiseLike): void => resolveOnce(result));\n\t\t\t\t\n\t\t\t\tif ((value as any).catch !== undefined) {\n\t\t\t\t\t\n\t\t\t\t\tlet promiseValue: Promise> = promiseLikeValue as Promise>;\n\t\t\t\t\t\n\t\t\t\t\tpromiseValue.catch((reason: any): void => rejectionCheck(reason));\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t});\n\t\n};", "#!/usr/bin/env node\n\nimport childProcess from \"child_process\";\nimport fs from \"fs\";\nimport parse from \"git-url-parse\";\nimport meow from \"meow\";\nimport path from \"path\";\nimport { findGitHubToken } from \"src/findGitHubToken\";\nimport tar from \"tar\";\nimport tmp from \"tmp\";\nimport { fetch } from \"./fetch\";\nimport which from \"which\";\nimport dotenv from \"dotenv\";\nimport type { Writable } from \"stream\";\nimport zlib from \"zlib\";\nimport rimraf from \"rimraf\";\n\nconst _SEARCH_PATH = path.join(__dirname, \"Search\");\nconst _REGISTER_PROTOCOL_PATH = path.join(__dirname, \"registerProtocol\");\nconst _CONFIRM_PROMPT_PATH = path.join(__dirname, \"confirmPrompt\");\n\nfunction resolveAfterDelay(delay) {\n return new Promise((resolve, reject) => setTimeout(resolve, delay));\n}\n// global.fetch = require(\"node-fetch\");\n\n// if (typeof global.AbortController === \"undefined\") {\n// require(\"abortcontroller-polyfill/dist/polyfill-patch-fetch\");\n// }\n\n// This is to trick esbuild into code splitting these files\n\n// const AbortController = global.AbortController;\n\nlet exiting = false;\n\nconst HOME =\n process.platform === \"win32\"\n ? path.join(process.env.HOMEDRIVE, process.env.HOMEPATH)\n : process.env.HOME;\n\nconst GIT_PEEK_ENV_PATH = path.join(HOME, \".git-peek\");\n\nlet editorsToTry = [\"code\", \"subl\", \"code-insiders\", \"vim\", \"vi\"];\n\nlet shouldKeep = false;\n\nlet logFunction = console.log;\nlet exceptionLogger = (...err) => {\n if (exiting) return;\n console.error(...err);\n};\n\n// fs.rmSync was added in Node v14.14\n// See docs: https://nodejs.org/api/fs.html#fs_fs_rmsync_path_options\nif (!fs.rmSync) {\n const rimraf = require(\"rimraf\");\n fs.rmSync = (path: string, options: fs.RmOptions) => {\n // Just in-case!\n if (path === \"/\") return;\n if (path === \"/Applications\") return;\n return rimraf.sync(path);\n };\n}\n\nasync function fetchEditor(_editor, silent) {\n let chosenEditor =\n !_editor || _editor === \"auto\" ? process.env.EDITOR : _editor;\n\n if (!chosenEditor?.trim().length) {\n for (let editor of editorsToTry) {\n try {\n chosenEditor = await which(editor);\n if (chosenEditor.includes(\"code\") || chosenEditor.includes(\"subl\")) {\n chosenEditor = `\"` + chosenEditor + `\"`;\n }\n break;\n } catch (exception) {}\n }\n }\n\n if (!chosenEditor || !chosenEditor?.trim()?.length) {\n if (!silent)\n console.warn(\n \"No editor detected, defaulting to Visual Studio Code. Set an editor with the -e flag\"\n );\n chosenEditor = \"code\";\n }\n\n return chosenEditor;\n}\n\nconst DOTENV_EXISTS = fs.existsSync(GIT_PEEK_ENV_PATH);\n\nif (typeof Promise.any !== \"function\") {\n require(\"promise-any-polyfill\");\n}\n\nenum WaitFor {\n childProcessExit,\n downloadComplete,\n confirm,\n}\n\nconst exitBehavior = {\n confirm: false,\n waitFor: WaitFor.downloadComplete,\n};\n\n// This will break if the github repo is called pull or if the organization is called pull\nfunction isPullRequest(url: string) {\n if (!url.includes(GITHUB_BASE_DOMAIN) || !url.includes(\"/pull/\")) {\n return false;\n }\n\n return true;\n}\n\nasync function resolveRefFromPullRequest(url: string) {\n let _url = url.replace(`https://${GITHUB_BASE_DOMAIN}`, \"\");\n const [__, owner, repo, _, pullRequestID] = _url.split(\"/\");\n\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}/pulls/${pullRequestID}`;\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load pull request url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n const { label, sha } = json.head;\n return [label.split(\":\")[0], repo, sha];\n}\n\nasync function resolveRefFromURL(owner: string, repo: string) {\n const apiURL = `https://${GITHUB_API_DOMAIN}/repos/${owner}/${repo}`;\n if (process.env.VERBOSE)\n console.log(\"Couldn't auto-detect ref, asking github what the ref is\");\n\n const result = await githubFetch(apiURL);\n if (!result.ok) {\n console.error(\n \"Failed to load github url: HTTP \",\n result.status,\n \"\\n\",\n await result.text()\n );\n process.exit();\n }\n\n const json = await result.json();\n\n return json.default_branch ?? \"main\";\n}\n\nlet didRemove = false;\n\nlet tmpobj;\nlet slowTask;\n\nlet instance: Command;\n\nconst followRedirect = {\n redirect: \"follow\",\n};\nenum EditorMode {\n unknown = 0,\n vscode = 1,\n sublime = 2,\n vim = 3,\n}\n\nfunction githubFetch(url) {\n const token = findGitHubToken();\n if (token && !followRedirect.headers) {\n followRedirect.headers = { authorization: `Bearer ${token}` };\n }\n return fetch(url, followRedirect);\n}\n\nfunction noop() {}\nlet retryCount = 0;\nlet didPrintDeleted = false;\nfunction doExit() {\n let wasExiting = exiting;\n exiting = true;\n\n if (!didRemove && !shouldKeep && tmpobj) {\n try {\n tmpobj?.removeCallback();\n tmpobj = null;\n didRemove = false;\n } catch (exception) {}\n }\n\n if (instance?._tar) {\n if (!instance._tar.writableEnded) {\n try {\n instance._tar.warn = noop;\n instance._tar.abort();\n } catch (exception) {}\n }\n }\n\n if (instance?.slowTask && exitBehavior.waitFor !== WaitFor.downloadComplete) {\n if (instance.slowTask.connected) {\n try {\n instance.slowTask.kill();\n instance.slowTask.disconnect();\n } catch (exception) {}\n }\n }\n\n if (!shouldKeep && instance?.destination?.length && retryCount < 10) {\n // Error: ENOTEMPTY: directory not empty, rmdir\n if (process.platform === \"win32\") {\n try {\n rimraf.sync(instance.destination + \"/*/**\");\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n } else {\n try {\n rimraf.sync(instance.destination);\n } catch (exception) {\n if (process.env.VERBOSE) console.error(exception);\n }\n }\n\n if (fs.existsSync(instance.destination)) {\n setTimeout(doExit, 32);\n if (process.env.VERBOSE)\n console.log(`Failed to delete, retry attempt #${retryCount}/10`);\n\n retryCount++;\n return;\n }\n }\n\n if (\n !shouldKeep &&\n instance?.destination?.length &&\n !fs.existsSync(instance.destination) &&\n !didPrintDeleted\n ) {\n instance.slowTask = null;\n instance.log(\"\uD83D\uDDD1 Deleted repository\");\n didPrintDeleted = true;\n }\n\n process.emitWarning = noop;\n process.exit();\n}\n\nprocess.once(\"SIGINT\", doExit);\n\nclass Command {\n log(text) {\n if (this.editorMode === EditorMode.vim && this.slowTask) return;\n console.log(text);\n }\n\n editorMode: EditorMode = EditorMode.unknown;\n destination: string;\n static description =\n \"Quickly open a remote Git repository with your local text editor into a temporary folder.\";\n static usage = \"[git link or github link]\";\n\n static args = [{ name: \"url\" }];\n\n didFinish = false;\n async _prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n destination: string\n ) {\n const url = `https://cdn.jsdelivr.net/gh/${owner}/${repo}@${ref}/${\n filepath || \"README.md\"\n }`;\n\n const resp = await fetch(url, {\n redirect: \"follow\",\n // signal: aborter.signal,\n });\n\n if (!resp.ok || resp.status === 404) {\n return false;\n }\n\n if (exiting) return;\n\n const text = await resp.text();\n\n if (text.trim().length) {\n if (exiting) return;\n await fs.promises.mkdir(path.dirname(destination), { recursive: true });\n if (exiting) return;\n await fs.promises.writeFile(destination, text, \"utf8\");\n return true;\n }\n\n throw \"nope\";\n }\n prefetchGithub(\n repo: string,\n owner: string,\n filepath: string,\n ref: string,\n fallback: string,\n destination: string\n ) {\n return Promise.any([\n this._prefetchGithub(repo, owner, filepath, ref, destination),\n this._prefetchGithub(repo, owner, filepath, fallback, destination),\n ]);\n }\n\n slowTask: childProcess.ChildProcess = null;\n\n search(input: string) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderInk } = require(SEARCH_PATH);\n process.emitWarning = _disableWarning;\n\n return renderInk(input);\n }\n\n async _unzip(source: string) {\n const response = await githubFetch(source);\n if (response.ok) {\n return response.body;\n } else if (response.status === 403 || response.status === 401) {\n const error = `Failed to load git repo: HTTP ${response.status}\n${await response.text()}\n-\nIf this is a private repo, consider setting $GITHUB_TOKEN. To save $GITHUB_TOKEN, store it in $HOME/.git-peek (a .env file)`;\n console.error(error);\n throw error;\n } else {\n throw await response.text();\n }\n }\n didUseFallback = false;\n _tar: Writable;\n unzipPromise: Promise;\n archiveStartPromise: Promise;\n unzip(owner, name, ref, fallback, to: string) {\n return new Promise((resolve2, reject2) => {\n this.archiveStartPromise = new Promise((resolve3, reject3) => {\n this.unzipPromise = new Promise(async (resolve, reject) => {\n const archive = await this.getArchive(\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${ref}`,\n `https://${GITHUB_API_DOMAIN}/repos/${owner}/${name}/tarball/${fallback}`\n );\n resolve3();\n\n this.log(\"\u23F3 Extracting repository to temp folder...\");\n archive.pipe(\n (this._tar = tar.x({\n cwd: to,\n strip: 1,\n \"keep-newer-files\": true,\n noMtime: true,\n // onentry(entry) {},\n // onwarn(message, data) {},\n }))\n );\n\n archive.on(\"end\", () => {\n if (exiting) return;\n this.log(\"\uD83D\uDCBF Finished downloading repository!\");\n resolve();\n resolve2();\n });\n archive.on(\"error\", (error) => {\n if (didRemove || exiting) return;\n\n this.log(\"\uD83D\uDCBF Failed to download repository!\");\n reject(error);\n reject2(error);\n });\n });\n });\n });\n }\n\n clone(source: string, to: string) {\n const git = `git clone --filter=tree:0 --single-branch --depth=1 ${source} ${to}`;\n this.log(`Cloning ${source} to temp folder...`);\n return new Promise((resolve, reject) => {\n const child = childProcess.exec(git, {});\n child.stderr.pipe(process.stderr);\n child.once(\"close\", () => {\n resolve();\n });\n\n child.once(\"exit\", () => {\n resolve();\n });\n\n child.once(\"error\", (err) => {\n reject(err);\n });\n });\n }\n\n parse() {\n const cli = meow(\n `\nUSAGE\n $ git-peek [git link or github link or search query or repository file path]\n\nEXAMPLES\n git peek https://github.com/evanw/esbuild/blob/master/lib/common.ts\n git peek https://github.com/ylukem/pin-go\n git peek https://github.com/jarred-sumner/atbuild\n git peek hanford/trends\n git peek react\n git peek https://github.com/jarred-sumner/fastbench.dev/tree/main/\n\nOPTIONS\n -e, --editor=editor [default: ${\n process.env.EDITOR?.length ? process.env.EDITOR : \"auto\"\n }] editor to open with, possible values:\n auto, ${editorsToTry.join(\", \")}.\n By default, it will search $EDITOR. If not found, it\n will try code, then subl, then vim.\n\n -d [default: false] Ask the GitHub API\n for the default_branch to clone.\n\n -r, --register [default: false] Register the git-peek:// url protocol\n This allows the \"Open\" buttons to work on\n github.com once you've installed the extension. Only\n supported on macOS (Windows coming soon).\n\n -w, --wait [default: false] wait to open the editor until the\n repository finishes downloading. always on for vi.\n\n -no-keep [default: false] skip deleting repository on exit.\n\n -b, --branch [default: \"master\"] select a branch/ref to use.\n if the repository doesn't use master/main,\n you'll want to set this manually. but it will\n try to infer from the input by default.\n\n -o, --out= [default: system temp directory] output directory to\n store repository files in. If you're cloning a large\n repo and your tempdir is an in-memory storage (/tmp),\n maybe change this.\n\n -h, --help show CLI help\n\nENVIRONMENT VARIABLES:\n $EDITOR: ${process.env.EDITOR?.length ? process.env.EDITOR : \"not set\"}\n $GITHUB_TOKEN: ${\n process.env.GITHUB_TOKEN?.length\n ? new Array(process.env.GITHUB_TOKEN.length).fill(\"*\").join(\"\")\n : \"not set\"\n }\n $GITHUB_BASE_DOMAIN: ${\n process.env.GITHUB_BASE_DOMAIN?.length\n ? process.env.GITHUB_BASE_DOMAIN\n : \"not set\"\n }\n $GITHUB_API_DOMAIN: ${\n process.env.GITHUB_API_DOMAIN?.length\n ? process.env.GITHUB_API_DOMAIN\n : \"not set\"\n }\n .env: ${DOTENV_EXISTS ? \"\u2705\" : \"\u274C\"} ${GIT_PEEK_ENV_PATH}\n\nFor use with private GitHub repositories, set $GITHUB_TOKEN to a personal\naccess token. To persist it, store it in your shell or the .env shown above.\n\nFor use with GitHub Enterprise, set $GITHUB_BASE_DOMAIN and $GITHUB_API_DOMAIN\nto the appropriate URLs.\n`.trim(),\n {\n flags: {\n fromscript: {\n type: \"boolean\",\n default: false,\n },\n register: {\n type: \"boolean\",\n default: false,\n alias: \"r\",\n description: \"Register protocol handler\",\n },\n confirm: {\n type: \"boolean\",\n default: false,\n alias: \"c\",\n description: \"Confirm before deleting\",\n },\n out: {\n type: \"string\",\n default: \"\",\n alias: \"o\",\n description:\n \"Parent directory to store the repository in. Defaults to system temp folder.\",\n },\n branch: {\n type: \"string\",\n default: \"\",\n alias: \"b\",\n description: \"branch/ref to use when fetching\",\n },\n defaultBranch: {\n type: \"boolean\",\n default: false,\n alias: \"d\",\n description: \"Check default branch\",\n },\n keep: {\n type: \"boolean\",\n default: false,\n alias: \"k\",\n description: \"Don't delete the repository on exit.\",\n },\n wait: {\n type: \"boolean\",\n default: false,\n alias: \"w\",\n description:\n \"Wait for the repository to completely download before opening. Defaults to false, unless its vim. Then its always true.\",\n },\n help: {\n type: \"boolean\",\n default: false,\n alias: \"h\",\n isRequired: false,\n },\n version: {\n type: \"boolean\",\n default: false,\n alias: \"v\",\n isRequired: false,\n },\n editor: {\n type: \"string\",\n isMultiple: false,\n isRequired: false,\n default: \"auto\",\n alias: \"e\",\n description: `editor to open with, possible values: auto, code, vim, subl. By default, it will search $EDITOR. If not found, it will try code, then subl, then vim.`,\n },\n },\n }\n );\n\n return cli;\n }\n archive: NodeJS.ReadableStream;\n async getArchive(source: string, fallbackSource: string) {\n let archive: NodeJS.ReadableStream;\n try {\n archive = await this._unzip(source);\n } catch (exception) {\n try {\n this.didUseFallback = true;\n archive = await this._unzip(fallbackSource);\n } catch (exception) {\n if (exiting) return;\n console.error(\n `Invalid repository link. Tried:\\n- ${source}\\n- ${fallbackSource}`\n );\n doExit();\n process.exit();\n }\n }\n\n this.archive = archive;\n return archive;\n }\n\n async run() {\n const cli = this.parse();\n const {\n help,\n version,\n out: tempBaseDir,\n branch,\n defaultBranch,\n register,\n } = cli.flags;\n\n shouldKeep = cli.flags.keep;\n\n if (\n cli.flags.fromscript &&\n process.env.SAY_DEBUG?.length &&\n process.platform === \"darwin\"\n ) {\n console.log = (...args) =>\n childProcess.exec(`say -v \"Samantha\" \"${args.join(\" \")}\"`);\n }\n if (help) {\n cli.showHelp(0);\n process.exit(0);\n }\n\n if (version) {\n console.log(require(\"package.json\").version);\n process.exit(0);\n }\n\n const {\n flags: { editor: _editor = \"auto\" },\n } = cli;\n\n if (register) {\n await require(REGISTER_PROTOCOL_PATH).register(\n await fetchEditor(_editor, false)\n );\n return;\n }\n\n let url = cli.input[0]?.trim() ?? \"\";\n\n if (url.includes(\"git-peek://\")) {\n url = url.replace(\"git-peek://\", \"\").trim();\n }\n\n // url = url.replace(\"/blob/\", \"/tree/\");\n\n let link;\n\n let isMalformed = false;\n if (!url.includes(\"://\") && url.split(\"/\").length === 2) {\n const [owner, repo] = url.split(\"/\");\n\n if (repo.trim().length) {\n url = `https://${GITHUB_BASE_DOMAIN}/${owner}/${repo}`;\n } else {\n isMalformed = true;\n }\n }\n\n if (!isMalformed) {\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n while (!link) {\n if (isMalformed) {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n }\n\n try {\n link = parse(url);\n } catch (exception) {\n try {\n url = await this.search(url);\n isMalformed = !url || !url.includes(\"/\") || url.includes(\" \");\n } catch (exception) {\n this.log(exception);\n }\n }\n }\n\n let ref = link.ref;\n\n if (\n link.resource === GITHUB_BASE_DOMAIN &&\n (branch === \"default\" ||\n defaultBranch ||\n (link.ref === \"\" && cli.flags.fromscript))\n ) {\n ref = await resolveRefFromURL(link.owner, link.name);\n } else if (branch !== \"\") {\n ref = branch;\n } else if (!ref) {\n ref = \"master\";\n }\n\n if (url && url.length && isPullRequest(url)) {\n if (process.env.VERBOSE) this.log(\"Resolving ref from pull request...\");\n const [newOwner, newName, newRef] = await resolveRefFromPullRequest(url);\n link.name = newName;\n link.owner = newOwner;\n ref = newRef;\n }\n\n if (process.env.VERBOSE)\n this.log(`Fetching ${link.owner}/${link.name}#${ref}...`);\n\n const start = new Date().getTime();\n\n let prefix = link.name + \"@\" + ref;\n\n tmpobj = tmp.dirSync(\n tempBaseDir?.length\n ? {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n tmpdir: path.resolve(process.cwd(), tempBaseDir),\n }\n : {\n unsafeCleanup: true,\n keep: shouldKeep,\n prefix: prefix,\n postfix: !cli.flags.keep ? \"-peekautodelete\" : \"\",\n }\n );\n this.destination = tmpobj.name;\n let chosenEditorPromise = fetchEditor(_editor, false);\n\n didRemove = false;\n process.once(\"beforeExit\", doExit);\n process.once(\"SIGABRT\", doExit);\n process.once(\"SIGQUIT\", doExit);\n\n let specificFile = link.filepath;\n let usingDefaultFile = !specificFile;\n\n if (usingDefaultFile) {\n specificFile = \"README.md\";\n }\n\n let openPath = path.join(tmpobj.name, specificFile);\n\n // From a simple benchmark, unzip is 2x faster than git clone.\n if (link.resource === GITHUB_BASE_DOMAIN) {\n let fallback = ref === \"main\" ? \"master\" : \"main\";\n\n let prefetchPromise;\n if (ALLOW_JSDELIVR) {\n prefetchPromise = this.prefetchGithub(\n link.name,\n link.owner,\n specificFile,\n ref,\n fallback,\n openPath\n );\n }\n let unzipPromise = this.unzip(\n link.owner,\n link.name,\n ref,\n fallback,\n tmpobj.name\n );\n let archiveStartPromise = this.archiveStartPromise.then(() =>\n resolveAfterDelay(100)\n );\n\n if (prefetchPromise) {\n await Promise.any([prefetchPromise, unzipPromise, archiveStartPromise]);\n } else {\n await Promise.any([unzipPromise, archiveStartPromise]);\n }\n } else {\n await this.clone(link.href, tmpobj.name);\n }\n\n let editorSpecificCommands = [];\n\n // console.log(path.join(tmpobj.name, specificFile));\n\n this.editorMode = EditorMode.unknown;\n let chosenEditor = await chosenEditorPromise;\n\n // VSCode is the happy case.\n // When passed a folder, \"--wait\" correctly waits until the Window is closed.\n // This is NOT the case in Sublime Text.\n if (chosenEditor.includes(\"code\")) {\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n\n this.editorMode = EditorMode.vscode;\n editorSpecificCommands.push(\"-w\", \"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`-g \"${path.resolve(openPath)}\":0:0`);\n }\n\n // So we cannot support auto-deleting on progrma exit immediately with Sublime Text.\n // Because \"--wait\" only applies to files. So you'd be looking at a file. You close it.\n // And bam! All the files are gone.\n // We don't want that. That's bad UX. So we don't do \"--wait\" for Sublime Text.\n } else if (chosenEditor.includes(\"subl\")) {\n if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n }\n\n shouldKeep = true;\n this.editorMode = EditorMode.sublime;\n chosenEditor = chosenEditor.replace(\"--wait\", \"\", \"-w\", \"\").trim();\n editorSpecificCommands.push(\"-n\");\n\n if (specificFile) {\n editorSpecificCommands.push(`\"${path.resolve(openPath)}\":0:0`);\n }\n // TODO: handle go to specific line for vim.\n } else if (chosenEditor.includes(\"vi\")) {\n this.editorMode = EditorMode.vim;\n exitBehavior.confirm = cli.flags.confirm;\n exitBehavior.waitFor = WaitFor.childProcessExit;\n // Opening a shell is a little weird when its from the extension\n // So instead, we just wait for it to download, and\n // rely on tmp dir deleting to reoslve it\n } else if (cli.flags.fromscript) {\n exitBehavior.waitFor = WaitFor.downloadComplete;\n exitBehavior.confirm = cli.flags.confirm;\n } else {\n exitBehavior.waitFor = WaitFor.confirm;\n exitBehavior.confirm = cli.flags.confirm;\n }\n\n if (\n ((this.editorMode === EditorMode.vim && usingDefaultFile) ||\n cli.flags.wait) &&\n this.unzipPromise\n ) {\n await this.unzipPromise;\n this.unzipPromise = Promise.resolve(true);\n }\n\n await new Promise((resolve, reject) => {\n if (this.editorMode === EditorMode.vim) {\n process.stdin.setRawMode(true);\n process.stdin.pause();\n\n this.slowTask = childProcess.spawn(\n chosenEditor,\n [\n usingDefaultFile ? tmpobj.name : specificFile,\n ...editorSpecificCommands,\n ],\n {\n env: process.env,\n stdio: \"inherit\",\n detached: false,\n cwd: tmpobj.name,\n }\n );\n let didResolve = false;\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n didResolve = true;\n }\n }\n\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", resolver);\n } else {\n this.log(\n `\uD83D\uDCBB Launched editor in ${(\n (new Date().getTime() - start) /\n 1000\n ).toFixed(2)}s`\n );\n\n const cmd = `${chosenEditor} \"${path.join(\n tmpobj.name\n )}\" ${editorSpecificCommands.join(\" \")}`.trim();\n\n let didResolve = false;\n\n const cwd =\n process.platform === \"win32\"\n ? path.join(tmpobj.name, \"../\")\n : tmpobj.anme;\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"ignore\",\n // This line is important! If detached is true, nothing ever happens.\n detached: false,\n // Windows will refuse to delete if there is an active process in the folder\n cwd,\n });\n } else if (cli.flags.fromscript && process.platform === \"darwin\") {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio: \"pipe\",\n // This line is important! If detached is true, nothing ever happens.\n detached: true,\n cwd,\n });\n } else {\n this.slowTask = childProcess.spawn(cmd, {\n env: process.env,\n shell: true,\n windowsHide: true,\n stdio:\n exitBehavior.waitFor !== WaitFor.childProcessExit\n ? \"ignore\"\n : \"inherit\",\n detached: exitBehavior.waitFor === WaitFor.childProcessExit,\n cwd,\n });\n }\n\n if (exitBehavior.waitFor === WaitFor.downloadComplete) {\n if (cli.flags.fromscript && process.platform === \"win32\") {\n this.slowTask.unref();\n this.slowTask = null;\n\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n } else {\n this.unzipPromise.then(\n () => resolve(),\n () => resolve()\n );\n }\n // This is mostly just VSCode right now.\n } else {\n function resolver() {\n if (!didResolve) {\n if (process?.stdin?.setRawMode) process.stdin.setRawMode(false);\n if (process?.stdin?.resume) process.stdin.resume();\n\n resolve();\n }\n }\n\n this.slowTask.once(\"exit\", resolver);\n this.slowTask.once(\"error\", reject);\n this.slowTask.once(\"close\", resolver);\n this.slowTask.once(\"disconnect\", resolver);\n }\n }\n });\n\n if (shouldKeep || exitBehavior.waitFor === WaitFor.downloadComplete) {\n didRemove = true;\n }\n\n if (!cli.flags.keep && exitBehavior.waitFor === WaitFor.confirm) {\n // TODO: remove this when https://github.com/vadimdemedes/ink/issues/415 is resolved.\n const _disableWarning = process.emitWarning;\n process.emitWarning = () => {};\n const { renderConfirm } = require(CONFIRM_PROMPT_PATH);\n process.emitWarning = _disableWarning;\n const shouldRemove = await renderConfirm();\n shouldKeep = didRemove = !shouldRemove;\n }\n\n doExit();\n\n // setTimeout(() => {\n // doExit();\n // process.emitWarning = () => {};\n // process.nextTick(() => process.kill(process.pid, \"SIGTERM\"));\n // }, 10000);\n }\n}\n\nprocess.on(\"unhandledRejection\", exceptionLogger);\nprocess.on(\"unhandledException\", exceptionLogger);\n\nif (DOTENV_EXISTS) {\n dotenv.config({ path: GIT_PEEK_ENV_PATH });\n}\n\nconst GITHUB_BASE_DOMAIN = process.env.GITHUB_BASE_DOMAIN || \"github.com\";\nconst GITHUB_API_DOMAIN = process.env.GITHUB_API_DOMAIN || \"api.github.com\";\nconst ALLOW_JSDELIVR = GITHUB_API_DOMAIN === \"api.github.com\";\ninstance = new Command();\ninstance.run();\n", "function _findGitHubToken() {\n if (process.env.GITHUB_TOKEN?.trim()?.length ?? 0) {\n return process.env.GITHUB_TOKEN.trim();\n // } else if (fs.existsSync(hubPath)) {\n // const hub = yaml.load(fs.readFileSync(hubPath, \"utf8\"));\n // if (typeof hub !== \"object\") return null;\n // const githubKey = Object.keys(hub).find((k) =>\n // k.toLowerCase().includes(\"github.com\")\n // );\n // if (githubKey) {\n // const tokenholder = hub[githubKey].find((k) => k?.oauth_token);\n // if (tokenholder) {\n // return tokenholder?.oauth_token;\n // }\n // }\n // return null;\n } else {\n return null;\n }\n}\nlet _githubToken;\nexport function findGitHubToken() {\n if (typeof _githubToken === \"undefined\") {\n _githubToken = _findGitHubToken();\n }\n\n return _githubToken;\n}\n", "import * as _fetch from \"node-fetch\";\nimport createFetcher from \"@vercel/fetch\";\n\nexport const fetch = createFetcher(_fetch);\nexport default fetch;\n"], + "mappings": "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,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,EAAG,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,KAAM,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,KAAM,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,IAAK,GAAI,GAAI,EAAG,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,MAAO,GAAI,KAAM,GAAI,IAAK,EAAG,KAAM,GAAI,KAAM,KAAM,IAAK,KAAM,MAC3wD,GAAwB,CAAC,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,MAAO,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,MAAO,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,KAAM,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,EAAG,KAAM,EAAG,OAAQ,KAE55B,YAAuB,EAAM,GAC3B,GAAI,GAAM,MAEV,OAAS,GAAI,EAAG,EAAS,EAAI,OAAQ,EAAI,EAAQ,GAAK,GAEpD,GADA,GAAO,EAAI,GACP,EAAM,EAAM,MAAO,GAEvB,GADA,GAAO,EAAI,EAAI,GACX,GAAO,EAAM,MAAO,GAG1B,MAAO,GAGT,YAA2B,GACzB,MAAI,GAAO,GAAW,IAAS,GAC3B,GAAQ,GAAW,GACnB,EAAO,GAAW,IAAS,GAC3B,GAAQ,IAAY,GAEpB,GAAQ,MACH,GAAQ,KAAQ,GAAwB,KAAK,OAAO,aAAa,IAGnE,GAAc,EAAM,IAG7B,YAA0B,GACxB,MAAI,GAAO,GAAW,IAAS,GAC3B,EAAO,GAAW,GAClB,EAAO,GAAW,GAClB,GAAQ,GAAW,GACnB,EAAO,GAAW,IAAS,GAC3B,GAAQ,IAAY,GAEpB,GAAQ,MACH,GAAQ,KAAQ,GAAmB,KAAK,OAAO,aAAa,IAG9D,GAAc,EAAM,KAA+B,GAAc,EAAM,IAGhF,YAA0B,GACxB,GAAI,GAAU,GAEd,OAAS,GAAK,EAAG,EAAc,MAAM,KAAK,GAAO,EAAK,EAAY,OAAQ,KAExE,GAAM,GAAK,AADE,EAAY,GACT,YAAY,GAE5B,GAAI,GACF,GAAI,CAAC,GAAkB,GACrB,MAAO,GAGT,EAAU,WACD,CAAC,GAAiB,GAC3B,MAAO,GAIX,MAAO,CAAC,KC3EV,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,eAAiB,GACzB,GAAQ,qBAAuB,GAC/B,GAAQ,6BAA+B,GACvC,GAAQ,yBAA2B,GACnC,GAAQ,UAAY,GACpB,GAAM,IAAgB,CACpB,QAAS,CAAC,QAAS,OAAQ,QAAS,WAAY,WAAY,UAAW,KAAM,OAAQ,UAAW,MAAO,WAAY,KAAM,SAAU,SAAU,QAAS,MAAO,MAAO,QAAS,QAAS,OAAQ,MAAO,OAAQ,QAAS,QAAS,UAAW,SAAU,SAAU,OAAQ,OAAQ,QAAS,KAAM,aAAc,SAAU,OAAQ,UAC7T,OAAQ,CAAC,aAAc,YAAa,MAAO,UAAW,UAAW,YAAa,SAAU,SAAU,SAClG,WAAY,CAAC,OAAQ,cAEjB,GAAW,GAAI,KAAI,GAAc,SACjC,GAAyB,GAAI,KAAI,GAAc,QAC/C,GAA6B,GAAI,KAAI,GAAc,YAEzD,YAAwB,EAAM,GAC5B,MAAO,IAAY,IAAS,SAAW,IAAS,OAGlD,YAA8B,EAAM,GAClC,MAAO,IAAe,EAAM,IAAa,GAAuB,IAAI,GAGtE,YAAsC,GACpC,MAAO,IAA2B,IAAI,GAGxC,YAAkC,EAAM,GACtC,MAAO,IAAqB,EAAM,IAAa,GAA6B,GAG9E,YAAmB,GACjB,MAAO,IAAS,IAAI,MCpCtB,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,OAAO,eAAe,GAAS,mBAAoB,CACjD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,oBAGvB,OAAO,eAAe,GAAS,mBAAoB,CACjD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,oBAGvB,OAAO,eAAe,GAAS,oBAAqB,CAClD,WAAY,GACZ,IAAK,WACH,MAAO,IAAY,qBAGvB,OAAO,eAAe,GAAS,iBAAkB,CAC/C,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,kBAGpB,OAAO,eAAe,GAAS,+BAAgC,CAC7D,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,gCAGpB,OAAO,eAAe,GAAS,2BAA4B,CACzD,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,4BAGpB,OAAO,eAAe,GAAS,uBAAwB,CACrD,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,wBAGpB,OAAO,eAAe,GAAS,YAAa,CAC1C,WAAY,GACZ,IAAK,WACH,MAAO,IAAS,aAIpB,GAAI,IAAsB,KAEtB,GAAmB,OCxDvB,gCAEA,GAAI,IAAmB,sBAEvB,GAAO,QAAU,SAAU,GAC1B,GAAI,MAAO,IAAQ,SAClB,KAAM,IAAI,WAAU,qBAGrB,MAAO,GAAI,QAAQ,GAAkB,WCTtC,gCAEA,GAAO,QAAU,CAChB,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,OCtJ3B,mBACA,GAAI,IAAsB,KAMtB,GAAkB,GACtB,OAAS,MAAO,IACf,AAAI,GAAY,eAAe,KAC9B,IAAgB,GAAY,KAAQ,IAItC,GAAI,GAAU,GAAO,QAAU,CAC9B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,KAAM,CAAC,SAAU,EAAG,OAAQ,QAC5B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,OAC3B,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,QAC5B,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,YAChC,OAAQ,CAAC,SAAU,EAAG,OAAQ,CAAC,WAC/B,QAAS,CAAC,SAAU,EAAG,OAAQ,CAAC,YAChC,IAAK,CAAC,SAAU,EAAG,OAAQ,CAAC,IAAK,IAAK,MACtC,MAAO,CAAC,SAAU,EAAG,OAAQ,CAAC,MAAO,MAAO,QAC5C,KAAM,CAAC,SAAU,EAAG,OAAQ,CAAC,UAI9B,OAAS,MAAS,GACjB,GAAI,EAAQ,eAAe,KAC1B,GAAI,CAAE,aAAc,GAAQ,KAC3B,KAAM,IAAI,OAAM,8BAAgC,IAGjD,GAAI,CAAE,WAAY,GAAQ,KACzB,KAAM,IAAI,OAAM,oCAAsC,IAGvD,GAAI,EAAQ,IAAO,OAAO,SAAW,EAAQ,IAAO,SACnD,KAAM,IAAI,OAAM,sCAAwC,IAGzD,AAAI,GAAW,EAAQ,IAAO,SAC1B,GAAS,EAAQ,IAAO,OAC5B,MAAO,GAAQ,IAAO,SACtB,MAAO,GAAQ,IAAO,OACtB,OAAO,eAAe,EAAQ,IAAQ,WAAY,CAAC,MAAO,KAC1D,OAAO,eAAe,EAAQ,IAAQ,SAAU,CAAC,MAAO,KALpD,OACA,GAQN,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAQ,EAAM,EACd,EACA,EACA,EAEJ,MAAI,KAAQ,EACX,EAAI,EACE,AAAI,IAAM,EAChB,EAAK,GAAI,GAAK,EACR,AAAI,IAAM,EAChB,EAAI,EAAK,GAAI,GAAK,EACR,IAAM,GAChB,GAAI,EAAK,GAAI,GAAK,GAGnB,EAAI,KAAK,IAAI,EAAI,GAAI,KAEjB,EAAI,GACP,IAAK,KAGN,EAAK,GAAM,GAAO,EAElB,AAAI,IAAQ,EACX,EAAI,EACE,AAAI,GAAK,GACf,EAAI,EAAS,GAAM,GAEnB,EAAI,EAAS,GAAI,EAAM,GAGjB,CAAC,EAAG,EAAI,IAAK,EAAI,MAGzB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GACA,EACA,EACA,EACA,EAEA,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,KAAK,IAAI,EAAG,EAAG,GACnB,EAAO,EAAI,KAAK,IAAI,EAAG,EAAG,GAC1B,EAAQ,SAAU,GACrB,MAAQ,GAAI,GAAK,EAAI,EAAO,EAAI,GAGjC,MAAI,KAAS,EACZ,EAAI,EAAI,EAER,GAAI,EAAO,EACX,EAAO,EAAM,GACb,EAAO,EAAM,GACb,EAAO,EAAM,GAEb,AAAI,IAAM,EACT,EAAI,EAAO,EACL,AAAI,IAAM,EAChB,EAAK,EAAI,EAAK,EAAO,EACX,IAAM,GAChB,GAAK,EAAI,EAAK,EAAO,GAEtB,AAAI,EAAI,EACP,GAAK,EACK,EAAI,GACd,IAAK,IAIA,CACN,EAAI,IACJ,EAAI,IACJ,EAAI,MAIN,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAQ,IAAI,IAAI,GAAK,GACzB,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAE1C,SAAI,EAAI,EAAI,IAAM,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,IAEnC,CAAC,EAAG,EAAI,IAAK,EAAI,MAGzB,EAAQ,IAAI,KAAO,SAAU,GAC5B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EACA,EACA,EACA,EAEJ,SAAI,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,GAC/B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAC7B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAC7B,EAAK,GAAI,EAAI,GAAM,GAAI,IAAM,EAEtB,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,IAAK,EAAI,MAMxC,YAA6B,EAAG,GAC/B,MACC,MAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GACtB,KAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GACtB,KAAK,IAAI,EAAE,GAAK,EAAE,GAAI,GAIxB,EAAQ,IAAI,QAAU,SAAU,GAC/B,GAAI,GAAW,GAAgB,GAC/B,GAAI,EACH,MAAO,GAGR,GAAI,GAAyB,SACzB,EAEJ,OAAS,KAAW,IACnB,GAAI,GAAY,eAAe,IAC9B,GAAI,GAAQ,GAAY,GAGpB,EAAW,GAAoB,EAAK,GAGxC,AAAI,EAAW,GACd,GAAyB,EACzB,EAAwB,GAK3B,MAAO,IAGR,EAAQ,QAAQ,IAAM,SAAU,GAC/B,MAAO,IAAY,IAGpB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAGjB,EAAI,EAAI,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAC9D,EAAI,EAAI,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAC9D,EAAI,EAAI,OAAU,KAAK,IAAM,GAAI,MAAS,MAAQ,KAAQ,EAAI,MAE9D,GAAI,GAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MACvC,EAAK,EAAI,MAAW,EAAI,MAAW,EAAI,MAE3C,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAM,EAAQ,IAAI,IAAI,GACtB,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,UAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAE5D,EAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAER,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EACA,EACA,EACA,EACA,EAEJ,GAAI,IAAM,EACT,SAAM,EAAI,IACH,CAAC,EAAK,EAAK,GAGnB,AAAI,EAAI,GACP,EAAK,EAAK,GAAI,GAEd,EAAK,EAAI,EAAI,EAAI,EAGlB,EAAK,EAAI,EAAI,EAEb,EAAM,CAAC,EAAG,EAAG,GACb,OAAS,GAAI,EAAG,EAAI,EAAG,IACtB,EAAK,EAAI,EAAI,EAAI,CAAE,GAAI,GACnB,EAAK,GACR,IAEG,EAAK,GACR,IAGD,AAAI,EAAI,EAAK,EACZ,EAAM,EAAM,GAAK,GAAM,EAAI,EACrB,AAAI,EAAI,EAAK,EACnB,EAAM,EACA,AAAI,EAAI,EAAK,EACnB,EAAM,EAAM,GAAK,GAAO,GAAI,EAAI,GAAM,EAEtC,EAAM,EAGP,EAAI,GAAK,EAAM,IAGhB,MAAO,IAGR,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,EACP,EAAO,KAAK,IAAI,EAAG,KACnB,EACA,EAEJ,UAAK,EACL,GAAM,GAAK,EAAK,EAAI,EAAI,EACxB,GAAQ,GAAQ,EAAI,EAAO,EAAI,EAC/B,EAAK,GAAI,GAAK,EACd,EAAK,IAAM,EAAK,EAAI,EAAS,GAAO,GAAS,EAAI,EAAM,GAAI,GAEpD,CAAC,EAAG,EAAK,IAAK,EAAI,MAG1B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,GACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAK,KAAK,MAAM,GAAK,EAErB,EAAI,EAAI,KAAK,MAAM,GACnB,EAAI,IAAM,EAAK,GAAI,GACnB,EAAI,IAAM,EAAK,GAAK,EAAI,GACxB,EAAI,IAAM,EAAK,GAAK,EAAK,GAAI,IAGjC,OAFA,GAAK,IAEG,OACF,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,OACV,GACJ,MAAO,CAAC,EAAG,EAAG,KAIjB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAO,KAAK,IAAI,EAAG,KACnB,EACA,EACA,EAEJ,SAAK,GAAI,GAAK,EACd,EAAQ,GAAI,GAAK,EACjB,EAAK,EAAI,EACT,GAAO,GAAQ,EAAK,EAAO,EAAI,EAC/B,EAAK,GAAM,EACX,GAAK,EAEE,CAAC,EAAG,EAAK,IAAK,EAAI,MAI1B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAK,EAAI,GAAK,IACd,EAAK,EAAI,GAAK,IACd,EAAQ,EAAK,EACb,EACA,EACA,EACA,EAGJ,AAAI,EAAQ,GACX,IAAM,EACN,GAAM,GAGP,EAAI,KAAK,MAAM,EAAI,GACnB,EAAI,EAAI,EACR,EAAI,EAAI,EAAI,EAEP,GAAI,IAAU,GAClB,GAAI,EAAI,GAGT,EAAI,EAAK,EAAK,GAAI,GAElB,GAAI,GACA,EACA,EACJ,OAAQ,eAEF,OACA,GAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,UACzB,GAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,UACzB,GAAG,EAAI,EAAI,EAAI,EAAG,EAAI,EAAG,UACzB,GAAG,EAAI,EAAI,EAAI,EAAG,EAAI,EAAG,UACzB,GAAG,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,UACzB,GAAG,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,MAG/B,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,KAAK,IAAM,SAAU,GAC5B,GAAI,GAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EAAI,EAAK,GAAK,IACd,EACA,EACA,EAEJ,SAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAClC,EAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAClC,EAAI,EAAI,KAAK,IAAI,EAAG,EAAK,GAAI,GAAK,GAE3B,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EACA,EACA,EAEJ,SAAK,EAAI,OAAW,EAAI,QAAY,EAAI,OACxC,EAAK,EAAI,OAAY,EAAI,OAAW,EAAI,MACxC,EAAK,EAAI,MAAW,EAAI,MAAY,EAAI,MAGxC,EAAI,EAAI,SACH,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,EAAI,MAEP,EAAI,EAAI,SACH,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,EAAI,MAEP,EAAI,EAAI,SACH,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAQ,KACpC,EAAI,MAEP,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC7B,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC7B,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAEtB,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,MAG/B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,UAAK,OACL,GAAK,IACL,GAAK,QAEL,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAC5D,EAAI,EAAI,QAAW,KAAK,IAAI,EAAG,EAAI,GAAM,MAAQ,EAAM,GAAK,IAE5D,EAAK,IAAM,EAAK,GAChB,EAAI,IAAO,GAAI,GACf,EAAI,IAAO,GAAI,GAER,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,EAAK,GAAI,IAAM,IACf,EAAI,EAAI,IAAM,EACd,EAAI,EAAI,EAAI,IAEZ,GAAI,GAAK,KAAK,IAAI,EAAG,GACjB,EAAK,KAAK,IAAI,EAAG,GACjB,EAAK,KAAK,IAAI,EAAG,GACrB,SAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAC1C,EAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAC1C,EAAI,EAAK,QAAW,EAAM,GAAI,GAAK,KAAO,MAE1C,GAAK,OACL,GAAK,IACL,GAAK,QAEE,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,SAAK,KAAK,MAAM,EAAG,GACnB,EAAI,EAAK,IAAM,EAAI,KAAK,GAEpB,EAAI,GACP,IAAK,KAGN,EAAI,KAAK,KAAK,EAAI,EAAI,EAAI,GAEnB,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EACA,EACA,EAEJ,SAAK,EAAI,IAAM,EAAI,KAAK,GACxB,EAAI,EAAI,KAAK,IAAI,GACjB,EAAI,EAAI,KAAK,IAAI,GAEV,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,OAAS,SAAU,GAC9B,GAAI,GAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAQ,IAAK,WAAY,UAAU,GAAK,EAAQ,IAAI,IAAI,GAAM,GAIlE,GAFA,EAAQ,KAAK,MAAM,EAAQ,IAEvB,IAAU,EACb,MAAO,IAGR,GAAI,GAAO,GACN,MAAK,MAAM,EAAI,MAAQ,EACxB,KAAK,MAAM,EAAI,MAAQ,EACxB,KAAK,MAAM,EAAI,MAElB,MAAI,KAAU,GACb,IAAQ,IAGF,GAGR,EAAQ,IAAI,OAAS,SAAU,GAG9B,MAAO,GAAQ,IAAI,OAAO,EAAQ,IAAI,IAAI,GAAO,EAAK,KAGvD,EAAQ,IAAI,QAAU,SAAU,GAC/B,GAAI,GAAI,EAAK,GACT,EAAI,EAAK,GACT,EAAI,EAAK,GAIb,GAAI,IAAM,GAAK,IAAM,EACpB,MAAI,GAAI,EACA,GAGJ,EAAI,IACA,IAGD,KAAK,MAAQ,GAAI,GAAK,IAAO,IAAM,IAG3C,GAAI,GAAO,GACP,GAAK,KAAK,MAAM,EAAI,IAAM,GAC1B,EAAI,KAAK,MAAM,EAAI,IAAM,GAC1B,KAAK,MAAM,EAAI,IAAM,GAExB,MAAO,IAGR,EAAQ,OAAO,IAAM,SAAU,GAC9B,GAAI,GAAQ,EAAO,GAGnB,GAAI,IAAU,GAAK,IAAU,EAC5B,MAAI,GAAO,IACV,IAAS,KAGV,EAAQ,EAAQ,KAAO,IAEhB,CAAC,EAAO,EAAO,GAGvB,GAAI,GAAQ,EAAC,CAAE,GAAO,IAAM,GAAK,GAC7B,EAAM,GAAQ,GAAK,EAAQ,IAC3B,EAAO,IAAS,EAAK,GAAK,EAAQ,IAClC,EAAO,IAAS,EAAK,GAAK,EAAQ,IAEtC,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,QAAQ,IAAM,SAAU,GAE/B,GAAI,GAAQ,KACX,GAAI,GAAK,GAAO,KAAO,GAAK,EAC5B,MAAO,CAAC,EAAG,EAAG,GAGf,GAAQ,GAER,GAAI,GACA,EAAI,KAAK,MAAM,EAAO,IAAM,EAAI,IAChC,EAAI,KAAK,MAAO,GAAM,EAAO,IAAM,GAAK,EAAI,IAC5C,EAAK,EAAM,EAAK,EAAI,IAExB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAY,OAAK,MAAM,EAAK,IAAM,MAAS,IAC1C,OAAK,MAAM,EAAK,IAAM,MAAS,GAChC,MAAK,MAAM,EAAK,IAAM,KAEtB,EAAS,EAAQ,SAAS,IAAI,cAClC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAQ,EAAK,SAAS,IAAI,MAAM,4BACpC,GAAI,CAAC,EACJ,MAAO,CAAC,EAAG,EAAG,GAGf,GAAI,GAAc,EAAM,GAExB,AAAI,EAAM,GAAG,SAAW,GACvB,GAAc,EAAY,MAAM,IAAI,IAAI,SAAU,GACjD,MAAO,GAAO,IACZ,KAAK,KAGT,GAAI,GAAU,SAAS,EAAa,IAChC,EAAK,GAAW,GAAM,IACtB,EAAK,GAAW,EAAK,IACrB,EAAI,EAAU,IAElB,MAAO,CAAC,EAAG,EAAG,IAGf,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAM,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC/B,EAAM,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAC/B,EAAU,EAAM,EAChB,EACA,EAEJ,MAAI,GAAS,EACZ,EAAY,EAAO,GAAI,GAEvB,EAAY,EAGb,AAAI,GAAU,EACb,EAAM,EAEP,AAAI,IAAQ,EACX,EAAQ,GAAI,GAAK,EAAU,EAE5B,AAAI,IAAQ,EACX,EAAM,EAAK,GAAI,GAAK,EAEpB,EAAM,EAAK,GAAI,GAAK,EAAS,EAG9B,GAAO,EACP,GAAO,EAEA,CAAC,EAAM,IAAK,EAAS,IAAK,EAAY,MAG9C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EACJ,EAAI,EAER,MAAI,GAAI,GACP,EAAI,EAAM,EAAI,EAEd,EAAI,EAAM,EAAK,GAAM,GAGlB,EAAI,GACP,GAAK,GAAI,GAAM,GAAM,GAAM,IAGrB,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EACR,EAAI,EAER,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAI,IAGb,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEjB,GAAI,IAAM,EACT,MAAO,CAAC,EAAI,IAAK,EAAI,IAAK,EAAI,KAG/B,GAAI,GAAO,CAAC,EAAG,EAAG,GACd,EAAM,EAAI,EAAK,EACf,EAAI,EAAK,EACT,EAAI,EAAI,EACR,EAAK,EAET,OAAQ,KAAK,MAAM,QACb,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,UACnC,GACJ,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,cAEvC,EAAK,GAAK,EAAG,EAAK,GAAK,EAAG,EAAK,GAAK,EAGtC,SAAM,GAAM,GAAK,EAEV,CACL,GAAI,EAAK,GAAK,GAAM,IACpB,GAAI,EAAK,GAAK,GAAM,IACpB,GAAI,EAAK,GAAK,GAAM,MAIvB,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAI,EAAK,GAAM,GACnB,EAAI,EAER,MAAI,GAAI,GACP,GAAI,EAAI,GAGF,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IAEb,EAAI,EAAK,GAAM,GAAK,GAAM,EAC1B,EAAI,EAER,MAAI,GAAI,GAAO,EAAI,GAClB,EAAI,EAAK,GAAI,GAEV,GAAK,IAAO,EAAI,GACnB,GAAI,EAAK,GAAK,GAAI,KAGZ,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EAAK,GAAM,GACvB,MAAO,CAAC,EAAI,GAAK,GAAI,GAAK,IAAM,GAAI,GAAK,MAG1C,EAAQ,IAAI,IAAM,SAAU,GAC3B,GAAI,GAAI,EAAI,GAAK,IACb,EAAI,EAAI,GAAK,IACb,EAAI,EAAI,EACR,EAAI,EAAI,EACR,EAAI,EAER,MAAI,GAAI,GACP,GAAK,GAAI,GAAM,GAAI,IAGb,CAAC,EAAI,GAAI,EAAI,IAAK,EAAI,MAG9B,EAAQ,MAAM,IAAM,SAAU,GAC7B,MAAO,CAAE,EAAM,GAAK,MAAS,IAAM,EAAM,GAAK,MAAS,IAAM,EAAM,GAAK,MAAS,MAGlF,EAAQ,IAAI,MAAQ,SAAU,GAC7B,MAAO,CAAE,EAAI,GAAK,IAAO,MAAQ,EAAI,GAAK,IAAO,MAAQ,EAAI,GAAK,IAAO,QAG1E,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAK,GAAK,IAAM,IAAK,EAAK,GAAK,IAAM,IAAK,EAAK,GAAK,IAAM,MAGnE,EAAQ,KAAK,IAAM,EAAQ,KAAK,IAAM,SAAU,GAC/C,MAAO,CAAC,EAAG,EAAG,EAAK,KAGpB,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAG,IAAK,EAAK,KAGtB,EAAQ,KAAK,KAAO,SAAU,GAC7B,MAAO,CAAC,EAAG,EAAG,EAAG,EAAK,KAGvB,EAAQ,KAAK,IAAM,SAAU,GAC5B,MAAO,CAAC,EAAK,GAAI,EAAG,IAGrB,EAAQ,KAAK,IAAM,SAAU,GAC5B,GAAI,GAAM,KAAK,MAAM,EAAK,GAAK,IAAM,KAAO,IACxC,EAAW,IAAO,IAAO,IAAO,GAAK,EAErC,EAAS,EAAQ,SAAS,IAAI,cAClC,MAAO,SAAS,UAAU,EAAO,QAAU,GAG5C,EAAQ,IAAI,KAAO,SAAU,GAC5B,GAAI,GAAO,GAAI,GAAK,EAAI,GAAK,EAAI,IAAM,EACvC,MAAO,CAAC,EAAM,IAAM,QCl2BrB,sBAAI,IAAsB,KAa1B,cAKC,OAJI,GAAQ,GAER,EAAS,OAAO,KAAK,IAEhB,EAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,IAC7C,EAAM,EAAO,IAAM,CAGlB,SAAU,GACV,OAAQ,MAIV,MAAO,GAIR,YAAmB,GAClB,GAAI,GAAQ,KACR,EAAQ,CAAC,GAIb,IAFA,EAAM,GAAW,SAAW,EAErB,EAAM,QAIZ,OAHI,GAAU,EAAM,MAChB,EAAY,OAAO,KAAK,GAAY,IAE/B,EAAM,EAAU,OAAQ,EAAI,EAAG,EAAI,EAAK,KAChD,GAAI,GAAW,EAAU,GACrB,EAAO,EAAM,GAEjB,AAAI,EAAK,WAAa,IACrB,GAAK,SAAW,EAAM,GAAS,SAAW,EAC1C,EAAK,OAAS,EACd,EAAM,QAAQ,IAKjB,MAAO,GAGR,YAAc,EAAM,GACnB,MAAO,UAAU,GAChB,MAAO,GAAG,EAAK,KAIjB,YAAwB,EAAS,GAKhC,OAJI,GAAO,CAAC,EAAM,GAAS,OAAQ,GAC/B,EAAK,GAAY,EAAM,GAAS,QAAQ,GAExC,EAAM,EAAM,GAAS,OAClB,EAAM,GAAK,QACjB,EAAK,QAAQ,EAAM,GAAK,QACxB,EAAK,GAAK,GAAY,EAAM,GAAK,QAAQ,GAAM,GAC/C,EAAM,EAAM,GAAK,OAGlB,SAAG,WAAa,EACT,EAGR,GAAO,QAAU,SAAU,GAK1B,OAJI,GAAQ,GAAU,GAClB,EAAa,GAEb,EAAS,OAAO,KAAK,GAChB,EAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,KAC7C,GAAI,GAAU,EAAO,GACjB,EAAO,EAAM,GAEjB,AAAI,EAAK,SAAW,MAKpB,GAAW,GAAW,GAAe,EAAS,IAG/C,MAAO,MC9FR,sBAAI,IAAsB,KACtB,GAAgB,KAEhB,GAAU,GAEV,GAAS,OAAO,KAAK,IAEzB,YAAiB,GAChB,GAAI,GAAY,SAAU,GACzB,MAAI,AAAsB,IAAS,KAC3B,EAGJ,WAAU,OAAS,GACtB,GAAO,MAAM,UAAU,MAAM,KAAK,YAG5B,EAAG,KAIX,MAAI,cAAgB,IACnB,GAAU,WAAa,EAAG,YAGpB,EAGR,YAAqB,GACpB,GAAI,GAAY,SAAU,GACzB,GAAI,AAAsB,GAAS,KAClC,MAAO,GAGR,AAAI,UAAU,OAAS,GACtB,GAAO,MAAM,UAAU,MAAM,KAAK,YAGnC,GAAI,GAAS,EAAG,GAKhB,GAAI,MAAO,IAAW,SACrB,OAAS,GAAM,EAAO,OAAQ,EAAI,EAAG,EAAI,EAAK,IAC7C,EAAO,GAAK,KAAK,MAAM,EAAO,IAIhC,MAAO,IAIR,MAAI,cAAgB,IACnB,GAAU,WAAa,EAAG,YAGpB,EAGR,GAAO,QAAQ,SAAU,GACxB,GAAQ,GAAa,GAErB,OAAO,eAAe,GAAQ,GAAY,WAAY,CAAC,MAAO,GAAY,GAAW,WACrF,OAAO,eAAe,GAAQ,GAAY,SAAU,CAAC,MAAO,GAAY,GAAW,SAEnF,GAAI,GAAS,GAAM,GACf,EAAc,OAAO,KAAK,GAE9B,EAAY,QAAQ,SAAU,GAC7B,GAAI,GAAK,EAAO,GAEhB,GAAQ,GAAW,GAAW,GAAY,GAC1C,GAAQ,GAAW,GAAS,IAAM,GAAQ,OAI5C,GAAO,QAAU,KC7EjB,gCACA,GAAM,IAAuB,KAEvB,GAAa,CAAC,EAAI,IAAW,WAElC,MAAO,KAAU,AADJ,EAAG,MAAM,GAAc,WACZ,MAGnB,GAAc,CAAC,EAAI,IAAW,WACnC,GAAM,GAAO,EAAG,MAAM,GAAc,WACpC,MAAO,KAAU,GAAK,OAAY,MAG7B,GAAc,CAAC,EAAI,IAAW,WACnC,GAAM,GAAM,EAAG,MAAM,GAAc,WACnC,MAAO,KAAU,GAAK,OAAY,EAAI,MAAM,EAAI,MAAM,EAAI,OAG3D,cACC,GAAM,GAAQ,GAAI,KACZ,EAAS,CACd,SAAU,CACT,MAAO,CAAC,EAAG,GAEX,KAAM,CAAC,EAAG,IACV,IAAK,CAAC,EAAG,IACT,OAAQ,CAAC,EAAG,IACZ,UAAW,CAAC,EAAG,IACf,QAAS,CAAC,EAAG,IACb,OAAQ,CAAC,EAAG,IACZ,cAAe,CAAC,EAAG,KAEpB,MAAO,CACN,MAAO,CAAC,GAAI,IACZ,IAAK,CAAC,GAAI,IACV,MAAO,CAAC,GAAI,IACZ,OAAQ,CAAC,GAAI,IACb,KAAM,CAAC,GAAI,IACX,QAAS,CAAC,GAAI,IACd,KAAM,CAAC,GAAI,IACX,MAAO,CAAC,GAAI,IACZ,KAAM,CAAC,GAAI,IAGX,UAAW,CAAC,GAAI,IAChB,YAAa,CAAC,GAAI,IAClB,aAAc,CAAC,GAAI,IACnB,WAAY,CAAC,GAAI,IACjB,cAAe,CAAC,GAAI,IACpB,WAAY,CAAC,GAAI,IACjB,YAAa,CAAC,GAAI,KAEnB,QAAS,CACR,QAAS,CAAC,GAAI,IACd,MAAO,CAAC,GAAI,IACZ,QAAS,CAAC,GAAI,IACd,SAAU,CAAC,GAAI,IACf,OAAQ,CAAC,GAAI,IACb,UAAW,CAAC,GAAI,IAChB,OAAQ,CAAC,GAAI,IACb,QAAS,CAAC,GAAI,IAGd,cAAe,CAAC,IAAK,IACrB,YAAa,CAAC,IAAK,IACnB,cAAe,CAAC,IAAK,IACrB,eAAgB,CAAC,IAAK,IACtB,aAAc,CAAC,IAAK,IACpB,gBAAiB,CAAC,IAAK,IACvB,aAAc,CAAC,IAAK,IACpB,cAAe,CAAC,IAAK,MAKvB,EAAO,MAAM,KAAO,EAAO,MAAM,KAEjC,OAAW,KAAa,QAAO,KAAK,IACnC,GAAM,GAAQ,EAAO,GAErB,OAAW,KAAa,QAAO,KAAK,IACnC,GAAM,GAAQ,EAAM,GAEpB,EAAO,GAAa,CACnB,KAAM,KAAU,EAAM,MACtB,MAAO,KAAU,EAAM,OAGxB,EAAM,GAAa,EAAO,GAE1B,EAAM,IAAI,EAAM,GAAI,EAAM,IAG3B,OAAO,eAAe,EAAQ,EAAW,CACxC,MAAO,EACP,WAAY,KAGb,OAAO,eAAe,EAAQ,QAAS,CACtC,MAAO,EACP,WAAY,KAId,GAAM,GAAY,GAAK,EACjB,EAAU,CAAC,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,GAEpC,EAAO,MAAM,MAAQ,QACrB,EAAO,QAAQ,MAAQ,QAEvB,EAAO,MAAM,KAAO,CACnB,KAAM,GAAW,EAAW,IAE7B,EAAO,MAAM,QAAU,CACtB,QAAS,GAAY,EAAW,IAEjC,EAAO,MAAM,QAAU,CACtB,IAAK,GAAY,EAAS,IAG3B,EAAO,QAAQ,KAAO,CACrB,KAAM,GAAW,EAAW,KAE7B,EAAO,QAAQ,QAAU,CACxB,QAAS,GAAY,EAAW,KAEjC,EAAO,QAAQ,QAAU,CACxB,IAAK,GAAY,EAAS,KAG3B,OAAS,KAAO,QAAO,KAAK,KAC3B,GAAI,MAAO,IAAa,IAAS,SAChC,SAGD,GAAM,GAAQ,GAAa,GAE3B,AAAI,IAAQ,UACX,GAAM,QAGH,UAAY,IACf,GAAO,MAAM,KAAK,GAAO,GAAW,EAAM,OAAQ,GAClD,EAAO,QAAQ,KAAK,GAAO,GAAW,EAAM,OAAQ,KAGjD,WAAa,IAChB,GAAO,MAAM,QAAQ,GAAO,GAAY,EAAM,QAAS,GACvD,EAAO,QAAQ,QAAQ,GAAO,GAAY,EAAM,QAAS,KAGtD,OAAS,IACZ,GAAO,MAAM,QAAQ,GAAO,GAAY,EAAM,IAAK,GACnD,EAAO,QAAQ,QAAQ,GAAO,GAAY,EAAM,IAAK,KAIvD,MAAO,GAIR,OAAO,eAAe,GAAQ,UAAW,CACxC,WAAY,GACZ,IAAK,OCnKN,gCACA,GAAO,QAAU,CAAC,EAAM,KACvB,EAAO,GAAQ,QAAQ,KACvB,GAAM,GAAS,EAAK,WAAW,KAAO,GAAM,EAAK,SAAW,EAAI,IAAM,KAChE,EAAM,EAAK,QAAQ,EAAS,GAC5B,EAAgB,EAAK,QAAQ,MACnC,MAAO,KAAQ,IAAO,KAAkB,GAAK,GAAO,EAAM,MCN3D,gCACA,GAAM,IAAa,cACb,GAAkB,KAElB,GAAM,QAAQ,IAEhB,GACJ,AAAI,GAAQ,aACX,GAAQ,cACR,GAAQ,eACR,GAAa,GACH,IAAQ,UAClB,GAAQ,WACR,GAAQ,eACR,GAAQ,kBACR,IAAa,IAEd,AAAI,eAAiB,KACpB,IAAa,GAAI,YAAY,SAAW,GAAK,SAAS,GAAI,YAAa,MAAQ,GAGhF,YAAwB,GACvB,MAAI,KAAU,EACN,GAGD,CACN,QACA,SAAU,GACV,OAAQ,GAAS,EACjB,OAAQ,GAAS,GAInB,YAAuB,GACtB,GAAI,KAAe,GAClB,MAAO,GAGR,GAAI,GAAQ,cACX,GAAQ,eACR,GAAQ,mBACR,MAAO,GAGR,GAAI,GAAQ,aACX,MAAO,GAGR,GAAI,GAAU,CAAC,EAAO,OAAS,KAAe,GAC7C,MAAO,GAGR,GAAM,GAAM,GAAa,EAAI,EAE7B,GAAI,QAAQ,WAAa,SAOxB,GAAM,GAAY,GAAG,UAAU,MAAM,KACrC,MACC,QAAO,QAAQ,SAAS,KAAK,MAAM,KAAK,KAAO,GAC/C,OAAO,EAAU,KAAO,IACxB,OAAO,EAAU,KAAO,MAEjB,OAAO,EAAU,KAAO,MAAQ,EAAI,EAGrC,EAGR,GAAI,MAAQ,IACX,MAAI,CAAC,SAAU,WAAY,WAAY,aAAa,KAAK,GAAQ,IAAQ,MAAQ,GAAI,UAAY,WACzF,EAGD,EAGR,GAAI,oBAAsB,IACzB,MAAO,gCAAgC,KAAK,GAAI,kBAAoB,EAAI,EAGzE,GAAI,GAAI,YAAc,YACrB,MAAO,GAGR,GAAI,gBAAkB,KACrB,GAAM,GAAU,SAAU,IAAI,sBAAwB,IAAI,MAAM,KAAK,GAAI,IAEzE,OAAQ,GAAI,kBACN,YACJ,MAAO,IAAW,EAAI,EAAI,MACtB,iBACJ,MAAO,IAKV,MAAI,iBAAiB,KAAK,GAAI,MACtB,EAGJ,8DAA8D,KAAK,GAAI,OAIvE,aAAe,IACX,EAGJ,IAAI,OAAS,OACT,GAMT,YAAyB,GACxB,GAAM,GAAQ,GAAc,GAC5B,MAAO,IAAe,GAGvB,GAAO,QAAU,CAChB,cAAe,GACf,OAAQ,GAAgB,QAAQ,QAChC,OAAQ,GAAgB,QAAQ,WCjIjC,gCACA,GAAM,IAAiB,uIACjB,GAAc,iCACd,GAAe,mCACf,GAAe,0CAEf,GAAU,GAAI,KAAI,CACvB,CAAC,IAAK;AAAA,GACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,KAAM,MACP,CAAC,IAAK,KACN,CAAC,IAAK,UAGP,YAAkB,GACjB,MAAK,GAAE,KAAO,KAAO,EAAE,SAAW,GAAO,EAAE,KAAO,KAAO,EAAE,SAAW,EAC9D,OAAO,aAAa,SAAS,EAAE,MAAM,GAAI,KAG1C,GAAQ,IAAI,IAAM,EAG1B,YAAwB,EAAM,GAC7B,GAAM,GAAU,GACV,EAAS,EAAK,OAAO,MAAM,YAC7B,EAEJ,OAAW,KAAS,GACnB,GAAI,CAAC,MAAM,GACV,EAAQ,KAAK,OAAO,YACT,EAAU,EAAM,MAAM,IACjC,EAAQ,KAAK,EAAQ,GAAG,QAAQ,GAAc,CAAC,EAAG,EAAQ,IAAQ,EAAS,GAAS,GAAU,QAE9F,MAAM,IAAI,OAAM,0CAA0C,gBAAoB,OAIhF,MAAO,GAGR,YAAoB,GACnB,GAAY,UAAY,EAExB,GAAM,GAAU,GACZ,EAEJ,KAAQ,GAAU,GAAY,KAAK,MAAY,OAC9C,GAAM,GAAO,EAAQ,GAErB,GAAI,EAAQ,IACX,GAAM,GAAO,GAAe,EAAM,EAAQ,IAC1C,EAAQ,KAAK,CAAC,GAAM,OAAO,QAE3B,GAAQ,KAAK,CAAC,IAIhB,MAAO,GAGR,YAAoB,EAAO,GAC1B,GAAM,GAAU,GAEhB,OAAW,KAAS,GACnB,OAAW,KAAS,GAAM,OACzB,EAAQ,EAAM,IAAM,EAAM,QAAU,KAAO,EAAM,MAAM,GAIzD,GAAI,GAAU,EACd,OAAW,KAAa,QAAO,KAAK,GACnC,GAAI,MAAM,QAAQ,EAAQ,KACzB,GAAI,CAAE,KAAa,IAClB,KAAM,IAAI,OAAM,wBAAwB,KAGzC,AAAI,EAAQ,GAAW,OAAS,EAC/B,EAAU,EAAQ,GAAW,MAAM,EAAS,EAAQ,IAEpD,EAAU,EAAQ,GAKrB,MAAO,GAGR,GAAO,QAAU,CAAC,EAAO,KACxB,GAAM,GAAS,GACT,EAAS,GACX,EAAQ,GA0BZ,GAvBA,EAAI,QAAQ,GAAgB,CAAC,EAAG,EAAY,EAAS,EAAO,EAAO,KAClE,GAAI,EACH,EAAM,KAAK,GAAS,YACV,GACV,GAAM,GAAM,EAAM,KAAK,IACvB,EAAQ,GACR,EAAO,KAAK,EAAO,SAAW,EAAI,EAAM,GAAW,EAAO,GAAQ,IAClE,EAAO,KAAK,CAAC,UAAS,OAAQ,GAAW,aAC/B,GACV,GAAI,EAAO,SAAW,EACrB,KAAM,IAAI,OAAM,gDAGjB,EAAO,KAAK,GAAW,EAAO,GAAQ,EAAM,KAAK,MACjD,EAAQ,GACR,EAAO,UAEP,GAAM,KAAK,KAIb,EAAO,KAAK,EAAM,KAAK,KAEnB,EAAO,OAAS,GACnB,GAAM,GAAS,qCAAqC,EAAO,yBAAyB,EAAO,SAAW,EAAI,GAAK,cAC/G,KAAM,IAAI,OAAM,GAGjB,MAAO,GAAO,KAAK,OC9HpB,gCACA,GAAM,IAA6B,KAC7B,GAAqB,KACrB,GAAc,AAAQ,KAAkB,OAExC,GAAmB,KAEnB,GAAsB,QAAQ,WAAa,SAAW,CAAE,SAAQ,IAAI,MAAQ,IAAI,cAAc,WAAW,SAGzG,GAAe,CAAC,OAAQ,OAAQ,UAAW,WAG3C,GAAa,GAAI,KAAI,CAAC,SAEtB,GAAS,OAAO,OAAO,MAE7B,YAAsB,EAAK,GAC1B,EAAU,GAAW,GAGrB,GAAM,GAAU,GAAc,GAAY,MAAQ,EAClD,EAAI,MAAQ,EAAQ,QAAU,OAAY,EAAU,EAAQ,MAC5D,EAAI,QAAU,WAAa,GAAU,EAAQ,QAAU,EAAI,MAAQ,EAGpE,YAAe,GAGd,GAAI,CAAC,MAAQ,CAAE,gBAAgB,MAAU,KAAK,UAC7C,GAAM,GAAQ,GACd,UAAa,EAAO,GAEpB,EAAM,SAAW,WAChB,GAAM,GAAO,GAAG,MAAM,KAAK,WAC3B,MAAO,IAAS,MAAM,KAAM,CAAC,EAAM,UAAU,OAAO,KAGrD,OAAO,eAAe,EAAO,GAAM,WACnC,OAAO,eAAe,EAAM,SAAU,GAEtC,EAAM,SAAS,YAAc,GAEtB,EAAM,SAGd,GAAa,KAAM,GAIpB,AAAI,IACH,IAAW,KAAK,KAAO,SAGxB,OAAW,KAAO,QAAO,KAAK,IAC7B,GAAW,GAAK,QAAU,GAAI,QAAO,GAAmB,GAAW,GAAK,OAAQ,KAEhF,GAAO,GAAO,CACb,MACC,GAAM,GAAQ,GAAW,GACzB,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,KAK7F,GAAO,QAAU,CAChB,MACC,MAAO,IAAM,KAAK,KAAM,KAAK,SAAW,GAAI,GAAM,aAIpD,GAAW,MAAM,QAAU,GAAI,QAAO,GAAmB,GAAW,MAAM,OAAQ,KAClF,OAAW,KAAS,QAAO,KAAK,GAAW,MAAM,MAChD,AAAI,GAAW,IAAI,IAInB,IAAO,GAAS,CACf,MACC,GAAM,GAAQ,KAAK,MACnB,MAAO,YAEN,GAAM,GAAQ,CACb,KAFY,GAAW,MAAM,GAAa,IAAQ,GAAO,MAAM,KAAM,WAGrE,MAAO,GAAW,MAAM,MACxB,QAAS,GAAW,MAAM,SAE3B,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,OAM9F,GAAW,QAAQ,QAAU,GAAI,QAAO,GAAmB,GAAW,QAAQ,OAAQ,KACtF,OAAW,KAAS,QAAO,KAAK,GAAW,QAAQ,OAClD,GAAI,GAAW,IAAI,GAClB,SAGD,GAAM,GAAU,KAAO,EAAM,GAAG,cAAgB,EAAM,MAAM,GAC5D,GAAO,GAAW,CACjB,MACC,GAAM,GAAQ,KAAK,MACnB,MAAO,YAEN,GAAM,GAAQ,CACb,KAFY,GAAW,QAAQ,GAAa,IAAQ,GAAO,MAAM,KAAM,WAGvE,MAAO,GAAW,QAAQ,MAC1B,QAAS,GAAW,QAAQ,SAE7B,MAAO,IAAM,KAAK,KAAM,KAAK,QAAU,KAAK,QAAQ,OAAO,GAAS,CAAC,GAAQ,KAAK,OAAQ,MAM9F,GAAM,IAAQ,OAAO,iBAAiB,OAAU,IAEhD,YAAe,EAAS,EAAQ,GAC/B,GAAM,GAAU,WACf,MAAO,IAAW,MAAM,EAAS,YAGlC,EAAQ,QAAU,EAClB,EAAQ,OAAS,EAEjB,GAAM,GAAO,KAEb,cAAO,eAAe,EAAS,QAAS,CACvC,WAAY,GACZ,MACC,MAAO,GAAK,OAEb,IAAI,GACH,EAAK,MAAQ,KAIf,OAAO,eAAe,EAAS,UAAW,CACzC,WAAY,GACZ,MACC,MAAO,GAAK,SAEb,IAAI,GACH,EAAK,QAAU,KAKjB,EAAQ,QAAU,KAAK,SAAW,IAAQ,QAAU,IAAQ,OAI5D,EAAQ,UAAY,GAEb,EAGR,cAEC,GAAM,GAAO,UACP,EAAU,EAAK,OACjB,EAAM,OAAO,UAAU,IAE3B,GAAI,IAAY,EACf,MAAO,GAGR,GAAI,EAAU,EAEb,OAAS,GAAI,EAAG,EAAI,EAAS,IAC5B,GAAO,IAAM,EAAK,GAIpB,GAAI,CAAC,KAAK,SAAW,KAAK,OAAS,GAAK,CAAC,EACxC,MAAO,MAAK,OAAS,GAAK,EAM3B,GAAM,GAAc,GAAW,IAAI,KACnC,AAAI,IAAuB,KAAK,SAC/B,IAAW,IAAI,KAAO,IAGvB,OAAW,KAAQ,MAAK,QAAQ,QAAQ,UAIvC,EAAM,EAAK,KAAO,EAAI,QAAQ,EAAK,QAAS,EAAK,MAAQ,EAAK,MAK9D,EAAM,EAAI,QAAQ,SAAU,GAAG,EAAK,UAAU,EAAK,QAIpD,UAAW,IAAI,KAAO,EAEf,EAGR,YAAkB,EAAO,GACxB,GAAI,CAAC,MAAM,QAAQ,GAGlB,MAAO,GAAG,MAAM,KAAK,UAAW,GAAG,KAAK,KAGzC,GAAM,GAAO,GAAG,MAAM,KAAK,UAAW,GAChC,EAAQ,CAAC,EAAQ,IAAI,IAE3B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IACnC,EAAM,KAAK,OAAO,EAAK,EAAI,IAAI,QAAQ,UAAW,SAClD,EAAM,KAAK,OAAO,EAAQ,IAAI,KAG/B,MAAO,IAAS,EAAO,EAAM,KAAK,KAGnC,OAAO,iBAAiB,GAAM,UAAW,IAEzC,GAAO,QAAU,KACjB,GAAO,QAAQ,cAAgB,GAC/B,GAAO,QAAQ,QAAU,GAAO,UCnOhC,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,gBAAkB,GAC1B,GAAQ,SAAW,GACnB,GAAQ,QAAU,GAElB,GAAI,IAAa,GAAgC,MAE7C,GAAqC,KAErC,GAAS,GAA+B,MAE5C,YAAgC,GAAO,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAEvF,cAAsC,GAAI,MAAO,UAAY,WAAY,MAAO,MAAM,GAAI,GAAQ,GAAI,SAAW,UAA2B,WAAc,MAAO,IAAiB,EAElL,YAAiC,GAAO,GAAI,GAAO,EAAI,WAAc,MAAO,GAAO,GAAI,IAAQ,MAAQ,MAAO,IAAQ,UAAY,MAAO,IAAQ,WAAc,MAAO,CAAE,QAAS,GAAS,GAAI,GAAQ,KAA4B,GAAI,GAAS,EAAM,IAAI,GAAQ,MAAO,GAAM,IAAI,GAAQ,GAAI,GAAS,GAAQ,EAAwB,OAAO,gBAAkB,OAAO,yBAA0B,OAAS,KAAO,GAAO,GAAI,OAAO,UAAU,eAAe,KAAK,EAAK,IAAQ,GAAI,GAAO,EAAwB,OAAO,yBAAyB,EAAK,GAAO,KAAM,AAAI,GAAS,GAAK,KAAO,EAAK,KAAQ,OAAO,eAAe,EAAQ,EAAK,GAAgB,EAAO,GAAO,EAAI,GAAY,SAAO,QAAU,EAAS,GAAS,EAAM,IAAI,EAAK,GAAkB,EAE9tB,GAAM,IAAoB,GAAI,KAAI,CAAC,KAAM,QAAS,OAAQ,MAAO,KAAM,QAEvE,YAAiB,GACf,MAAO,CACL,QAAS,EAAM,KACf,YAAa,EAAM,OACnB,cAAe,EAAM,OACrB,WAAY,EAAM,OAClB,OAAQ,EAAM,QACd,OAAQ,EAAM,MACd,MAAO,EAAM,QACb,QAAS,EAAM,KACf,QAAS,EAAM,MAAM,MAAM,MAI/B,GAAM,IAAU,0BACV,GAAU,cACZ,GACJ,CACE,GAAM,CACJ,gBACE,GACE,EAAU,iBAEV,EAAe,SAAU,EAAO,EAAQ,GAC5C,GAAI,EAAM,OAAS,QACjB,GAAK,AAhDX,GAgDc,GAA2B,WAAW,EAAM,QAAW,AAhDrE,GAgDwE,GAA2B,sBAAsB,EAAM,MAAO,KAAS,GAAkB,IAAI,EAAM,OACnK,MAAO,UAGT,GAAI,EAAQ,KAAK,EAAM,QAAW,GAAK,EAAS,KAAO,KAAO,EAAK,OAAO,EAAS,EAAG,IAAM,MAC1F,MAAO,gBAGT,GAAI,EAAM,MAAM,KAAO,EAAM,MAAM,GAAG,cACpC,MAAO,cAIX,MAAI,GAAM,OAAS,cAAgB,GAAQ,KAAK,EAAM,OAC7C,UAGL,EAAM,OAAS,WAAc,GAAM,QAAU,KAAO,EAAM,QAAU,KAC/D,aAGF,EAAM,MAGf,GAAW,UAAW,GACpB,GAAI,GAEJ,KAAO,EAAQ,GAAW,QAAQ,KAAK,KACrC,GAAM,GAAQ,EAAa,GAC3B,KAAM,CACJ,KAAM,EAAa,EAAO,EAAM,MAAO,GACvC,MAAO,EAAM,SAMrB,YAAyB,EAAM,GAC7B,GAAI,GAAc,GAElB,OAAW,CACT,OACA,UACG,IAAS,IACZ,GAAM,GAAW,EAAK,GAEtB,AAAI,EACF,GAAe,EAAM,MAAM,IAAS,IAAI,GAAO,EAAS,IAAM,KAAK;AAAA,GAEnE,GAAe,EAInB,MAAO,GAGT,YAAyB,GACvB,MAAO,IAAO,QAAQ,eAAiB,EAAQ,WAGjD,YAAkB,GAChB,GAAI,GAAQ,GAAO,QAEnB,MAAI,GAAQ,YACV,GAAQ,GAAI,IAAO,QAAQ,YAAY,CACrC,QAAS,GACT,MAAO,KAIJ,EAGT,YAAmB,EAAM,EAAU,IACjC,GAAI,GAAgB,IAClB,GAAM,GAAQ,GAAS,GACjB,EAAO,GAAQ,GACrB,MAAO,IAAgB,EAAM,OAE7B,OAAO,MC/HX,2BAEA,OAAO,eAAe,GAAS,aAAc,CAC3C,MAAO,KAET,GAAQ,iBAAmB,GAC3B,GAAQ,QAAU,GAElB,GAAI,IAAa,GAAgC,MAEjD,cAAsC,GAAI,MAAO,UAAY,WAAY,MAAO,MAAM,GAAI,GAAQ,GAAI,SAAW,UAA2B,WAAc,MAAO,IAAiB,EAElL,YAAiC,GAAO,GAAI,GAAO,EAAI,WAAc,MAAO,GAAO,GAAI,IAAQ,MAAQ,MAAO,IAAQ,UAAY,MAAO,IAAQ,WAAc,MAAO,CAAE,QAAS,GAAS,GAAI,GAAQ,KAA4B,GAAI,GAAS,EAAM,IAAI,GAAQ,MAAO,GAAM,IAAI,GAAQ,GAAI,GAAS,GAAQ,EAAwB,OAAO,gBAAkB,OAAO,yBAA0B,OAAS,KAAO,GAAO,GAAI,OAAO,UAAU,eAAe,KAAK,EAAK,IAAQ,GAAI,GAAO,EAAwB,OAAO,yBAAyB,EAAK,GAAO,KAAM,AAAI,GAAS,GAAK,KAAO,EAAK,KAAQ,OAAO,eAAe,EAAQ,EAAK,GAAgB,EAAO,GAAO,EAAI,GAAY,SAAO,QAAU,EAAS,GAAS,EAAM,IAAI,EAAK,GAAkB,EAE9tB,GAAI,IAA0B,GAE9B,YAAiB,GACf,MAAO,CACL,OAAQ,EAAM,KACd,OAAQ,EAAM,IAAI,KAClB,QAAS,EAAM,IAAI,MAIvB,GAAM,IAAU,0BAEhB,YAAwB,EAAK,EAAQ,GACnC,GAAM,GAAW,OAAO,OAAO,CAC7B,OAAQ,EACR,KAAM,IACL,EAAI,OACD,EAAS,OAAO,OAAO,GAAI,EAAU,EAAI,KACzC,CACJ,aAAa,EACb,aAAa,GACX,GAAQ,GACN,EAAY,EAAS,KACrB,EAAc,EAAS,OACvB,EAAU,EAAO,KACjB,EAAY,EAAO,OACrB,EAAQ,KAAK,IAAI,EAAa,GAAa,GAAI,GAC/C,EAAM,KAAK,IAAI,EAAO,OAAQ,EAAU,GAE5C,AAAI,IAAc,IAChB,GAAQ,GAGN,IAAY,IACd,GAAM,EAAO,QAGf,GAAM,GAAW,EAAU,EACrB,EAAc,GAEpB,GAAI,EACF,OAAS,GAAI,EAAG,GAAK,EAAU,KAC7B,GAAM,GAAa,EAAI,EAEvB,GAAI,CAAC,EACH,EAAY,GAAc,WACjB,IAAM,GACf,GAAM,GAAe,EAAO,EAAa,GAAG,OAC5C,EAAY,GAAc,CAAC,EAAa,EAAe,EAAc,WAC5D,IAAM,EACf,EAAY,GAAc,CAAC,EAAG,QAE9B,GAAM,GAAe,EAAO,EAAa,GAAG,OAC5C,EAAY,GAAc,CAAC,EAAG,QAIlC,AAAI,KAAgB,EAClB,AAAI,EACF,EAAY,GAAa,CAAC,EAAa,GAEvC,EAAY,GAAa,GAG3B,EAAY,GAAa,CAAC,EAAa,EAAY,GAIvD,MAAO,CACL,QACA,MACA,eAIJ,YAA0B,EAAU,EAAK,EAAO,IAC9C,GAAM,GAAe,GAAK,eAAiB,EAAK,aAAgB,AA1FlE,GA0FqE,GAAW,iBAAiB,GACzF,EAAS,AA3FjB,GA2FoB,GAAW,UAAU,GACjC,EAAO,GAAQ,GAEf,EAAiB,CAAC,EAAS,IACxB,EAAc,EAAQ,GAAU,EAGnC,EAAQ,EAAS,MAAM,IACvB,CACJ,QACA,MACA,eACE,GAAe,EAAK,EAAO,GACzB,EAAa,EAAI,OAAS,MAAO,GAAI,MAAM,QAAW,SACtD,EAAiB,OAAO,GAAK,OAE/B,EAAQ,AADa,GAAe,AA1G1C,GA0G6C,GAAW,SAAS,EAAU,GAAQ,GACpD,MAAM,IAAS,MAAM,EAAO,GAAK,IAAI,CAAC,EAAM,KACvE,GAAM,GAAS,EAAQ,EAAI,EAErB,EAAS,IADM,IAAI,IAAS,MAAM,CAAC,OAEnC,EAAY,EAAY,GACxB,EAAiB,CAAC,EAAY,EAAS,GAE7C,GAAI,GACF,GAAI,GAAa,GAEjB,GAAI,MAAM,QAAQ,IAChB,GAAM,GAAgB,EAAK,MAAM,EAAG,KAAK,IAAI,EAAU,GAAK,EAAG,IAAI,QAAQ,SAAU,KAC/E,EAAkB,EAAU,IAAM,EACxC,EAAa,CAAC;AAAA,GAAO,EAAe,EAAK,OAAQ,EAAO,QAAQ,MAAO,MAAO,IAAK,EAAe,EAAe,EAAK,OAAQ,KAAK,OAAO,IAAkB,KAAK,IAE7J,GAAkB,EAAK,SACzB,IAAc,IAAM,EAAe,EAAK,QAAS,EAAK,UAI1D,MAAO,CAAC,EAAe,EAAK,OAAQ,KAAM,EAAe,EAAK,OAAQ,GAAS,EAAK,OAAS,EAAI,IAAI,IAAS,GAAI,GAAY,KAAK,QAEnI,OAAO,IAAI,EAAe,EAAK,OAAQ,KAAU,EAAK,OAAS,EAAI,IAAI,IAAS,OAEjF,KAAK;AAAA,GAMR,MAJI,GAAK,SAAW,CAAC,GACnB,GAAQ,GAAG,IAAI,OAAO,EAAiB,KAAK,EAAK;AAAA,EAAY,KAG3D,EACK,EAAM,MAAM,GAEZ,EAIX,YAAkB,EAAU,EAAY,EAAW,EAAO,IACxD,GAAI,CAAC,IACH,GAA0B,GAC1B,GAAM,GAAU,sGAEhB,GAAI,QAAQ,YACV,QAAQ,YAAY,EAAS,2BAE7B,GAAM,GAAmB,GAAI,OAAM,GACnC,EAAiB,KAAO,qBACxB,QAAQ,KAAK,GAAI,OAAM,KAI3B,SAAY,KAAK,IAAI,EAAW,GAOzB,GAAiB,EANP,CACf,MAAO,CACL,OAAQ,EACR,KAAM,IAGkC,MCrK9C,gCACA,GAAM,IAAkB,KAClB,GAAmB,KACnB,CAAC,QAAS,IAA2B,KACrC,CAAC,qBAA4B,KAE7B,GAAY,GAAQ,YAAa,CACtC,SAAU,GAAQ,OAAO,SACzB,UAAW,GAAQ,OAAO;AAAA;AAAA;AAAA,KAGrB,GAAY,CAAC,EAAQ,EAAS,KACnC,AAAI,MAAO,IAAY,UACtB,GAAW,EACX,EAAU,MAGX,IACC,IACC,MAAO,MAAK,MAAM,EAAQ,SAClB,GACR,SAAS,EAAQ,GACX,SAEC,GACR,EAAM,QAAU,EAAM,QAAQ,QAAQ,MAAO,IAC7C,GAAM,GAAa,EAAM,QAAQ,MAAM,2CAEjC,EAAY,GAAI,IAAU,GAKhC,GAJI,GACH,GAAU,SAAW,GAGlB,GAAc,EAAW,OAAS,GACrC,GAAM,GAAQ,GAAI,IAAgB,GAC5B,EAAQ,OAAO,EAAW,IAC1B,EAAW,EAAM,iBAAiB,GAElC,EAAY,GACjB,EACA,CAAC,MAAO,CAAC,KAAM,EAAS,KAAO,EAAG,OAAQ,EAAS,OAAS,IAC5D,CAAC,cAAe,KAGjB,EAAU,UAAY,EAGvB,KAAM,KAIR,GAAU,UAAY,GAEtB,GAAO,QAAU,KCrDjB,oBAAU,GAAO,QAAU,EAE3B,GAAI,IAEJ,AAAI,MAAO,UAAY,UACnB,QAAQ,KACR,QAAQ,IAAI,YACZ,cAAc,KAAK,QAAQ,IAAI,YACjC,GAAQ,WACN,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GACjD,EAAK,QAAQ,UACb,QAAQ,IAAI,MAAM,QAAS,IAG7B,GAAQ,aAKV,EAAQ,oBAAsB,QAE9B,GAAI,IAAa,IACb,GAAmB,OAAO,kBACD,iBAGzB,GAA4B,GAG5B,GAAK,EAAQ,GAAK,GAClB,EAAM,EAAQ,IAAM,GACpB,EAAI,EAQJ,GAAoB,IACxB,EAAI,IAAqB,cACzB,GAAI,IAAyB,IAC7B,EAAI,IAA0B,SAM9B,GAAI,IAAuB,IAC3B,EAAI,IAAwB,6BAK5B,GAAI,IAAc,IAClB,EAAI,IAAe,IAAM,EAAI,IAAqB,QACzB,EAAI,IAAqB,QACzB,EAAI,IAAqB,IAElD,GAAI,IAAmB,IACvB,EAAI,IAAoB,IAAM,EAAI,IAA0B,QAC9B,EAAI,IAA0B,QAC9B,EAAI,IAA0B,IAK5D,GAAI,IAAuB,IAC3B,EAAI,IAAwB,MAAQ,EAAI,IACZ,IAAM,EAAI,IAAwB,IAE9D,GAAI,IAA4B,IAChC,EAAI,IAA6B,MAAQ,EAAI,IACZ,IAAM,EAAI,IAAwB,IAMnE,GAAI,IAAa,IACjB,EAAI,IAAc,QAAU,EAAI,IACd,SAAW,EAAI,IAAwB,OAEzD,GAAI,IAAkB,IACtB,EAAI,IAAmB,SAAW,EAAI,IACf,SAAW,EAAI,IAA6B,OAKnE,GAAI,IAAkB,IACtB,EAAI,IAAmB,gBAMvB,GAAI,IAAQ,IACZ,EAAI,IAAS,UAAY,EAAI,IAChB,SAAW,EAAI,IAAmB,OAW/C,GAAI,IAAO,IACP,GAAY,KAAO,EAAI,IACX,EAAI,IAAc,IAClB,EAAI,IAAS,IAE7B,EAAI,IAAQ,IAAM,GAAY,IAK9B,GAAI,IAAa,WAAa,EAAI,IACjB,EAAI,IAAmB,IACvB,EAAI,IAAS,IAE1B,GAAQ,IACZ,EAAI,IAAS,IAAM,GAAa,IAEhC,GAAI,IAAO,IACX,EAAI,IAAQ,eAKZ,GAAI,IAAwB,IAC5B,EAAI,IAAyB,EAAI,IAA0B,WAC3D,GAAI,IAAmB,IACvB,EAAI,IAAoB,EAAI,IAAqB,WAEjD,GAAI,IAAc,IAClB,EAAI,IAAe,YAAc,EAAI,IAAoB,WAC1B,EAAI,IAAoB,WACxB,EAAI,IAAoB,OAC5B,EAAI,IAAc,KAC1B,EAAI,IAAS,QAGhC,GAAI,IAAmB,IACvB,EAAI,IAAoB,YAAc,EAAI,IAAyB,WAC/B,EAAI,IAAyB,WAC7B,EAAI,IAAyB,OACjC,EAAI,IAAmB,KAC/B,EAAI,IAAS,QAGrC,GAAI,IAAS,IACb,EAAI,IAAU,IAAM,EAAI,IAAQ,OAAS,EAAI,IAAe,IAC5D,GAAI,IAAc,IAClB,EAAI,IAAe,IAAM,EAAI,IAAQ,OAAS,EAAI,IAAoB,IAItE,GAAI,IAAS,IACb,EAAI,IAAU,sBACY,GAA4B,kBACtB,GAA4B,oBAC5B,GAA4B,mBAK5D,GAAI,IAAY,IAChB,EAAI,IAAa,UAEjB,GAAI,IAAY,IAChB,EAAI,IAAa,SAAW,EAAI,IAAa,OAC7C,GAAG,IAAa,GAAI,QAAO,EAAI,IAAY,KAC3C,GAAI,IAAmB,MAEnB,GAAQ,IACZ,EAAI,IAAS,IAAM,EAAI,IAAa,EAAI,IAAe,IACvD,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAa,EAAI,IAAoB,IAIjE,GAAI,IAAY,IAChB,EAAI,IAAa,UAEjB,GAAI,IAAY,IAChB,EAAI,IAAa,SAAW,EAAI,IAAa,OAC7C,GAAG,IAAa,GAAI,QAAO,EAAI,IAAY,KAC3C,GAAI,IAAmB,MAEnB,GAAQ,IACZ,EAAI,IAAS,IAAM,EAAI,IAAa,EAAI,IAAe,IACvD,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAa,EAAI,IAAoB,IAGjE,GAAI,IAAkB,IACtB,EAAI,IAAmB,IAAM,EAAI,IAAQ,QAAU,GAAa,QAChE,GAAI,IAAa,IACjB,EAAI,IAAc,IAAM,EAAI,IAAQ,QAAU,GAAY,QAI1D,GAAI,IAAiB,IACrB,EAAI,IAAkB,SAAW,EAAI,IACf,QAAU,GAAa,IAAM,EAAI,IAAe,IAGtE,GAAG,IAAkB,GAAI,QAAO,EAAI,IAAiB,KACrD,GAAI,IAAwB,SAMxB,GAAc,IAClB,EAAI,IAAe,SAAW,EAAI,IAAe,cAExB,EAAI,IAAe,SAG5C,GAAI,IAAmB,IACvB,EAAI,IAAoB,SAAW,EAAI,IAAoB,cAE7B,EAAI,IAAoB,SAItD,GAAI,IAAO,IACX,EAAI,IAAQ,kBAIZ,OAAS,IAAI,EAAG,GAAI,EAAG,KACrB,GAAM,GAAG,EAAI,KACR,GAAG,KACN,IAAG,IAAK,GAAI,QAAO,EAAI,MAI3B,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GAQvB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAmB,GACrB,MAAO,GAOT,GAJI,MAAO,IAAY,UAInB,EAAQ,OAAS,GACnB,MAAO,MAGT,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAS,GAAG,IACvC,GAAI,CAAC,EAAE,KAAK,GACV,MAAO,MAGT,IACE,MAAO,IAAI,GAAO,EAAS,SACpB,GACP,MAAO,OAIX,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GACvB,GAAI,GAAI,GAAM,EAAS,GACvB,MAAO,GAAI,EAAE,QAAU,KAGzB,EAAQ,MAAQ,GAChB,YAAgB,EAAS,GACvB,GAAI,GAAI,GAAM,EAAQ,OAAO,QAAQ,SAAU,IAAK,GACpD,MAAO,GAAI,EAAE,QAAU,KAGzB,EAAQ,OAAS,EAEjB,WAAiB,EAAS,GAOxB,GANI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAGnB,YAAmB,IACrB,GAAI,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAEP,EAAU,EAAQ,gBAEX,MAAO,IAAY,SAC5B,KAAM,IAAI,WAAU,oBAAsB,GAG5C,GAAI,EAAQ,OAAS,GACnB,KAAM,IAAI,WAAU,0BAA4B,GAAa,eAG/D,GAAI,CAAE,gBAAgB,IACpB,MAAO,IAAI,GAAO,EAAS,GAG7B,GAAM,SAAU,EAAS,GACzB,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MAEvB,GAAI,GAAI,EAAQ,OAAO,MAAM,EAAQ,MAAQ,GAAG,IAAS,GAAG,KAE5D,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,oBAAsB,GAU5C,GAPA,KAAK,IAAM,EAGX,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAEZ,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAItB,AAAK,EAAE,GAGL,KAAK,WAAa,EAAE,GAAG,MAAM,KAAK,IAAI,SAAU,GAC9C,GAAI,WAAW,KAAK,IAClB,GAAI,GAAM,CAAC,EACX,GAAI,GAAO,GAAK,EAAM,GACpB,MAAO,GAGX,MAAO,KATT,KAAK,WAAa,GAapB,KAAK,MAAQ,EAAE,GAAK,EAAE,GAAG,MAAM,KAAO,GACtC,KAAK,SAGP,EAAO,UAAU,OAAS,WACxB,YAAK,QAAU,KAAK,MAAQ,IAAM,KAAK,MAAQ,IAAM,KAAK,MACtD,KAAK,WAAW,QAClB,MAAK,SAAW,IAAM,KAAK,WAAW,KAAK,MAEtC,KAAK,SAGd,EAAO,UAAU,SAAW,WAC1B,MAAO,MAAK,SAGd,EAAO,UAAU,QAAU,SAAU,GACnC,UAAM,iBAAkB,KAAK,QAAS,KAAK,QAAS,GAC9C,YAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAG1B,KAAK,YAAY,IAAU,KAAK,WAAW,IAGpD,EAAO,UAAU,YAAc,SAAU,GACvC,MAAM,aAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAG1B,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QAG9C,EAAO,UAAU,WAAa,SAAU,GAMtC,GALM,YAAiB,IACrB,GAAQ,GAAI,GAAO,EAAO,KAAK,UAI7B,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OAC9C,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,EAAM,WAAW,OACrD,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OACtD,MAAO,GAGT,GAAI,GAAI,EACR,GACE,GAAI,GAAI,KAAK,WAAW,GACpB,EAAI,EAAM,WAAW,GAEzB,GADA,GAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,IAKb,EAAO,UAAU,IAAM,SAAU,EAAS,GACxC,OAAQ,OACD,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WAIH,KAAK,WAAW,OAAS,EACzB,KAAK,IAAI,QAAS,GAClB,KAAK,IAAI,MAAO,GAChB,UAGG,aACH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,IAAI,QAAS,GAEpB,KAAK,IAAI,MAAO,GAChB,UAEG,QAKH,AAAI,MAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAW,SAAW,IAC7B,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,MAAK,QAAU,GAAK,KAAK,WAAW,SAAW,IACjD,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,QAEP,KAAK,WAAa,GAClB,UAGG,MACH,GAAI,KAAK,WAAW,SAAW,EAC7B,KAAK,WAAa,CAAC,QAGnB,OADI,GAAI,KAAK,WAAW,OACjB,EAAE,GAAK,GACZ,AAAI,MAAO,MAAK,WAAW,IAAO,UAChC,MAAK,WAAW,KAChB,EAAI,IAGR,AAAI,IAAM,IAER,KAAK,WAAW,KAAK,GAGzB,AAAI,GAGF,CAAI,KAAK,WAAW,KAAO,EACrB,MAAM,KAAK,WAAW,KACxB,MAAK,WAAa,CAAC,EAAY,IAGjC,KAAK,WAAa,CAAC,EAAY,IAGnC,cAGA,KAAM,IAAI,OAAM,+BAAiC,GAErD,YAAK,SACL,KAAK,IAAM,KAAK,QACT,MAGT,EAAQ,IAAM,GACd,YAAc,EAAS,EAAS,EAAO,GACrC,AAAI,MAAQ,IAAW,UACrB,GAAa,EACb,EAAQ,QAGV,IACE,MAAO,IAAI,GAAO,EAAS,GAAO,IAAI,EAAS,GAAY,cACpD,GACP,MAAO,OAIX,EAAQ,KAAO,GACf,YAAe,EAAU,GACvB,GAAI,GAAG,EAAU,GACf,MAAO,MAEP,GAAI,GAAK,GAAM,GACX,EAAK,GAAM,GACX,EAAS,GACb,GAAI,EAAG,WAAW,QAAU,EAAG,WAAW,QACxC,EAAS,MACT,GAAI,GAAgB,aAEtB,OAAS,KAAO,GACd,GAAI,KAAQ,SAAW,IAAQ,SAAW,IAAQ,UAC5C,EAAG,KAAS,EAAG,GACjB,MAAO,GAAS,EAItB,MAAO,GAIX,EAAQ,mBAAqB,GAE7B,GAAI,IAAU,WACd,YAA6B,EAAG,GAC9B,GAAI,GAAO,GAAQ,KAAK,GACpB,EAAO,GAAQ,KAAK,GAExB,MAAI,IAAQ,GACV,GAAI,CAAC,EACL,EAAI,CAAC,GAGA,IAAM,EAAI,EACZ,GAAQ,CAAC,EAAQ,GACjB,GAAQ,CAAC,EAAQ,EAClB,EAAI,EAAI,GACR,EAGN,EAAQ,oBAAsB,GAC9B,YAA8B,EAAG,GAC/B,MAAO,IAAmB,EAAG,GAG/B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,MAAQ,GAChB,YAAgB,EAAG,GACjB,MAAO,IAAI,GAAO,EAAG,GAAO,MAG9B,EAAQ,QAAU,GAClB,YAAkB,EAAG,EAAG,GACtB,MAAO,IAAI,GAAO,EAAG,GAAO,QAAQ,GAAI,GAAO,EAAG,IAGpD,EAAQ,aAAe,GACvB,YAAuB,EAAG,GACxB,MAAO,IAAQ,EAAG,EAAG,IAGvB,EAAQ,SAAW,GACnB,YAAmB,EAAG,EAAG,GACvB,MAAO,IAAQ,EAAG,EAAG,GAGvB,EAAQ,KAAO,GACf,YAAe,EAAM,GACnB,MAAO,GAAK,KAAK,SAAU,EAAG,GAC5B,MAAO,GAAQ,QAAQ,EAAG,EAAG,KAIjC,EAAQ,MAAQ,GAChB,YAAgB,EAAM,GACpB,MAAO,GAAK,KAAK,SAAU,EAAG,GAC5B,MAAO,GAAQ,SAAS,EAAG,EAAG,KAIlC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,GAAS,EAGhC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,GAAS,EAGhC,EAAQ,GAAK,GACb,YAAa,EAAG,EAAG,GACjB,MAAO,IAAQ,EAAG,EAAG,KAAW,EAGlC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,KAAW,EAGlC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,IAAU,EAGjC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAG,GAClB,MAAO,IAAQ,EAAG,EAAG,IAAU,EAGjC,EAAQ,IAAM,GACd,YAAc,EAAG,EAAI,EAAG,GACtB,OAAQ,OACD,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,OACA,QACA,KACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,WAGjB,KAAM,IAAI,WAAU,qBAAuB,IAIjD,EAAQ,WAAa,GACrB,YAAqB,EAAM,GAQzB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAgB,KAClB,GAAI,EAAK,QAAU,CAAC,CAAC,EAAQ,MAC3B,MAAO,GAEP,EAAO,EAAK,MAIhB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAW,EAAM,GAG9B,GAAM,aAAc,EAAM,GAC1B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,MAAM,GAEX,AAAI,KAAK,SAAW,GAClB,KAAK,MAAQ,GAEb,KAAK,MAAQ,KAAK,SAAW,KAAK,OAAO,QAG3C,GAAM,OAAQ,MAGhB,GAAI,IAAM,GACV,GAAW,UAAU,MAAQ,SAAU,GACrC,GAAI,GAAI,KAAK,QAAQ,MAAQ,GAAG,IAAmB,GAAG,IAClD,EAAI,EAAK,MAAM,GAEnB,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,uBAAyB,GAG/C,KAAK,SAAW,EAAE,GACd,KAAK,WAAa,KACpB,MAAK,SAAW,IAIlB,AAAK,EAAE,GAGL,KAAK,OAAS,GAAI,GAAO,EAAE,GAAI,KAAK,QAAQ,OAF5C,KAAK,OAAS,IAMlB,GAAW,UAAU,SAAW,WAC9B,MAAO,MAAK,OAGd,GAAW,UAAU,KAAO,SAAU,GAGpC,MAFA,IAAM,kBAAmB,EAAS,KAAK,QAAQ,OAE3C,KAAK,SAAW,GACX,GAGL,OAAO,IAAY,UACrB,GAAU,GAAI,GAAO,EAAS,KAAK,UAG9B,GAAI,EAAS,KAAK,SAAU,KAAK,OAAQ,KAAK,WAGvD,GAAW,UAAU,WAAa,SAAU,EAAM,GAChD,GAAI,CAAE,aAAgB,KACpB,KAAM,IAAI,WAAU,4BAGtB,AAAI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAIvB,GAAI,GAEJ,GAAI,KAAK,WAAa,GACpB,SAAW,GAAI,IAAM,EAAK,MAAO,GAC1B,GAAU,KAAK,MAAO,EAAU,GAClC,GAAI,EAAK,WAAa,GAC3B,SAAW,GAAI,IAAM,KAAK,MAAO,GAC1B,GAAU,EAAK,OAAQ,EAAU,GAG1C,GAAI,GACD,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACD,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EAAa,KAAK,OAAO,UAAY,EAAK,OAAO,QACjD,EACD,MAAK,WAAa,MAAQ,KAAK,WAAa,OAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,MAC3C,EACF,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IACjC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC7C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACF,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IACjC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC7C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAE/C,MAAO,IAA2B,GAC/B,GAAc,GACf,GAA8B,GAGlC,EAAQ,MAAQ,GAChB,YAAgB,EAAO,GAQrB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,YAAiB,IACnB,MAAI,GAAM,QAAU,CAAC,CAAC,EAAQ,OAC1B,EAAM,oBAAsB,CAAC,CAAC,EAAQ,kBACjC,EAEA,GAAI,IAAM,EAAM,IAAK,GAIhC,GAAI,YAAiB,IACnB,MAAO,IAAI,IAAM,EAAM,MAAO,GAGhC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAM,EAAO,GAgB1B,GAbA,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAGnC,KAAK,IAAM,EACX,KAAK,IAAM,EAAM,MAAM,cAAc,IAAI,SAAU,GACjD,MAAO,MAAK,WAAW,EAAM,SAC5B,MAAM,OAAO,SAAU,GAExB,MAAO,GAAE,SAGP,CAAC,KAAK,IAAI,OACZ,KAAM,IAAI,WAAU,yBAA2B,GAGjD,KAAK,SAGP,GAAM,UAAU,OAAS,WACvB,YAAK,MAAQ,KAAK,IAAI,IAAI,SAAU,GAClC,MAAO,GAAM,KAAK,KAAK,SACtB,KAAK,MAAM,OACP,KAAK,OAGd,GAAM,UAAU,SAAW,WACzB,MAAO,MAAK,OAGd,GAAM,UAAU,WAAa,SAAU,GACrC,GAAI,GAAQ,KAAK,QAAQ,MACzB,EAAQ,EAAM,OAEd,GAAI,GAAK,EAAQ,GAAG,IAAoB,GAAG,IAC3C,EAAQ,EAAM,QAAQ,EAAI,IAC1B,GAAM,iBAAkB,GAExB,EAAQ,EAAM,QAAQ,GAAG,IAAiB,IAC1C,GAAM,kBAAmB,EAAO,GAAG,KAGnC,EAAQ,EAAM,QAAQ,GAAG,IAAY,IAGrC,EAAQ,EAAM,QAAQ,GAAG,IAAY,IAGrC,EAAQ,EAAM,MAAM,OAAO,KAAK,KAKhC,GAAI,GAAS,EAAQ,GAAG,IAAmB,GAAG,IAC1C,EAAM,EAAM,MAAM,KAAK,IAAI,SAAU,GACvC,MAAO,IAAgB,EAAM,KAAK,UACjC,MAAM,KAAK,KAAK,MAAM,OACzB,MAAI,MAAK,QAAQ,OAEf,GAAM,EAAI,OAAO,SAAU,GACzB,MAAO,CAAC,CAAC,EAAK,MAAM,MAGxB,EAAM,EAAI,IAAI,SAAU,GACtB,MAAO,IAAI,IAAW,EAAM,KAAK,UAChC,MAEI,GAGT,GAAM,UAAU,WAAa,SAAU,EAAO,GAC5C,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,WAAU,uBAGtB,MAAO,MAAK,IAAI,KAAK,SAAU,GAC7B,MAAO,GAAgB,MAAM,SAAU,GACrC,MAAO,GAAM,IAAI,KAAK,SAAU,GAC9B,MAAO,GAAiB,MAAM,SAAU,GACtC,MAAO,GAAe,WAAW,EAAiB,YAQ5D,EAAQ,cAAgB,GACxB,YAAwB,EAAO,GAC7B,MAAO,IAAI,IAAM,EAAO,GAAS,IAAI,IAAI,SAAU,GACjD,MAAO,GAAK,IAAI,SAAU,GACxB,MAAO,GAAE,QACR,KAAK,KAAK,OAAO,MAAM,OAO9B,YAA0B,EAAM,GAC9B,UAAM,OAAQ,EAAM,GACpB,EAAO,GAAc,EAAM,GAC3B,GAAM,QAAS,GACf,EAAO,GAAc,EAAM,GAC3B,GAAM,SAAU,GAChB,EAAO,GAAe,EAAM,GAC5B,GAAM,SAAU,GAChB,EAAO,GAAa,EAAM,GAC1B,GAAM,QAAS,GACR,EAGT,YAAc,GACZ,MAAO,CAAC,GAAM,EAAG,gBAAkB,KAAO,IAAO,IASnD,YAAwB,EAAM,GAC5B,MAAO,GAAK,OAAO,MAAM,OAAO,IAAI,SAAU,GAC5C,MAAO,IAAa,EAAM,KACzB,KAAK,KAGV,YAAuB,EAAM,GAC3B,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAc,GAAG,IAC5C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAG,EAAG,EAAG,EAAG,GAC3C,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAClC,AAAI,GAAI,GAEb,EAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,KACpD,AAAI,EACT,IAAM,kBAAmB,GACzB,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,MAGlC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,GAAM,eAAgB,GACf,IAUX,YAAwB,EAAM,GAC5B,MAAO,GAAK,OAAO,MAAM,OAAO,IAAI,SAAU,GAC5C,MAAO,IAAa,EAAM,KACzB,KAAK,KAGV,YAAuB,EAAM,GAC3B,GAAM,QAAS,EAAM,GACrB,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAc,GAAG,IAC5C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAG,EAAG,EAAG,EAAG,GAC3C,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAClC,AAAI,GAAI,GACb,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,KAEzD,EAAM,KAAO,EAAI,IAAM,EAAI,OAAU,EAAC,EAAI,GAAK,OAE5C,AAAI,EACT,IAAM,kBAAmB,GACzB,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAM,EAAI,IAAO,EAAC,EAAI,GAEvC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAAI,IAAM,EACrC,KAAQ,EAAC,EAAI,GAAK,QAG1B,IAAM,SACN,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAM,EAAI,IAAO,EAAC,EAAI,GAEvC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAO,EAAI,IAAO,EAAC,EAAI,GAAK,KAGpC,EAAM,KAAO,EAAI,IAAM,EAAI,IAAM,EAC3B,KAAQ,EAAC,EAAI,GAAK,QAI5B,GAAM,eAAgB,GACf,IAIX,YAAyB,EAAM,GAC7B,UAAM,iBAAkB,EAAM,GACvB,EAAK,MAAM,OAAO,IAAI,SAAU,GACrC,MAAO,IAAc,EAAM,KAC1B,KAAK,KAGV,YAAwB,EAAM,GAC5B,EAAO,EAAK,OACZ,GAAI,GAAI,EAAQ,MAAQ,GAAG,IAAe,GAAG,IAC7C,MAAO,GAAK,QAAQ,EAAG,SAAU,EAAK,EAAM,EAAG,EAAG,EAAG,GACnD,GAAM,SAAU,EAAM,EAAK,EAAM,EAAG,EAAG,EAAG,GAC1C,GAAI,GAAK,GAAI,GACT,EAAK,GAAM,GAAI,GACf,EAAK,GAAM,GAAI,GACf,EAAO,EAEX,MAAI,KAAS,KAAO,GAClB,GAAO,IAGT,AAAI,EACF,AAAI,IAAS,KAAO,IAAS,IAE3B,EAAM,SAGN,EAAM,IAEH,AAAI,GAAQ,EAGb,IACF,GAAI,GAEN,EAAI,EAEJ,AAAI,IAAS,IAIX,GAAO,KACP,AAAI,EACF,GAAI,CAAC,EAAI,EACT,EAAI,EACJ,EAAI,GAEJ,GAAI,CAAC,EAAI,EACT,EAAI,IAEG,IAAS,MAGlB,GAAO,IACP,AAAI,EACF,EAAI,CAAC,EAAI,EAET,EAAI,CAAC,EAAI,GAIb,EAAM,EAAO,EAAI,IAAM,EAAI,IAAM,GAC5B,AAAI,EACT,EAAM,KAAO,EAAI,SAAY,EAAC,EAAI,GAAK,OAC9B,GACT,GAAM,KAAO,EAAI,IAAM,EAAI,OAAS,EAAI,IAAO,EAAC,EAAI,GAAK,MAG3D,GAAM,gBAAiB,GAEhB,IAMX,YAAuB,EAAM,GAC3B,UAAM,eAAgB,EAAM,GAErB,EAAK,OAAO,QAAQ,GAAG,IAAO,IAQvC,YAAwB,EACtB,EAAM,EAAI,EAAI,EAAI,EAAK,EACvB,EAAI,EAAI,EAAI,EAAI,EAAK,GACrB,MAAI,IAAI,GACN,EAAO,GACF,AAAI,GAAI,GACb,EAAO,KAAO,EAAK,OACd,AAAI,GAAI,GACb,EAAO,KAAO,EAAK,IAAM,EAAK,KAE9B,EAAO,KAAO,EAGhB,AAAI,GAAI,GACN,EAAK,GACA,AAAI,GAAI,GACb,EAAK,IAAO,EAAC,EAAK,GAAK,OAClB,AAAI,GAAI,GACb,EAAK,IAAM,EAAK,IAAO,EAAC,EAAK,GAAK,KAC7B,AAAI,EACT,EAAK,KAAO,EAAK,IAAM,EAAK,IAAM,EAAK,IAAM,EAE7C,EAAK,KAAO,EAGN,GAAO,IAAM,GAAI,OAI3B,GAAM,UAAU,KAAO,SAAU,GAC/B,GAAI,CAAC,EACH,MAAO,GAGT,AAAI,MAAO,IAAY,UACrB,GAAU,GAAI,GAAO,EAAS,KAAK,UAGrC,OAAS,GAAI,EAAG,EAAI,KAAK,IAAI,OAAQ,IACnC,GAAI,GAAQ,KAAK,IAAI,GAAI,EAAS,KAAK,SACrC,MAAO,GAGX,MAAO,IAGT,YAAkB,EAAK,EAAS,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAI,CAAC,EAAI,GAAG,KAAK,GACf,MAAO,GAIX,GAAI,EAAQ,WAAW,QAAU,CAAC,EAAQ,mBAMxC,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,IAE1B,GADA,GAAM,EAAI,GAAG,QACT,EAAI,GAAG,SAAW,IAIlB,EAAI,GAAG,OAAO,WAAW,OAAS,GACpC,GAAI,GAAU,EAAI,GAAG,OACrB,GAAI,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAMb,MAAO,GAGT,MAAO,GAGT,EAAQ,UAAY,GACpB,YAAoB,EAAS,EAAO,GAClC,IACE,EAAQ,GAAI,IAAM,EAAO,SAClB,GACP,MAAO,GAET,MAAO,GAAM,KAAK,GAGpB,EAAQ,cAAgB,GACxB,YAAwB,EAAU,EAAO,GACvC,GAAI,GAAM,KACN,EAAQ,KACZ,IACE,GAAI,GAAW,GAAI,IAAM,EAAO,SACzB,GACP,MAAO,MAET,SAAS,QAAQ,SAAU,GACzB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,KAE/B,GAAM,EACN,EAAQ,GAAI,GAAO,EAAK,MAIvB,EAGT,EAAQ,cAAgB,GACxB,YAAwB,EAAU,EAAO,GACvC,GAAI,GAAM,KACN,EAAQ,KACZ,IACE,GAAI,GAAW,GAAI,IAAM,EAAO,SACzB,GACP,MAAO,MAET,SAAS,QAAQ,SAAU,GACzB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,IAE/B,GAAM,EACN,EAAQ,GAAI,GAAO,EAAK,MAIvB,EAGT,EAAQ,WAAa,GACrB,YAAqB,EAAO,GAC1B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAS,GAAI,GAAO,SAMxB,GALI,EAAM,KAAK,IAIf,GAAS,GAAI,GAAO,WAChB,EAAM,KAAK,IACb,MAAO,GAGT,EAAS,KACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAI,GAAc,EAAM,IAAI,GAE5B,EAAY,QAAQ,SAAU,GAE5B,GAAI,GAAU,GAAI,GAAO,EAAW,OAAO,SAC3C,OAAQ,EAAW,cACZ,IACH,AAAI,EAAQ,WAAW,SAAW,EAChC,EAAQ,QAER,EAAQ,WAAW,KAAK,GAE1B,EAAQ,IAAM,EAAQ,aAEnB,OACA,KACH,AAAI,EAAC,GAAU,GAAG,EAAQ,KACxB,GAAS,GAEX,UACG,QACA,KAEH,cAGA,KAAM,IAAI,OAAM,yBAA2B,EAAW,aAK9D,MAAI,IAAU,EAAM,KAAK,GAChB,EAGF,KAGT,EAAQ,WAAa,GACrB,YAAqB,EAAO,GAC1B,IAGE,MAAO,IAAI,IAAM,EAAO,GAAS,OAAS,UACnC,GACP,MAAO,OAKX,EAAQ,IAAM,GACd,YAAc,EAAS,EAAO,GAC5B,MAAO,IAAQ,EAAS,EAAO,IAAK,GAItC,EAAQ,IAAM,GACd,YAAc,EAAS,EAAO,GAC5B,MAAO,IAAQ,EAAS,EAAO,IAAK,GAGtC,EAAQ,QAAU,GAClB,YAAkB,EAAS,EAAO,EAAM,GACtC,EAAU,GAAI,GAAO,EAAS,GAC9B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAM,EAAO,EAAM,EAAM,EAC7B,OAAQ,OACD,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,UACG,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,cAEA,KAAM,IAAI,WAAU,yCAIxB,GAAI,GAAU,EAAS,EAAO,GAC5B,MAAO,GAMT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAI,GAAc,EAAM,IAAI,GAExB,EAAO,KACP,EAAM,KAuBV,GArBA,EAAY,QAAQ,SAAU,GAC5B,AAAI,EAAW,SAAW,IACxB,GAAa,GAAI,IAAW,YAE9B,EAAO,GAAQ,EACf,EAAM,GAAO,EACb,AAAI,EAAK,EAAW,OAAQ,EAAK,OAAQ,GACvC,EAAO,EACE,EAAK,EAAW,OAAQ,EAAI,OAAQ,IAC7C,GAAM,KAMN,EAAK,WAAa,GAAQ,EAAK,WAAa,GAM3C,EAAC,EAAI,UAAY,EAAI,WAAa,IACnC,EAAM,EAAS,EAAI,QACrB,MAAO,GACF,GAAI,EAAI,WAAa,GAAS,EAAK,EAAS,EAAI,QACrD,MAAO,GAGX,MAAO,GAGT,EAAQ,WAAa,GACrB,YAAqB,EAAS,GAC5B,GAAI,GAAS,GAAM,EAAS,GAC5B,MAAQ,IAAU,EAAO,WAAW,OAAU,EAAO,WAAa,KAGpE,EAAQ,WAAa,GACrB,YAAqB,EAAI,EAAI,GAC3B,SAAK,GAAI,IAAM,EAAI,GACnB,EAAK,GAAI,IAAM,EAAI,GACZ,EAAG,WAAW,GAGvB,EAAQ,OAAS,GACjB,YAAiB,GACf,GAAI,YAAmB,GACrB,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,MAAO,MAGT,GAAI,GAAQ,EAAQ,MAAM,GAAG,KAE7B,MAAI,IAAS,KACJ,KAGF,GAAM,EAAM,GACjB,IAAO,GAAM,IAAM,KACnB,IAAO,GAAM,IAAM,8xNCz8CvB,gCAEA,GAAI,IAAW,GACZ,OAAe,MACf,OAAe,MACd,GAAqB,KAEzB,GAAO,QAAU,SAAU,GACzB,GAAI,GAAQ,EAEZ,aACE,MAAO,GAAQ,EAAO,OAMxB,WAAe,GACb,GAAI,YAAiB,SACnB,GAAI,GAAQ,EAAO,MAAM,GACrB,EAAQ,EAAM,MAAM,GACxB,GAAI,EACF,UAAS,EAAM,GAAG,OACX,EAAM,WAGX,EAAO,QAAQ,EAAO,KAAW,EACnC,UAAS,EAAM,OACR,EAKb,aACE,EAAK,QAGP,aAGE,OAFI,GACA,EAAgB,CAAC,OAAQ,MAAO,KAAM,IAAK,IAAK,IAAK,KAChD,EAAI,EAAG,EAAI,EAAc,QAChC,GAAS,EAAK,EAAc,IACxB,IAFoC,IAExC,CAKF,GAAI,IAAW,KAAO,EAAQ,GAAK,EAAO,EAAQ,KAAO,IACvD,KAAM,IAAI,OAAM,oBAGlB,MAAO,IAAU,CACf,KAAM,WACN,OAAQ,GAIZ,aACE,MAAO,GAAK,kBAGd,aACE,GAAI,GAAS,IACb,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,+BAAiC,GAEnD,MAAO,GAGT,aACE,GAAI,EAAK,iBACP,GAAI,GAAS,IACb,MAAO,CAAE,KAAM,cAAe,OAAQ,IAI1C,aACE,GAAI,EAAK,gBACP,GAAI,GAAS,IACb,MAAO,CAAE,KAAM,aAAc,OAAQ,IAIzC,aACE,GAAI,GAAQ,EACR,EAAS,IAEb,GAAI,GAAS,QAAQ,KAAY,GAC/B,MAAO,CACL,KAAM,UACN,OAAQ,GAEL,GAAI,GAAW,QAAQ,KAAY,GACxC,MAAO,CACL,KAAM,YACN,OAAQ,GAIZ,EAAQ,EAKV,aAEE,MACE,MACA,KACA,KACA,IAKJ,OADI,GAAS,GACN,KACL,KACI,EAAC,OAIL,GAAI,GAAQ,IACZ,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,eAAiB,EAAO,GACxB,eAAiB,GAGnC,EAAO,KAAK,GAEd,MAAO,MCjIT,gCAOA,GAAO,QAAU,SAAU,GACzB,GAAI,GAAQ,EAEZ,aACE,MAAO,GAAQ,EAAO,OAGxB,aACE,MAAO,KAAY,EAAO,GAAS,KAGrC,aACE,GAAI,CAAC,IACH,KAAM,IAAI,OAEZ,IAGF,WAAwB,GACtB,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,YAAc,IAAa,EAAE,OAC/C,WACO,EAAE,OAIb,aACE,GAAI,EAAc,SAChB,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,YAClB,WACO,EAAE,OAEX,KAAM,IAAI,OAAM,oCAIpB,aAIE,GAAI,GAAQ,EACR,EAAS,GACT,EAAI,IACR,GAAI,EAAE,OAAS,eACb,KACA,GAAU,eAAiB,EAAE,OAAS,IAClC,CAAC,EAAc,MACjB,KAAM,IAAI,OAAM,wCAIpB,GADA,EAAI,IACA,EAAE,OAAS,aACb,WACA,GAAU,cAAgB,EAAE,OACrB,CAAE,QAAS,GAEpB,EAAQ,EAGV,aACE,GAAI,GAAI,IACR,GAAI,GAAK,EAAE,OAAS,WAClB,IACA,GAAI,GAAO,CAAE,QAAS,EAAE,QACxB,AAAI,EAAc,MAChB,GAAK,KAAO,IAEd,GAAI,GAAY,IAChB,MAAI,IACF,GAAK,UAAY,GAEZ,GAIX,aACE,GAAI,GAAO,EAAc,KACzB,GAAI,EAAC,GAIL,GAAI,GAAO,IAEX,GAAI,CAAC,EAAc,KACjB,KAAM,IAAI,OAAM,gBAGlB,MAAO,IAGT,aACE,MACE,MACA,KACA,IAIJ,WAA6B,EAAU,GACrC,MAAO,cACL,GAAI,GAAO,IACX,GAAI,EAAC,GAIL,GAAI,CAAC,EAAc,GACjB,MAAO,GAGT,GAAI,GAAQ,IACZ,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,uBAElB,MAAO,CACL,KAAM,EACN,YAAa,EAAS,cACtB,MAAO,KAKb,GAAI,GAAW,EAAmB,MAAO,GACrC,EAAkB,EAAmB,KAAM,GAE3C,EAAO,IACX,GAAI,CAAC,GAAQ,IACX,KAAM,IAAI,OAAM,gBAElB,MAAO,MCxIT,gCAEA,GAAI,IAAe,KACf,GAAgB,KAEpB,GAAO,QAAU,SAAU,GACzB,MAAO,IAAM,GAAK,OCNpB,mBAeA,GAAI,IAAgB,KAChB,GAAyB,KAE7B,YAAgB,GACd,IACE,UAAM,GACC,SACA,GACP,MAAO,IAKX,GAAI,IAAiB,CACnB,CAAC,OAAQ,QACT,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,UACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,SAAU,UACX,CAAC,YAAa,KACd,CAAC,iBAAkB,IACnB,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,IAAK,IACN,CAAC,UAAW,OACZ,CAAC,UAAW,OACZ,CAAC,UAAW,OACZ,CAAC,6BAA8B,OAC/B,CAAC,qBAAsB,OACvB,CAAC,qBAAsB,OACvB,CAAC,6BAA8B,OAC/B,CAAC,MAAO,OACR,CAAC,yBAA0B,OAC3B,CAAC,+BAAgC,OACjC,CAAC,MAAO,OACR,CAAC,WAAY,KAGX,GAAa,EACb,GAAU,EAGV,GAAa,CAEf,SAAU,GACR,MAAO,GAAS,eAGlB,SAAU,GACR,MAAO,GAAS,QAGlB,SAAU,GACR,MAAO,GAAS,QAAQ,MAAO,KAGjC,SAAU,GACR,MAAO,GAAS,QAAQ,OAAQ,KAGlC,SAAU,GACR,MAAO,GAAS,QAAQ,OAAQ,MAGlC,SAAU,GACR,MAAO,GAAS,QAAQ,IAAK,MAG/B,SAAU,GACR,MAAO,GAAS,QAAQ,YAAa,QAGvC,SAAU,GACR,MAAO,GAAS,QAAQ,YAAa,UAGvC,SAAU,GACR,MAAO,GACJ,QAAQ,4CAA6C,QAG1D,SAAU,GACR,MAAO,GACJ,QAAQ,4CAA6C,UAG1D,SAAU,GACR,MAAO,GAAS,GAAG,cAAgB,EAAS,MAAM,IAGpD,SAAU,GACR,MAAO,GAAS,QAAQ,IAAK,MAG/B,SAAU,GACR,MAAO,GACJ,QAAQ,cAAe,OACvB,QAAQ,QAAS,SAGtB,SAAU,GACR,MAAI,GAAS,QAAQ,SAAW,GACvB,EAAW,YAEX,EAAW,SAItB,SAAU,GACR,MAAO,GAAW,QAGpB,SAAU,GACR,MAAO,GAAS,QAAQ,QAAS,UAGnC,SAAU,GACR,MAAO,GAAS,QAAQ,cAAe,eAGzC,SAAU,GACR,MAAO,GAAS,QAAQ,uBAAwB,eAGlD,SAAU,GACR,MAAO,GAAS,QAAQ,oDAAqD,iBAG/E,SAAU,GACR,MAAO,GAAS,QAAQ,wCAAyC,iBAGnE,SAAU,GACR,MAAO,GAAS,QAAQ,wCAAyC,uBAGnE,SAAU,GACR,MAAO,GAAS,QAAQ,mCAAoC,uBAG9D,SAAU,GACR,MAAO,GAAS,QAAQ,4CAA6C,iBAGvE,SAAU,GACR,MAAO,MAAQ,GAGjB,SAAU,GACR,MAAO,MAAQ,EAAW,QAG5B,SAAU,GACR,MAAO,GACJ,QAAQ,cAAe,MACvB,QAAQ,gBAAiB,MACzB,QAAQ,gBAAiB,MACzB,QAAQ,QAAS,OACjB,QAAQ,kBAAmB,KAGhC,SAAU,GACR,MAAO,MACL,EACG,QAAQ,cAAe,MACvB,QAAQ,gBAAiB,MACzB,QAAQ,gBAAiB,MACzB,QAAQ,QAAS,OACjB,QAAQ,kBAAmB,IAC9B,SAIF,GAAuB,GACxB,IAAI,SAAU,GACb,GAAI,GAAQ,kBAAkB,KAAK,GACnC,MAAO,GACH,CAAC,EAAM,GAAI,EAAM,IACjB,CAAC,EAAI,QAEV,OAAO,SAAU,EAAW,GAC3B,GAAI,GAAM,EAAK,GACf,SAAU,GAAO,EAAU,IAAQ,GACnC,EAAU,GAAK,KAAK,EAAK,IAClB,GACN,IAED,GAAyB,OAAO,KAAK,IACtC,IAAI,SAAsB,GACzB,MAAO,CAAC,EAAK,GAAqB,MAEnC,OAAO,SAA+B,GACrC,MAEE,GAAK,GAAG,SAAW,GACnB,EAAK,KAAO,MAEZ,EAAK,KAAO,QAGf,IAAI,SAA4B,GAC/B,MAAO,CAAC,EAAK,GAAI,EAAK,GAAG,MAG7B,GAAuB,OAIvB,GAAI,IAAc,CAChB,CAAC,OAAQ,aACT,CAAC,MAAO,SACR,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,WAAY,gBACb,CAAC,SAAU,qBACX,CAAC,OAAQ,qBACT,CAAC,SAAU,cACX,CAAC,WAAY,gBACb,CAAC,SAAU,qBACX,CAAC,OAAQ,YACT,CAAC,QAAS,WACV,CAAC,MAAO,gBACR,CAAC,OAAQ,YACT,CAAC,UAAW,WACZ,CAAC,OAAQ,SACT,CAAC,MAAO,oBACR,CAAC,OAAQ,qBACT,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,QAAS,gBACV,CAAC,MAAO,oBACR,CAAC,wBAAyB,UAC1B,CAAC,MAAO,OACR,CAAC,MAAO,WACR,CAAC,MAAO,OACR,CAAC,OAAQ,SACT,OAAO,IAEL,GAAY,EACZ,GAAa,EAEb,GAAsB,SAAU,GAClC,OAAS,GAAI,EAAG,EAAI,GAAW,OAAQ,KACrC,GAAI,GAAc,GAAW,GAAG,GAAY,OAC5C,GAAI,IAAgB,GAAc,GAAM,GACtC,MAAO,GAGX,MAAO,OAGL,GAAkB,SAAU,GAE9B,OADI,GAAa,EAAW,cACnB,EAAI,EAAG,EAAI,GAAY,OAAQ,KACtC,GAAI,GAAa,GAAY,GAC7B,GAAI,EAAW,QAAQ,EAAW,KAAc,GAC9C,MAAO,GAAW,IAGtB,MAAO,OAGL,GAAgB,SAAU,EAAY,GACxC,OAAS,GAAI,EAAG,EAAI,GAAe,OAAQ,KACzC,GAAI,GAAgB,GAAe,GAC/B,EAAa,EAAc,IAC/B,GAAI,EAAW,QAAQ,GAAc,IACnC,GAAI,GAAY,EAAW,QACzB,EACA,EAAc,KAEZ,EAAU,EAAM,GACpB,GAAI,IAAY,KACd,MAAO,IAIb,MAAO,OAGT,GAAO,QAAU,SAAU,EAAY,GACrC,EAAU,GAAW,GACrB,GAAI,GAAU,EAAQ,UAAY,OAAY,GAAO,CAAC,CAAC,EAAQ,QAC/D,WAAsB,GACpB,MAAO,GAAU,GAAY,GAAS,EAExC,GAAI,GACF,MAAO,IAAe,UACtB,EAAW,OAAO,SAAW,EAE/B,GAAI,CAAC,EACH,KAAM,OAAM,gDAGd,GADA,EAAa,EAAW,OACpB,GAAM,GACR,MAAO,GAAY,GAErB,GAAI,GAAS,EAAW,QAAQ,MAAO,IAAI,OAC3C,GAAI,GAAM,GACR,MAAO,GAAY,GAErB,GAAI,GAAc,GAAoB,GAkBtC,MAjBI,KAAgB,MAGpB,GAAc,GAAc,EAAY,SAAU,GAChD,MAAI,IAAM,GACD,EAEF,GAAoB,KAEzB,IAAgB,OAGpB,GAAc,GAAgB,GAC1B,IAAgB,OAGpB,GAAc,GAAc,EAAY,IACpC,IAAgB,MACX,EAAY,GAEd,MAGT,YAAsB,GACpB,MAAI,CACF,UAAW,WAAY,WACvB,UAAW,WAAY,WACvB,YACA,QAAQ,KAAW,GACZ,EAAQ,QACN,CACT,WAAY,WAAY,WACxB,YAAa,YAAa,YAC1B,YAAa,aACb,QAAQ,KAAW,GACZ,EAAM,QAAQ,MAAO,aACnB,CAAC,UAAW,WAAY,YAAY,QAAQ,KAAW,GACzD,EAAQ,YAER,KCzWX,sBAAI,IAAgB,KAChB,GAAkB,KAElB,GACF,yHAME,GAAkB,2BAEtB,YAAoB,EAAQ,GAC1B,MAAO,GAAO,MAAM,EAAG,EAAO,UAAY,EAG5C,YAAwB,GACtB,GAAI,EAAI,eAAe,YACrB,GAAI,GAAU,EAAI,QAClB,MACE,IAAW,aAAc,IACzB,GAAW,cAAe,OAG5B,OACE,IAAe,EAAI,OACnB,GAAe,EAAI,OAKzB,GAAO,QAAU,SAAS,GACxB,GAAI,GAEJ,IACE,EAAM,GAAM,SACL,GACP,GAAI,GACJ,GACE,IAAa,cACb,IAAa,aAEb,MAAO,CACL,oBAAqB,GACrB,oBAAqB,GACrB,WAAY,IAET,GAAI,EAAQ,GAAgB,KAAK,GACtC,MAAO,CACL,oBAAqB,GACrB,oBAAqB,GACrB,OAAQ,EAAM,IAGhB,GAAI,GAAS,CACX,oBAAqB,GACrB,oBAAqB,GACrB,SAAU,CAAC,KAEb,GAAI,EAAS,OAAO,SAAW,GAC7B,GAAI,GAAY,GAAQ,GACxB,AAAI,GACF,EAAO,SAAS,KACd,+CAAiD,EAAY,KAInE,MAAO,GAIX,MAAI,IAAe,GACV,CACL,oBAAqB,GACrB,oBAAqB,GACrB,KAAM,GACN,SAAU,CAAC,KAGN,CACL,oBAAqB,GACrB,oBAAqB,GACrB,KAAM,OClFZ,gCAEA,GAAI,IAAW,GAAO,QAAU,CAC9B,OAAQ,CAGN,UAAa,CAAE,MAAO,OAAQ,UAAW,YAAa,MAAO,SAC7D,OAAU,aACV,SAAY,OACZ,aAAgB,gFAChB,aAAgB,2CAChB,YAAe,0DACf,gBAAmB,kEAErB,UAAW,CACT,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,gBACV,SAAY,MACZ,gBAAmB,6DAErB,OAAQ,CACN,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,aACV,SAAY,OACZ,aAAgB,2CAChB,cAAiB,oEACjB,gBAAmB,+EACnB,UAAa,6HAEf,KAAM,CACJ,UAAa,CAAE,MAAO,UAAW,YAAa,MAAO,SACrD,OAAU,kBACV,UAAa,iDACb,aAAgB,8EAChB,aAAgB,6BAChB,YAAe,4CACf,YAAe,2CACf,eAAkB,oDAClB,eAAkB,0CAClB,mBAAsB,iDACtB,aAAgB,0CAChB,cAAiB,kDACjB,iBAAoB,gCACpB,aAAgB,yBAChB,gBAAmB,iEACnB,WAAc,SAAU,GACtB,MAAO,QAAU,GAAmB,MAKtC,GAAkB,CACpB,YAAe,iDACf,eAAkB,2DAClB,eAAkB,sDAClB,mBAAsB,8EACtB,aAAgB,6DAChB,cAAiB,gEACjB,aAAgB,4DAChB,iBAAoB,uCACpB,aAAgB,gCAChB,UAAa,yCACb,WAAc,IAGhB,OAAO,KAAK,IAAU,QAAQ,SAAU,GACtC,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAC7C,AAAI,GAAS,GAAM,IACnB,IAAS,GAAM,GAAO,GAAgB,MAExC,GAAS,GAAM,aAAe,OAAO,KACnC,GAAS,GAAM,UAAU,IAAI,SAAU,GACrC,MAAO,GAAS,QAAQ,sBAAuB,UAC9C,KAAK,KAAO,SAGnB,YAA6B,GAC3B,MAAO,GAAS,cAAc,QAAQ,gBAAiB,IAAI,QAAQ,OAAQ,QC7E7E,gCACA,GAAI,IAAmB,KAMnB,GAAS,OAAO,QAAU,SAAkB,EAAQ,GAEtD,GAAI,IAAW,MAAQ,MAAO,IAAW,SAAU,MAAO,GAI1D,OAFI,GAAO,OAAO,KAAK,GACnB,EAAI,EAAK,OACN,KACL,EAAO,EAAK,IAAM,EAAO,EAAK,IAEhC,MAAO,IAGT,GAAO,QAAU,GACjB,YAAkB,EAAM,EAAM,EAAM,EAAS,EAAY,EAAuB,GAC9E,GAAI,GAAc,KAClB,EAAY,KAAO,EACnB,OAAO,KAAK,GAAS,IAAO,QAAQ,SAAU,GAC5C,EAAY,GAAO,GAAS,GAAM,KAEpC,EAAY,KAAO,EACnB,EAAY,KAAO,EACnB,EAAY,QAAU,EACtB,EAAY,WAAa,EACzB,EAAY,QAAU,EACtB,EAAY,KAAO,GAAQ,GAG7B,GAAQ,UAAU,KAAO,WACvB,MAAO,MAAK,WAAa,IAAM,KAAK,WAAa,IAGnD,GAAQ,UAAU,MAAQ,SAAU,EAAU,GAC5C,GAAI,EAAC,GACL,GAAI,GAAO,GAAO,GAAI,GACtB,EAAK,KAAO,EAAK,KAAO,EAAK,KAAK,QAAQ,SAAU,IAAM,GAC1D,EAAO,GAAO,GAAO,GAAI,KAAK,MAAO,GACrC,GAAI,GAAO,KACX,OAAO,KAAK,MAAM,QAAQ,SAAU,GAClC,AAAI,EAAK,IAAQ,MAAQ,EAAK,IAAQ,MAAM,GAAK,GAAO,EAAK,MAE/D,GAAI,GAAU,EAAK,KACf,EAAgB,EAAK,WACrB,EAAc,EAAK,SACnB,EAAU,EAAK,KACf,EAAa,EAAK,QACtB,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,GAAI,GAAQ,EAAK,GACjB,AAAK,KAAQ,QAAU,IAAQ,YAAc,MAAO,IAAU,SAC5D,EAAK,GAAO,EAAM,MAAM,KAAK,IAAI,SAAU,GACzC,MAAO,oBAAmB,KACzB,KAAK,KAER,EAAK,GAAO,mBAAmB,KAGnC,EAAK,SAAW,EAAU,EAAU,IAAM,GAC1C,EAAK,aAAe,EAAc,IAAM,KAAK,WAAW,GAAe,GACvE,EAAK,SAAW,EAAK,SAAW,EAAK,SAAW,GAChD,EAAK,SAAW,EAAU,IAAM,KAAK,WAAW,GAAW,GAC3D,EAAK,SAAW,EAAK,KAAO,IAAM,EAAK,KAAO,GAC9C,EAAK,YAAc,EAAW,MAAM,KAAK,IAAI,oBAAoB,KAAK,KACtE,AAAI,EAAK,aACP,GAAK,eAAiB,GACtB,EAAK,oBAAsB,GAC3B,EAAK,eAAiB,GACtB,EAAK,WAAa,IAElB,GAAK,eAAiB,EAAgB,IAAM,EAAgB,GAC5D,EAAK,oBAAsB,EAAK,WAC5B,IAAM,EAAK,SAAW,IAAM,EAAK,WACjC,GACJ,EAAK,eAAiB,EAAK,WAAa,IAAM,EAAK,WAAa,GAChE,EAAK,WAAa,EAAK,YAAc,UAEvC,GAAI,GAAM,EAIV,MAHA,QAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,EAAM,EAAI,QAAQ,GAAI,QAAO,MAAQ,EAAM,MAAO,KAAM,EAAK,MAE3D,EAAK,UACA,EAAI,QAAQ,UAAW,IAEvB,IAIX,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,OAAS,SAAU,GACnC,MAAO,MAAK,MAAM,KAAK,eAAgB,IAGzC,GAAQ,UAAU,OAAS,SAAU,EAAG,EAAG,GACzC,MAAI,OAAO,IAAM,SACX,OAAO,IAAM,UACf,GAAO,EACP,EAAI,MAEC,KAAK,MAAM,KAAK,mBAAoB,GAAO,CAChD,SAAU,EACV,KAAM,GACL,KAEI,KAAK,MAAM,KAAK,eAAgB,IAI3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,MAAQ,SAAU,GAClC,MAAO,MAAK,MAAM,KAAK,cAAe,IAGxC,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAO,MAAK,MAAM,KAAK,iBAAkB,IAG3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,QAAU,SAAU,GACpC,GAAI,GAAO,GAAO,GAAI,EAAO,CAAE,aAAc,KAC7C,MAAO,MAAK,MAAM,KAAK,gBAAiB,IAG1C,GAAQ,UAAU,KAAO,SAAU,EAAG,GACpC,MAAO,MAAK,MAAM,KAAK,aAAc,GAAO,CAAE,KAAM,GAAK,KAG3D,GAAQ,UAAU,yBAA2B,WAC3C,MAAO,MAAK,SAGd,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAI,MAAK,SAAW,MAAO,MAAK,KAAK,UAAa,WAAmB,KAAK,KAAK,SAAS,GACjF,KAAK,OAAO,MC1JrB,gCACA,GAAI,IAAc,eACd,GAAmB,KACnB,GAAU,GAAO,QAAkB,KAEnC,GAA8B,CAChC,WAAY,SACZ,aAAc,QACd,OAAQ,SACR,OAAQ,OAGV,YAAmC,GACjC,MAAO,IAA4B,IAAa,EAAS,MAAM,EAAG,IAGpE,GAAI,IAAgB,CAClB,OAAQ,GACR,SAAU,GACV,aAAc,GACd,QAAS,GACT,YAAa,IAGX,GAAQ,GAEZ,GAAO,QAAQ,QAAU,SAAU,EAAQ,GACzC,GAAI,MAAO,IAAW,UACtB,GAAI,GAAM,EAAS,KAAK,UAAU,GAAQ,IAE1C,MAAM,KAAO,KACX,IAAM,GAAO,GAAQ,EAAQ,IAGxB,GAAM,KAGf,YAAkB,EAAQ,GACxB,GAAI,KAAU,MAAQ,IAAW,KACjC,GAAI,GAAM,GACR,GAAkB,GAAU,UAAY,EAAS,GAE/C,EAAS,GAAY,GACrB,EAAgB,EAAI,MAAM,GAAI,QAAO,uEACrC,EAAU,OAAO,KAAK,IAAU,IAAI,SAAU,GAChD,IACE,GAAI,GAAc,GAAS,GACvB,EAAO,KACX,AAAI,EAAO,MAAQ,GAAc,EAAO,WACtC,GAAO,EAAO,MAEhB,GAAI,GAAa,EAAO,KAAO,mBAAmB,EAAO,KAAK,OAAO,IAAM,KACvE,EAAO,KACP,EAAU,KACV,EAAwB,KAC5B,GAAI,GAAiB,EAAc,KAAO,EACxC,EAAO,EAAc,IAAM,mBAAmB,EAAc,IAC5D,EAAU,mBAAmB,EAAc,IAC3C,EAAwB,gBAIxB,GAFI,EAAO,MAAQ,EAAO,OAAS,EAAY,QAAU,EAAO,KAAK,QAAQ,UAAW,MAAQ,EAAY,QACxG,CAAC,EAAY,aAAa,KAAK,EAAO,WACtC,CAAC,EAAO,KAAM,OAClB,GAAI,GAAY,EAAY,UACxB,EAAU,EAAO,KAAK,MAAM,GAChC,GAAI,CAAC,EAAS,OAEd,AAAI,EAAQ,KAAO,MAAQ,EAAQ,KAAO,QACxC,GAAO,mBAAmB,EAAQ,GAAG,QAAQ,KAAM,MAErD,EAAU,mBAAmB,EAAQ,IACrC,EAAwB,GAAyB,EAAO,UAE1D,MAAO,IAAI,IAAQ,EAAa,EAAM,EAAM,EAAS,EAAY,EAAuB,SACjF,GAEP,GAAI,cAAc,WACX,KAAM,MAEd,OAAO,SAAU,GAAe,MAAO,KAC1C,GAAI,EAAQ,SAAW,EACvB,MAAO,GAAQ,IAGjB,YAA4B,GAS1B,MAAO,+CAA+C,KAAK,GAG7D,YAA+B,GAE7B,GAAI,GAAS,GAAI,MAAM,GACvB,MAAI,GAAO,WAAa,SAAW,EAAO,MAAQ,CAAC,EAAO,KACjD,EAAO,SAAW,IAAM,EAAO,KAE/B,EAIX,YAAsB,GACpB,GAAI,GAAU,EAAO,MAAM,iEAC3B,GAAI,CAAC,GACH,GAAI,GAAS,GAAI,MAAM,GAGvB,GAAI,EAAO,MAAQ,MAAO,IAAI,KAAQ,YAUpC,GAAI,GAAY,EAAO,MAAM,gBAE7B,GAAI,GACF,GAAI,GAAS,GAAI,IAAI,IAAI,EAAU,IACnC,EAAO,KAAO,EAAO,UAAY,GAC7B,EAAO,UAAU,GAAO,MAAQ,IAAM,EAAO,WAGrD,MAAO,GAET,MAAO,CACL,SAAU,WACV,QAAS,GACT,KAAM,EAAQ,GACd,KAAM,EAAQ,GACd,KAAM,KACN,SAAU,EAAQ,GAClB,KAAM,EAAQ,GACd,OAAQ,KACR,MAAO,KACP,SAAU,IAAM,EAAQ,GACxB,KAAM,IAAM,EAAQ,GACpB,KAAM,aAAe,EAAQ,GAAK,IAAM,EAAQ,GAC1C,IAAM,EAAQ,GAAM,GAAQ,IAAM,QCjJ5C,sBAAO,QAAU,WAEb,GAAI,GAAwB,MAAM,kBAClC,MAAM,kBAAoB,SAAU,EAAG,GAAS,MAAO,IACvD,GAAI,GAAS,GAAI,SAAS,MAC1B,aAAM,kBAAoB,EACnB,EAAM,GAAG,iBCNpB,gCAEA,GAAI,IAAY,QAAQ,WAAa,QAIjC,GACA,qEAGA,GACA,gEAEA,GAAQ,GAGZ,YAAwB,GAEtB,GAAI,GAAS,GAAc,KAAK,GAC5B,EAAU,GAAO,IAAM,IAAO,GAAO,IAAM,IAC3C,EAAO,EAAO,IAAM,GAEpB,EAAU,GAAY,KAAK,GAC3B,EAAM,EAAQ,GACd,EAAW,EAAQ,GACnB,EAAM,EAAQ,GAClB,MAAO,CAAC,EAAQ,EAAK,EAAU,GAGjC,GAAM,MAAQ,SAAS,GACrB,GAAI,MAAO,IAAe,SACxB,KAAM,IAAI,WACN,gDAAkD,MAAO,IAG/D,GAAI,GAAW,GAAe,GAC9B,GAAI,CAAC,GAAY,EAAS,SAAW,EACnC,KAAM,IAAI,WAAU,iBAAmB,EAAa,KAEtD,MAAO,CACL,KAAM,EAAS,GACf,IAAK,EAAS,GAAK,EAAS,GAAG,MAAM,EAAG,IACxC,KAAM,EAAS,GACf,IAAK,EAAS,GACd,KAAM,EAAS,GAAG,MAAM,EAAG,EAAS,GAAG,OAAS,EAAS,GAAG,UAQhE,GAAI,IACA,gEACA,GAAQ,GAGZ,YAAwB,GACtB,MAAO,IAAY,KAAK,GAAU,MAAM,GAI1C,GAAM,MAAQ,SAAS,GACrB,GAAI,MAAO,IAAe,SACxB,KAAM,IAAI,WACN,gDAAkD,MAAO,IAG/D,GAAI,GAAW,GAAe,GAC9B,GAAI,CAAC,GAAY,EAAS,SAAW,EACnC,KAAM,IAAI,WAAU,iBAAmB,EAAa,KAEtD,SAAS,GAAK,EAAS,IAAM,GAC7B,EAAS,GAAK,EAAS,IAAM,GAC7B,EAAS,GAAK,EAAS,IAAM,GAEtB,CACL,KAAM,EAAS,GACf,IAAK,EAAS,GAAK,EAAS,GAAG,MAAM,EAAG,IACxC,KAAM,EAAS,GACf,IAAK,EAAS,GACd,KAAM,EAAS,GAAG,MAAM,EAAG,EAAS,GAAG,OAAS,EAAS,GAAG,UAKhE,AAAI,GACF,GAAO,QAAU,GAAM,MAEvB,GAAO,QAAU,GAAM,MAEzB,GAAO,QAAQ,MAAQ,GAAM,MAC7B,GAAO,QAAQ,MAAQ,GAAM,QC5F7B,sBAAI,IAAe,gBACf,GAAQ,GAAK,OAAiB,KAE9B,GAAqB,SAA4B,EAAe,GAChE,GAAI,GAAS,IACb,AAAK,eAAgB,KAAK,GACtB,EAAS,GACD,QAAS,KAAK,IACtB,GAAS,QAKb,OAFI,GAAQ,CAAC,GACT,EAAS,GAAM,GACZ,EAAO,MAAQ,EAAM,EAAM,OAAS,IACvC,EAAM,KAAK,EAAO,KAClB,EAAS,GAAM,EAAO,KAG1B,MAAO,GAAM,OAAO,SAAU,EAAM,GAChC,MAAO,GAAK,OAAO,EAAQ,IAAI,SAAU,GACrC,MAAO,IAAK,QAAQ,EAAQ,EAAO,OAExC,KAGP,GAAO,QAAU,SAA0B,EAAO,EAAM,GACpD,GAAI,GAAU,GAAQ,EAAK,gBACrB,GAAG,OAAO,EAAK,iBACf,CAAC,gBAEP,GAAI,GAAQ,MAAO,GAAK,OAAU,WAC9B,MAAO,GAAK,MACR,EACA,EACA,WAAc,MAAO,IAAmB,EAAO,IAC/C,GAIR,GAAI,GAAO,GAAmB,EAAO,GACrC,MAAO,IAAQ,EAAK,MAAQ,EAAK,OAAO,EAAK,OAAS,KCxC1D,sBAAO,QAAU,SAAU,EAAG,GAQ1B,MAAO,IAAQ,MCRnB,gCAIA,GAAI,IAAgB,kDAChB,GAAQ,MAAM,UAAU,MACxB,GAAQ,OAAO,UAAU,SACzB,GAAW,oBAEf,GAAO,QAAU,SAAc,GAC3B,GAAI,GAAS,KACb,GAAI,MAAO,IAAW,YAAc,GAAM,KAAK,KAAY,GACvD,KAAM,IAAI,WAAU,GAAgB,GAyBxC,OAvBI,GAAO,GAAM,KAAK,UAAW,GAE7B,EACA,EAAS,WACT,GAAI,eAAgB,IAChB,GAAI,GAAS,EAAO,MAChB,KACA,EAAK,OAAO,GAAM,KAAK,aAE3B,MAAI,QAAO,KAAY,EACZ,EAEJ,SAEP,OAAO,GAAO,MACV,EACA,EAAK,OAAO,GAAM,KAAK,cAK/B,EAAc,KAAK,IAAI,EAAG,EAAO,OAAS,EAAK,QAC/C,EAAY,GACP,EAAI,EAAG,EAAI,EAAa,IAC7B,EAAU,KAAK,IAAM,GAKzB,GAFA,EAAQ,SAAS,SAAU,oBAAsB,EAAU,KAAK,KAAO,6CAA6C,GAEhH,EAAO,WACP,GAAI,GAAQ,aACZ,EAAM,UAAY,EAAO,UACzB,EAAM,UAAY,GAAI,GACtB,EAAM,UAAY,KAGtB,MAAO,MClDX,gCAEA,GAAI,IAAyB,KAE7B,GAAO,QAAU,SAAS,UAAU,MAAQ,KCJ5C,gCAEA,GAAI,IAAe,KAEnB,GAAO,QAAU,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,w2DCJ3D,gCAEA,GAAI,IAAc,KAElB,YAA2B,EAAS,GAMnC,OALI,GAAY,EAAQ,MAAM,KAC1B,EAAQ,EAAU,MAAM,KACxB,EAAK,EAAM,OAAS,EAAI,EAAM,GAAK,IACnC,EAAgB,GAAM,OAAS,EAAI,EAAM,GAAK,EAAM,IAAI,MAAM,KAEzD,EAAI,EAAG,EAAI,EAAG,EAAE,GACxB,GAAI,GAAM,SAAS,EAAU,IAAM,EAAG,IAClC,EAAM,SAAS,EAAa,IAAM,EAAG,IACzC,GAAI,IAAQ,EAGZ,MAAI,KAAO,IACH,EAAM,EAEV,IAAO,KACH,GAAO,EAER,GAER,MAAO,KAAO,KAGf,YAAsB,EAAS,GAC9B,GAAI,GAAa,EAAM,MAAM,UAC7B,GAAI,EAAW,SAAW,EACzB,MAAO,GAER,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACxC,GAAI,CAAC,GAAkB,EAAS,EAAW,IAC1C,MAAO,GAGT,MAAO,GAGR,YAAyB,EAAa,GACrC,GAAI,MAAO,IAAmB,UAC7B,MAAO,GAGR,GAAI,GAAU,MAAO,IAAgB,YAClC,QAAQ,UAAY,QAAQ,SAAS,MAAQ,QAAQ,SAAS,KAC9D,EAEH,GAAI,MAAO,IAAY,SACtB,KAAM,IAAI,WAAU,MAAO,IAAgB,YAAc,2CAA6C,iDAGvG,GAAI,GAAkB,MAAO,IAAmB,UAC/C,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,EAAE,EAC5C,GAAI,GAAa,EAAS,EAAe,IACxC,MAAO,GAGT,MAAO,GAER,MAAO,IAAa,EAAS,GAG9B,GAAI,IAAe,KAEnB,GAAO,QAAU,SAAgB,EAAG,GACnC,MAAO,IAAI,GAAM,IAAM,GAAgB,EAAa,GAAK,OCnE1D,sBAAI,IAAa,cACb,GAAe,gBACf,GAAiB,KACjB,GAA2B,KAC3B,GAA2B,KAC3B,GAAiB,KAEjB,GAAa,GAAG,UAAY,MAAO,IAAG,SAAS,QAAW,WAAa,GAAG,SAAS,OAAS,GAAG,SAE/F,GAAgB,SAAgB,EAAM,GACtC,GAAG,KAAK,EAAM,SAAU,EAAK,GACzB,MAAK,GAGD,EAAI,OAAS,UAAY,EAAI,OAAS,UAAkB,EAAG,KAAM,IAC9D,EAAG,GAHC,EAAG,KAAM,EAAK,UAAY,EAAK,aAO9C,GAAe,SAAqB,EAAK,GACzC,GAAG,KAAK,EAAK,SAAU,EAAK,GACxB,MAAK,GAGD,EAAI,OAAS,UAAY,EAAI,OAAS,UAAkB,EAAG,KAAM,IAC9D,EAAG,GAHC,EAAG,KAAM,EAAK,kBAO7B,GAAkB,SAAkB,EAAG,GACvC,GAAW,EAAG,SAAU,EAAa,GACjC,AAAI,GAAe,EAAY,OAAS,SAAU,EAAG,GAChD,EAAG,KAAM,EAAc,EAAI,MAIpC,GAAgB,SAAuB,EAAU,EAAG,EAAM,GAC1D,AAAI,GAAQ,EAAK,mBAAqB,GAClC,EAAS,EAAG,GAEZ,EAAG,KAAM,IAIb,GAAuB,SAA8B,EAAG,EAAO,GAE/D,OADI,GAAO,GAAiB,EAAO,EAAM,GAChC,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,EAAK,GAAK,GAAK,KAAK,EAAK,GAAI,GAEjC,MAAO,IAGX,GAAO,QAAU,SAAiB,EAAG,EAAS,GAC1C,GAAI,GAAK,EACL,EAAO,EAKX,GAJI,MAAO,IAAY,YACnB,GAAK,EACL,EAAO,IAEP,MAAO,IAAM,UACb,GAAI,GAAM,GAAI,WAAU,0BACxB,MAAO,SAAQ,SAAS,WACpB,EAAG,KAIX,EAAO,GAAiB,EAAG,GAE3B,GAAI,GAAS,EAAK,QAAU,GACxB,EAAc,EAAK,aAAe,GAClC,EAAW,EAAK,UAAY,GAAG,SAC/B,EAAW,EAAK,UAAY,GAC5B,EAAkB,EAAK,gBAEvB,EAAa,EAAK,YAAc,CAAC,OACjC,EAAqB,EAAK,qBAAuB,GACjD,EAAU,EAAK,SAAW,GAAK,QAAQ,MACvC,EAAS,EAAK,UAAY,EAE9B,EAAK,MAAQ,EAAK,OAAS,GAG3B,GAAI,GAAgB,GAAK,QAAQ,GAEjC,GACI,EACA,EACA,EACA,SAAU,EAAK,GACX,AAAI,EAAK,EAAG,GACP,EAAK,KAIlB,GAAI,GACJ,WAAc,GACV,GAAK,0CAA2C,KAAK,GACjD,EAAM,GAAK,QAAQ,EAAS,GACxB,KAAM,KAAO,IAAM,MAAQ,EAAE,MAAM,MAAQ,MAAK,IAAO,KAC3D,AAAK,MAAO,KAAK,IAAM,IAAQ,EAC3B,EAAgB,EAAK,EAAK,QAAS,GAChC,EAAW,EAAK,EAAK,QAAS,QAClC,GAAI,GAAsB,GAAO,GACpC,MAAO,GAAG,KAAM,GACb,EAAgB,EAAG,EAAS,SAAU,EAAK,EAAG,GACjD,GAAI,EAAK,EAAG,QACP,GAAI,EACL,MAAO,IAAc,EAAU,EAAG,EAAM,SAAU,GAAK,GACnD,AAAI,GACA,EAAG,IAEH,EAAG,KAAM,EAAO,KAIxB,GAAI,GAAc,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KAC/E,EAAY,KAAO,mBACnB,EAAG,OAKf,WAAgB,EAAK,EAAG,GACpB,AAAI,EAAK,EAAG,GACP,AAAI,EAAG,EAAG,KAAM,EAAG,GACnB,EAAgB,EAAK,SAAU,EAAK,EAAG,IACxC,GAAI,EAAK,EAAG,WACH,EACL,GAAc,EAAU,EAAG,EAAM,SAAU,GAAK,IAC5C,AAAI,GACA,EAAG,IAEH,EAAG,KAAM,GAAO,WAIxB,GAAI,GAAc,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KAC/E,EAAY,KAAO,mBACnB,EAAG,MAKf,WAAoB,EAAG,EAAY,GAC/B,GAAI,GAAoB,EACpB,EAAK,EACT,AAAI,MAAO,IAAsB,YAC7B,GAAK,EACL,EAAoB,QAGxB,GAAI,IAAO,CAAC,IAAI,OAAO,GACvB,EAAK,GAAM,EAAG,GAEd,WAAc,GAAM,GAAG,IACnB,GAAI,GAAK,SAAW,EAAG,MAAO,GAAG,KAAM,OAAW,IAClD,GAAI,IAAO,GAAI,GAAK,GAEhB,GAAM,GACV,AAAI,GAAK,GAAM,KAAM,IAChB,EAAQ,GAAK,QAAQ,IAAO,IAEjC,YAAe,EAAK,GAAM,IAEtB,GADA,GAAM,GACF,EAAK,MAAO,GAAG,GACnB,GAAI,IAAO,IAAO,EAAK,YACnB,GAAI,IAAQ,GAAK,SAAS,GAAK,IAC3B,GAAM,GAAM,MAAM,EAAG,GAAM,OAAS,GAAK,GAAG,QAC5C,GAAI,EAAK,WAAW,GAAK,GAAG,IAChC,GAAI,GAAG,MAAO,GACV,CAAC,IAAI,OAAO,EAAW,SACvB,GAAK,QAAQ,GAAK,IAClB,IAGR,EAAO,GAAM,IAEjB,YAAc,EAAK,IACf,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAI,MAAO,GAAG,KAAM,GAAM,IAC9B,EAAK,GAAK,MAAM,GAAI,GAAG,MAKnC,WAAiB,EAAK,GAKlB,GAJI,IAAQ,IAAM,IAAQ,KACtB,QAAQ,WAAa,SAAY,cAAe,KAAK,IAGpD,2BAA4B,KAAK,GAAM,MAAO,GAAG,MAEtD,GAAc,EAAU,EAAK,EAAM,SAAU,EAAW,GACpD,GAAI,EAAW,MAAO,GAAQ,GAAK,QAAQ,GAAM,GACjD,GAAI,GAAU,GAAK,KAAK,EAAQ,gBAChC,EAAO,EAAS,SAAU,GAAK,GAE3B,GAAI,CAAC,EAAI,MAAO,GAAQ,GAAK,QAAQ,GAAM,GAE3C,EAAS,EAAS,SAAU,GAAK,IAC7B,AAAI,IAAK,EAAG,IACZ,IAAM,GAAI,IAAM,KAAK,MAAM,UAAgB,KAE3C,AAAI,IAAO,EAAK,eACZ,IAAM,EAAK,cAAc,GAAK,IAElC,EAAG,KAAM,GAAK,SAM9B,WAAyB,EAAG,EAAwB,GAChD,GAAI,GAAK,EACL,EAAO,EACX,AAAI,MAAO,IAAS,YAChB,GAAK,EACL,EAAO,EAAK,SAGhB,GAAc,EAAU,EAAG,EAAM,SAAU,GAAW,GAClD,GAAI,GAAW,MAAO,GAAG,IACzB,GAAI,IAAU,GAAK,KAAK,EAAQ,gBAChC,EAAO,GAAS,SAAU,GAAK,IAC3B,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,CAAC,GAAI,MAAO,GAAW,GAAK,KAAK,EAAG,SAAU,EAAM,GAExD,EAAS,GAAS,SAAU,GAAK,IAC7B,GAAI,GAAK,MAAO,GAAG,IACnB,IACI,GAAI,IAAM,KAAK,MAAM,UAChB,IAMT,GAJI,IAAO,EAAK,eACZ,IAAM,EAAK,cAAc,GAAK,KAG9B,IAAO,GAAI,MACX,GAAI,MAAO,IAAI,MAAS,UACpB,GAAI,IAAY,GAAI,WAAU,iBAAc,GAAI,KAAO,kCACvD,UAAU,KAAO,uBACV,EAAG,IAEd,AAAI,IAAI,OAAS,KAAO,GAAI,OAAS,OACjC,IAAI,KAAO,SAEf,EAAW,GAAK,QAAQ,EAAG,GAAI,MAAO,GAAK,SAAU,EAAK,GAAG,IACzD,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,GAAI,CAAC,GAAK,MAAO,GAAW,GAAK,KAAK,EAAG,SAAU,GAAK,GAExD,GAAI,IAAM,GAAK,QAAQ,EAAG,GAAI,MAC9B,EAAgB,GAAK,GAAK,SAAU,GAAK,GAAG,IACxC,GAAI,GAAK,MAAO,GAAG,IACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAW,GAAK,KAAK,EAAG,SAAU,GAAK,OAG/C,OAGJ,EAAW,GAAK,KAAK,EAAG,UAAW,GAAK,SAMxD,WAAqB,EAAI,GACrB,GAAI,EAAK,SAAW,EAAG,MAAO,GAAG,KAAM,QACvC,GAAI,GAAM,EAAK,GAEf,EAAY,GAAK,QAAQ,GAAM,GAE/B,WAAe,EAAK,IAChB,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,CAAC,GAAO,MAAO,GAAY,EAAI,EAAK,MAAM,IAC9C,EAAW,EAAK,EAAK,QAAS,GAGlC,WAAgB,EAAK,GAAG,IACpB,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAgB,EAAK,EAAK,QAAS,IAGvC,YAAe,EAAK,GAAG,IACnB,GAAI,EAAK,MAAO,GAAG,GACnB,GAAI,GAAG,MAAO,GAAG,KAAM,GAAG,IAC1B,EAAY,EAAI,EAAK,MAAM,KAGnC,WAAyB,EAAG,EAAO,GAC/B,GAAI,GAAQ,WAAc,MAAO,IAAqB,EAAG,EAAO,IAChE,EACI,EACA,EAAkB,EAAgB,EAAG,EAAO,EAAO,GAAQ,0xDCvSvE,sBAAI,IAAW,QAAQ,UAAY,QAAQ,SAAS,MAAQ,QAAQ,SAAS,KAAK,MAAM,MAAS,GAEjG,YAA2B,GAKvB,OAJI,GAAQ,EAAU,MAAM,KACxB,EAAK,EAAM,OAAS,EAAI,EAAM,GAAK,IACnC,EAAgB,GAAM,OAAS,EAAI,EAAM,GAAK,EAAM,IAAI,MAAM,KAEzD,EAAI,EAAG,EAAI,EAAG,EAAE,GACrB,GAAI,GAAM,SAAS,GAAQ,IAAM,EAAG,IAChC,EAAM,SAAS,EAAa,IAAM,EAAG,IACzC,GAAI,IAAQ,EAGZ,MAAI,KAAO,IACA,EAAM,EACN,IAAO,KACP,GAAO,EAEP,GAGf,MAAO,KAAO,KAGlB,YAAsB,GAClB,GAAI,GAAa,EAAM,MAAM,UAC7B,GAAI,EAAW,SAAW,EAAK,MAAO,GACtC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACrC,GAAI,CAAC,GAAkB,EAAW,IAAO,MAAO,GAEpD,MAAO,GAGX,YAAyB,GACrB,GAAI,MAAO,IAAmB,UAAa,MAAO,GAClD,GAAI,GAAkB,MAAO,IAAmB,UAC5C,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,EAAE,EACzC,GAAI,GAAa,EAAe,IAAO,MAAO,GAElD,MAAO,GAEX,MAAO,IAAa,GAGxB,GAAI,IAAe,KAEf,GAAO,GACX,OAAS,MAAO,IACZ,AAAI,OAAO,UAAU,eAAe,KAAK,GAAM,KAC3C,IAAK,IAAO,GAAgB,GAAK,MAGzC,GAAO,QAAU,KCpDjB,sBAAI,IAAuB,KAE3B,GAAO,QAAU,SAAgB,GAC7B,MAAO,IAAa,MCHxB,sBAAI,IAAiB,KACjB,GAAa,cACb,GAAe,gBACf,GAAiB,KACjB,GAA2B,KAC3B,GAA2B,KAE3B,GAAa,GAAG,cAAgB,MAAO,IAAG,aAAa,QAAW,WAAa,GAAG,aAAa,OAAS,GAAG,aAE3G,GAAgB,SAAgB,GAChC,IACI,GAAI,GAAO,GAAG,SAAS,SAClB,GACL,GAAI,GAAM,GAAE,OAAS,UAAY,EAAE,OAAS,WAAY,MAAO,GAC/D,KAAM,GAEV,MAAO,GAAK,UAAY,EAAK,UAG7B,GAAe,SAAqB,GACpC,IACI,GAAI,GAAO,GAAG,SAAS,SAClB,GACL,GAAI,GAAM,GAAE,OAAS,UAAY,EAAE,OAAS,WAAY,MAAO,GAC/D,KAAM,GAEV,MAAO,GAAK,eAGZ,GAAsB,SAAsB,GAC5C,IACI,MAAO,IAAW,SACb,GACL,GAAI,EAAY,OAAS,SACrB,KAAM,GAGd,MAAO,IAGP,GAAoB,SAA2B,EAAc,EAAG,GAChE,MAAI,IAAQ,EAAK,mBAAqB,GAC3B,EAAa,GAEjB,GAGP,GAAuB,SAA8B,EAAG,EAAO,GAE/D,OADI,GAAO,GAAiB,EAAO,EAAM,GAChC,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,EAAK,GAAK,GAAK,KAAK,EAAK,GAAI,GAEjC,MAAO,IAGX,GAAO,QAAU,SAAqB,EAAG,GACrC,GAAI,MAAO,IAAM,SACb,KAAM,IAAI,WAAU,0BAExB,GAAI,GAAO,GAAiB,EAAG,GAE3B,EAAS,EAAK,QAAU,GACxB,EAAe,EAAK,cAAgB,GAAG,aACvC,EAAc,EAAK,aAAe,GAClC,EAAe,EAAK,cAAgB,GACpC,EAAkB,EAAK,gBAEvB,EAAa,EAAK,YAAc,CAAC,OACjC,EAAqB,EAAK,qBAAuB,GACjD,EAAU,EAAK,SAAW,GAAK,QAAQ,MACvC,EAAS,EAAK,UAAY,EAE9B,EAAK,MAAQ,EAAK,OAAS,GAG3B,GAAI,GAAgB,GAAkB,EAAc,GAAK,QAAQ,GAAU,GAE3E,GAAK,0CAA2C,KAAK,IACjD,GAAI,GAAM,GAAK,QAAQ,EAAe,GACtC,AAAI,KAAM,KAAO,IAAM,MAAQ,EAAE,MAAM,MAAQ,MAAK,IAAO,KAC3D,GAAI,GAAI,EAAe,IAAQ,EAAoB,GACnD,GAAI,EAAG,MAAO,IAAkB,EAAc,EAAG,QAC9C,GAAI,GAAsB,GAAO,GACpC,MAAO,GAEP,GAAI,GAAI,EAAoB,EAAG,GAC/B,GAAI,EAAG,MAAO,IAAkB,EAAc,EAAG,GAGrD,GAAI,GAAM,GAAI,OAAM,uBAAyB,EAAI,WAAa,EAAS,KACvE,QAAI,KAAO,mBACL,EAEN,WAAwB,GACpB,GAAI,GAAM,EAAQ,GAAK,QAAQ,IAE/B,GAAI,GAAO,EAAI,KAAO,EAAI,KAAO,EAAK,YAClC,GAAI,GAAQ,GAAK,SAAS,EAAI,IAAK,GAC/B,EAAI,EAAK,WAAW,EAAI,IAAK,EAAG,GACpC,AAAI,GACA,GAAI,GAAK,QAAQ,EAAI,IAAK,IAIlC,GAAI,EAAO,GACP,MAAO,GAGX,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,KACnC,GAAI,GAAO,EAAI,EAAW,GAC1B,GAAI,EAAO,GACP,MAAO,IAKnB,WAAiB,GACb,GAAI,MAAQ,IAAM,IAAQ,MACtB,UAAQ,WAAa,SAAY,cAAe,KAAK,KAGpD,4BAA4B,KAAK,IAEtC,GAAI,GAAU,GAAK,KAAK,GAAkB,EAAc,EAAK,GAAO,gBAEpE,GAAI,CAAC,EAAO,GACR,MAAO,GAAQ,GAAK,QAAQ,IAGhC,GAAI,GAAO,EAAa,GAExB,IACI,GAAI,GAAM,KAAK,MAAM,SAChB,IAET,MAAI,IAAO,EAAK,eAEZ,GAAM,EAAK,cAAc,EAAkB,IAGxC,CAAE,IAAK,EAAK,IAAK,IAG5B,WAA6B,GACzB,GAAI,GAAU,GAAK,KAAK,GAAkB,EAAc,EAAG,GAAO,iBAClE,GAAI,EAAO,IACP,IACI,GAAI,GAAO,EAAa,EAAS,QAC7B,EAAM,KAAK,MAAM,SAChB,IAOT,GALI,GAAO,EAAK,eAEZ,GAAM,EAAK,cAAc,EAAkB,IAG3C,GAAO,EAAI,MACX,GAAI,MAAO,GAAI,MAAS,UACpB,GAAI,GAAY,GAAI,WAAU,iBAAc,EAAI,KAAO,kCACvD,QAAU,KAAO,uBACX,EAEV,AAAI,GAAI,OAAS,KAAO,EAAI,OAAS,OACjC,GAAI,KAAO,SAEf,IACI,GAAI,GAAI,EAAe,GAAK,QAAQ,EAAG,EAAI,OAC3C,GAAI,EAAG,MAAO,GACd,GAAI,GAAI,EAAoB,GAAK,QAAQ,EAAG,EAAI,OAChD,GAAI,EAAG,MAAO,SACT,MAIjB,MAAO,GAAe,GAAK,KAAK,EAAG,WAGvC,WAA6B,EAAG,GAI5B,OAHI,GAAQ,WAAc,MAAO,IAAqB,EAAG,EAAO,IAC5D,EAAO,EAAkB,EAAgB,EAAG,EAAO,EAAO,GAAQ,IAE7D,EAAI,EAAG,EAAI,EAAK,OAAQ,KAC7B,GAAI,GAAM,EAAK,GACf,GAAI,EAAY,GAAK,QAAQ,KACzB,GAAI,GAAI,EAAe,GACvB,GAAI,EAAG,MAAO,GACd,GAAI,GAAI,EAAoB,GAC5B,GAAI,EAAG,MAAO,SC3L9B,sBAAI,IAAgB,KACpB,GAAM,KAAe,KACrB,GAAM,OAAiB,KACvB,GAAM,KAAe,KAErB,GAAO,QAAU,KCLjB,sBAAO,QAAU,GAGjB,YAA6B,GAC3B,GAAI,EAAC,GACD,IAAM,gCAGV,EAAI,EAAE,OAAO,MAAM;AAAA,GACnB,OAAS,GAAI,EAAG,EAAE,IAAM,EAAE,GAAG,OAAO,MAAM,UAAW,IAAK,CAE1D,OADI,GAAI,EAAE,OACD,EAAI,EAAI,EAAG,EAAI,GAAK,EAAE,GAAG,OAAQ,IAAK,CAC/C,MAAO,GAAE,MAAM,EAAG,GAAG,KAAK,KAAK,0mBCZjC,sBAAI,IAAiB,KACjB,GAA0B,KAC1B,GAAwB,KACxB,GAAkB,AAAQ,KAAW,OACrC,GAAW,CAAC,eAAe,kBAAkB,wBAC7C,GAA6B,KAC7B,GAAc,eACd,GAAgB,KAEhB,GAAQ,GAAO,QAAU,CAE3B,KAAM,aAEN,mBAAoB,SAAS,GAK3B,GAJI,EAAK,cACP,MAAK,KAAK,gBACV,EAAK,WAAa,EAAK,aAAa,IAElC,CAAC,EAAK,WAAY,MAAO,MAAK,KAAK,qBACvC,AAAI,MAAO,GAAK,YAAe,UAC7B,GAAK,WAAa,CAChB,KAAM,MACN,IAAK,EAAK,aAGd,GAAI,GAAI,EAAK,WAAW,KAAO,GAC/B,GAAI,GACF,GAAI,GAAS,GAAc,QAAQ,GACnC,AAAI,GACF,GAAI,EAAK,WAAW,IAChB,EAAO,4BAA8B,WAAa,EAAO,QAAU,EAAO,YAIlF,AAAI,EAAE,MAAM,0CACV,KAAK,KAAK,eAAgB,IAI9B,SAAU,SAAS,GACjB,OAAO,KAAK,GAAM,UAAU,QAAQ,SAAU,GAC5C,AAAI,EAAK,eAAe,IACtB,KAAK,KAAK,OAAQ,EAAG,GAAM,SAAS,KAErC,OAGL,gBAAiB,SAAS,GACxB,GAAI,EAAC,EAAK,SACV,GAAI,MAAO,GAAK,SAAY,UAC1B,KAAK,KAAK,oBACV,MAAO,GAAK,QACZ,OAEF,OAAO,KAAK,EAAK,SAAS,QAAQ,SAAU,GAC1C,AAAI,MAAO,GAAK,QAAQ,IAAO,SAC7B,MAAK,KAAK,mBACV,MAAO,GAAK,QAAQ,IACX,GAAM,OAAO,IAAM,CAAC,EAAK,QAAQ,GAAM,OAAO,KACvD,KAAK,KAAK,OAAQ,EAAG,GAAM,OAAO,GAAI,YAEvC,QAGL,cAAe,SAAS,GACtB,GAAI,GAAQ,EAAK,MACjB,AAAI,GAAS,CAAC,MAAM,QAAQ,GAC1B,MAAK,KAAK,iBACV,MAAO,GAAK,OACH,EAAK,OACd,GAAK,MAAQ,EAAK,MAAM,OAAO,SAAS,GACtC,MAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,MAAK,KAAK,kBAAmB,GACtB,IAEA,IAER,QAIP,YAAa,SAAS,GACpB,GAAI,EAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAI,GAAI,GACJ,EACJ,AAAI,GAAQ,EAAK,KAAK,MAAM,oBAC1B,EAAE,EAAM,IAAM,EAAK,IAEnB,EAAE,EAAK,MAAQ,EAAK,IAEtB,EAAK,IAAM,IAIf,YAAa,SAAS,GACpB,AAAI,CAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAK,IAAM,CAAE,EAAK,OAGtB,2BAA4B,SAAS,GACnC,GAAI,GAAM,sBACN,EAAK,qBACT,AAAI,EAAK,IAAQ,CAAC,EAAK,IACrB,GAAK,GAAM,EAAK,GAChB,MAAO,GAAK,IAEd,AAAI,EAAK,IAAO,CAAC,MAAM,QAAQ,EAAK,IAClC,MAAK,KAAK,8BACV,MAAO,GAAK,IACH,EAAK,IACd,GAAK,GAAM,EAAK,GAAI,OAAO,SAAS,GAClC,MAAI,CAAC,GAAM,MAAO,IAAO,SACvB,MAAK,KAAK,4BAA6B,GAChC,IAEF,GAAK,cACR,GAAK,aAAe,IAEjB,EAAK,aAAa,eAAe,IACpC,MAAK,KAAK,gCAAiC,GAC3C,EAAK,aAAa,GAAM,KAEnB,KAER,QAIP,gBAAiB,SAAS,EAAM,GAC9B,GAAI,GAAQ,CAAC,EACb,GAAc,EAAM,KAAK,MACzB,GAAsB,EAAM,KAAK,MACjC,KAAK,2BAA2B,GAE/B,CAAC,eAAe,mBAAmB,QAAQ,SAAS,GACnD,GAAM,IAAQ,IACd,GAAI,CAAC,EAAK,IAAS,MAAO,GAAK,IAAU,UACvC,KAAK,KAAK,wBAAyB,GACnC,MAAO,GAAK,GACZ,OAEF,OAAO,KAAK,EAAK,IAAO,QAAQ,SAAU,GACxC,GAAI,GAAI,EAAK,GAAM,GACnB,AAAI,MAAO,IAAM,UACf,MAAK,KAAK,sBAAuB,EAAG,KAAK,UAAU,IACnD,MAAO,GAAK,GAAM,IAEpB,GAAI,GAAS,GAAc,QAAQ,EAAK,GAAM,IAC9C,AAAI,GAAQ,GAAK,GAAM,GAAK,EAAO,aAClC,QACF,OAGL,gBAAiB,SAAU,GACzB,AAAI,EAAK,SACP,MAAK,KAAK,qBACV,MAAO,GAAK,UAIhB,iBAAkB,SAAU,GAC1B,AAAI,MAAO,GAAK,UAAa,UAC3B,GAAK,SAAW,EAAK,SAAS,MAAM,SAEtC,AAAI,EAAK,UAAY,CAAC,MAAM,QAAQ,EAAK,UACvC,OAAO,GAAK,SACZ,KAAK,KAAK,qBACD,EAAK,UACd,GAAK,SAAW,EAAK,SAAS,OAAO,SAAS,GAC5C,MAAI,OAAO,IAAO,UAAY,CAAC,EAC7B,MAAK,KAAK,oBACH,IAEA,IAER,QAIP,gBAAiB,SAAS,EAAM,GAG9B,GAAI,GAAQ,CAAC,EACb,GAAI,CAAC,EAAK,QACR,SAAK,QAAU,GACR,GAET,GAAI,CAAC,GAAO,MAAM,EAAK,QAAS,GAC9B,KAAM,IAAI,OAAM,qBAAsB,EAAK,QAAU,KAEvD,SAAK,QAAU,GAAO,MAAM,EAAK,QAAS,GACnC,IAGT,UAAW,SAAS,GAClB,GAAa,EAAM,IACnB,GAAa,EAAM,KAGrB,aAAc,SAAS,EAAM,GAC3B,AAAI,MAAO,IAAY,UAAW,EAAU,CAAC,OAAQ,GAC5C,MAAO,IAAY,aAAa,GAAU,IACnD,GAAI,GAAS,EAAQ,OACrB,GAAI,CAAC,EAAK,MAAQ,CAAC,GACjB,EAAK,KAAO,GACZ,OAEF,GAAI,MAAO,GAAK,MAAS,SACvB,KAAM,IAAI,OAAM,gCAElB,AAAK,GACH,GAAK,KAAO,EAAK,KAAK,QACxB,GAAgB,EAAK,KAAM,EAAQ,EAAQ,iBACvC,GAAgB,EAAK,OACvB,KAAK,KAAK,kBAAmB,EAAK,OAItC,oBAAqB,SAAU,GAC7B,AAAI,EAAK,aAAe,MAAO,GAAK,aAAgB,UAClD,MAAK,KAAK,wBACV,MAAO,GAAK,aAEV,EAAK,QAAU,CAAC,EAAK,aACvB,GAAK,YAAc,GAAmB,EAAK,SACxC,EAAK,cAAgB,QAAW,MAAO,GAAK,YAC5C,EAAK,aAAa,KAAK,KAAK,uBAGnC,eAAgB,SAAU,GACxB,AAAK,EAAK,QACR,MAAK,KAAK,iBACV,EAAK,OAAS,iCAIlB,aAAc,SAAS,GACrB,GAAI,CAAC,EAAK,MAAQ,EAAK,YAAc,EAAK,WAAW,KACnD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAG,GAAU,EAAO,QAClB,GAAK,KAAO,CAAC,IAAK,EAAO,iBAGrB,EAAK,MACX,GAAI,GAAU,cACd,GAAG,MAAO,GAAK,MAAQ,SACrB,AAAG,EAAQ,KAAK,EAAK,MACnB,EAAK,KAAO,CAAC,MAAM,EAAK,MACrB,AAAG,GAAI,MAAM,EAAK,MAAM,SAC3B,EAAK,KAAO,CAAC,IAAK,EAAK,MAEvB,KAAK,KAAK,8BAGZ,GAAU,EAAK,KAAM,KAAK,MAC1B,GAAI,GAAU,EAAK,KACnB,EAAK,KAAO,GACT,EAAQ,KACT,CAAG,MAAO,GAAQ,KAAQ,UAAY,GAAI,MAAM,EAAQ,KAAK,SAC3D,EAAK,KAAK,IAAM,EAAQ,IAExB,KAAK,KAAK,uBAEX,EAAQ,OACT,CAAG,MAAO,GAAQ,OAAU,UAAY,EAAQ,KAAK,EAAQ,OAC3D,EAAK,KAAK,MAAQ,EAAQ,MAE1B,KAAK,KAAK,2BAGhB,AAAG,CAAC,EAAK,KAAK,OAAS,CAAC,EAAK,KAAK,KAChC,OAAO,GAAK,KACZ,KAAK,KAAK,0BAKhB,iBAAkB,SAAS,GACzB,GAAI,CAAC,EAAK,UAAY,EAAK,YAAc,EAAK,WAAW,KACvD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAI,GAAU,EAAO,QAAQ,GAAK,SAAW,EAAO,QAEtD,GAAI,EAAC,EAAK,UAEV,GAAG,MAAO,GAAK,UAAa,SAC1B,YAAK,KAAK,kBACH,MAAO,GAAK,SAErB,AAAI,GAAI,MAAM,EAAK,UAAU,UAC3B,GAAK,SAAW,UAAY,EAAK,YAIrC,gBAAiB,SAAS,GACxB,GAAK,EAAK,QAGR,AACE,MAAO,GAAK,SAAa,UACzB,EAAK,QAAQ,OAAS,GACtB,EAAK,QAAQ,SAAW,GAExB,KAAK,KAAK,kBAEL,GAAgB,EAAK,SAAS,qBACjC,KAAK,KAAK,sBAVd,OAAO,MAAK,KAAK,oBAgBvB,YAAkC,GAChC,GAAI,EAAK,OAAO,KAAO,IAAK,MAAO,GAEnC,GAAI,GAAO,EAAK,MAAM,GAAG,MAAM,KAC/B,MAAI,GAAK,SAAW,EAAU,GAEvB,EAAK,IAAM,EAAK,IACrB,EAAK,KAAO,mBAAmB,EAAK,KACpC,EAAK,KAAO,mBAAmB,EAAK,IAGxC,YAAgC,GAC9B,MAAO,CAAC,EAAK,MAAM,gBACjB,IAAS,mBAAmB,GAGhC,YAA0B,EAAM,EAAQ,GACtC,GAAI,EAAK,OAAO,KAAO,KACnB,CAAE,IAAyB,IAAS,GAAuB,KAC1D,GAAW,CAAC,GAAoB,IAAS,EAAK,eAC/C,EAAK,gBAAkB,gBACvB,EAAK,gBAAkB,cACrB,KAAM,IAAI,OAAM,iBAAmB,KAAK,UAAU,IAI1D,YAAuB,EAAM,GAC3B,MAAI,GAAK,QAAQ,GAAK,OAAS,EAAG,EAAK,SACtC,CAAC,cAAe,gBAAgB,QAAQ,SAAU,GACjD,AAAI,CAAC,MAAM,QAAQ,EAAK,KACxB,GAAK,GAAO,EAAK,GAAK,IAAI,MAErB,EAGT,YAAwB,GACtB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAQ,GACtB,EAAI,EAAO,KAAO,EAAO,IACzB,EAAM,EAAK,KAAK,EAAE,IAAO,GACzB,EAAI,EAAO,OAAS,EAAO,KAC3B,EAAQ,EAAK,KAAK,EAAE,IAAO,GAC/B,MAAO,GAAK,EAAM,EAGpB,YAAsB,GACpB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAM,cACpB,EAAM,EAAO,MAAM,gBACnB,EAAQ,EAAO,MAAM,aACrB,EAAM,GACV,MAAI,IAAQ,EAAK,GAAG,QAAQ,GAAI,KAAO,EAAK,GAAG,QAC3C,GAAO,GAAI,MAAQ,EAAM,IACzB,GAAK,GAAI,IAAM,EAAI,IAChB,EAGT,YAAgC,EAAM,GACpC,GAAI,GAAI,EAAK,qBACb,GAAI,EAAC,GACL,GAAI,GAAI,EAAK,cAAgB,GAC7B,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,EAAK,aAAe,GAGtB,YAAuB,EAAM,EAAM,GACjC,GAAI,CAAC,EAAM,MAAO,GAIlB,GAHI,MAAO,IAAS,UAClB,GAAO,EAAK,OAAO,MAAM,kBAEvB,CAAC,MAAM,QAAQ,GAAO,MAAO,GACjC,EAAK,8BAA+B,GACpC,GAAI,GAAI,GACR,SAAK,OAAO,SAAU,GACpB,MAAO,OAAO,IAAM,WACnB,QAAQ,SAAS,GAClB,EAAI,EAAE,OAAO,MAAM,gBACnB,GAAI,GAAK,EAAE,QACP,EAAK,EAAE,KAAK,IAChB,EAAK,EAAG,OACR,EAAK,EAAG,QAAQ,KAAM,IACtB,EAAE,GAAM,IAEH,EAGT,YAAwB,EAAM,GAC5B,GAAS,QAAQ,SAAU,GACzB,AAAI,CAAC,EAAK,IACV,GAAK,GAAQ,GAAa,EAAK,GAAO,EAAM,MAIhD,YAAmB,EAAM,GACvB,AAAI,CAAC,GACL,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,AAAI,GAAM,KAAK,IACb,GAAK,OAAQ,EAAG,GAAM,KAAK,GAAI,QAC/B,EAAK,GAAM,KAAK,IAAM,EAAK,GAC3B,MAAO,GAAK,soDC9ZlB,sBAAI,IAAe,gBACf,GAAmB,KAEvB,GAAO,QAAU,WACf,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GAC7C,EAAc,EAAK,QACvB,GAAI,GAAe,OACjB,MAAO,IAAgB,MAAM,KAAK,GAGlC,GAAI,GAAc,GAAS,GAAe,GAAS,GAAe,EAAc,SAChF,SAAK,QAAQ,GACN,GAAK,OAAO,MAAM,KAAM,IAInC,YAA0B,EAAc,EAAc,GACpD,MAAI,IACF,GAAe,EAAQ,KAAO,EAAe,KAC7C,EAAe,EAAQ,KAAO,EAAe,MAExC,GAAK,OAAO,GAAS,KAAM,EAAc,MCrBlD,sBAAO,QAAU,GAEjB,GAAI,IAAgB,KACpB,GAAU,MAAQ,GAElB,GAAI,IAAsB,KAEtB,GAAc,CAAC,OAAO,UAAU,cAAc,aAAa,UAAU,UACtD,QAAQ,MAAM,MAAM,OAAO,WAAW,SAAS,WAAW,WACzE,GAAmB,CAAC,eAAe,SAAU,SAE7C,GAAc,GAAY,IAAI,SAAS,GACzC,MAAO,IAAQ,GAAa,UAK9B,GAAc,GAAY,OAAO,IAEjC,YAAoB,EAAM,EAAM,GAC9B,AAAG,IAAS,IAAM,GAAO,KAAM,EAAS,IACpC,GAAQ,GAAS,IAClB,EAAC,GAAQ,EAAK,UAAS,GAAO,SAAS,MAEtC,EAAK,SACL,EAAK,QAAQ,UAAY,oBACzB,CAAC,EAAK,QAAQ,YAChB,GAAK,QAAU,IAEjB,GAAM,KAAO,WAAa,EAAK,GAAY,MAAM,KAAM,aACvD,GAAY,QAAQ,SAAS,GAC3B,GAAM,MAAQ,GAAQ,IAAY,EAAM,KAE1C,EAAK,IAAM,EAAK,KAAO,IAAM,EAAK,QAGpC,YAAkB,GAChB,MAAO,GAAO,OAAO,GAAG,cAAgB,EAAO,MAAM,MCrCvD,gCACA,GAAM,CAAC,cAAqB,gBACtB,GAAa,cACb,GAAe,gBACf,GAAoB,KAEpB,GAAgB,GAAU,GAAG,UAEnC,GAAO,QAAU,KAAM,KACtB,EAAU,CACT,IAAK,QAAQ,MACb,UAAW,MACR,GAGJ,GAAM,GAAW,GAAK,QAAQ,EAAQ,IAAK,gBACrC,EAAO,GAAU,KAAM,IAAc,EAAU,SAErD,MAAI,GAAQ,WACX,AAAQ,KAA0B,GAG5B,GAGR,GAAO,QAAQ,KAAO,IACrB,EAAU,CACT,IAAK,QAAQ,MACb,UAAW,MACR,GAGJ,GAAM,GAAW,GAAK,QAAQ,EAAQ,IAAK,gBACrC,EAAO,GAAU,GAAG,aAAa,EAAU,SAEjD,MAAI,GAAQ,WACX,AAAQ,KAA0B,GAG5B,KCvCR,gCACA,GAAM,IAAe,gBACf,GAAiB,KACjB,GAAkB,KAExB,GAAO,QAAU,KAAM,KACtB,GAAM,GAAW,KAAM,IAAO,eAAgB,GAE9C,GAAI,EAAC,EAIL,MAAO,CACN,YAAa,KAAM,IAAQ,IAAI,EAAS,IAAK,GAAK,QAAQ,KAC1D,KAAM,IAIR,GAAO,QAAQ,KAAO,IACrB,GAAM,GAAW,GAAO,KAAK,eAAgB,GAE7C,GAAI,EAAC,EAIL,MAAO,CACN,YAAa,GAAQ,KAAK,IAAI,EAAS,IAAK,GAAK,QAAQ,KACzD,KAAM,MC3BR,gCACA,GAAM,IAAe,gBAEjB,GAAY,GAEV,GAAgB,CAAC,EAAM,QAAQ,SACpC,AAAI,IAIJ,IAAY,GAEZ,QAAQ,GAAG,qBAAsB,IAChC,AAAM,YAAiB,QACtB,GAAQ,GAAI,OAAM,gCAAgC,GAAK,QAAQ,OAGhE,EAAI,EAAM,OACV,QAAQ,KAAK,OAIf,GAAO,QAAU,GAEjB,GAAO,QAAQ,QAAU,KCxBzB,mBAEA,GAAM,IAAsB,QAEtB,GAAa,IACb,GAAmB,OAAO,kBACH,iBAGvB,GAA4B,GAElC,GAAO,QAAU,CACf,uBACA,cACA,oBACA,gCCfF,sBAAM,IACJ,MAAO,UAAY,UACnB,QAAQ,KACR,QAAQ,IAAI,YACZ,cAAc,KAAK,QAAQ,IAAI,YAC7B,IAAI,IAAS,QAAQ,MAAM,SAAU,GAAG,GACxC,OAEJ,GAAO,QAAU,KCRjB,sBAAM,CAAE,8BAAsC,KACxC,GAAgB,KACtB,GAAU,GAAO,QAAU,GAG3B,GAAM,IAAK,GAAQ,GAAK,GAClB,EAAM,GAAQ,IAAM,GACpB,EAAI,GAAQ,EAAI,GAClB,GAAI,EAEF,EAAc,CAAC,EAAM,EAAO,KAChC,GAAM,GAAQ,KACd,GAAM,EAAO,GACb,EAAE,GAAQ,EACV,EAAI,GAAS,EACb,GAAG,GAAS,GAAI,QAAO,EAAO,EAAW,IAAM,SASjD,EAAY,oBAAqB,eACjC,EAAY,yBAA0B,UAMtC,EAAY,uBAAwB,8BAKpC,EAAY,cAAe,IAAI,EAAI,EAAE,0BACd,EAAI,EAAE,0BACN,EAAI,EAAE,uBAE7B,EAAY,mBAAoB,IAAI,EAAI,EAAE,+BACd,EAAI,EAAE,+BACN,EAAI,EAAE,4BAKlC,EAAY,uBAAwB,MAAM,EAAI,EAAE,sBAC5C,EAAI,EAAE,0BAEV,EAAY,4BAA6B,MAAM,EAAI,EAAE,2BACjD,EAAI,EAAE,0BAMV,EAAY,aAAc,QAAQ,EAAI,EAAE,8BAC/B,EAAI,EAAE,6BAEf,EAAY,kBAAmB,SAAS,EAAI,EAAE,mCACrC,EAAI,EAAE,kCAKf,EAAY,kBAAmB,iBAM/B,EAAY,QAAS,UAAU,EAAI,EAAE,yBAC5B,EAAI,EAAE,wBAWf,EAAY,YAAa,KAAK,EAAI,EAAE,eACjC,EAAI,EAAE,eACP,EAAI,EAAE,WAER,EAAY,OAAQ,IAAI,EAAI,EAAE,eAK9B,EAAY,aAAc,WAAW,EAAI,EAAE,oBACxC,EAAI,EAAE,oBACP,EAAI,EAAE,WAER,EAAY,QAAS,IAAI,EAAI,EAAE,gBAE/B,EAAY,OAAQ,gBAKpB,EAAY,wBAAyB,GAAG,EAAI,EAAE,mCAC9C,EAAY,mBAAoB,GAAG,EAAI,EAAE,8BAEzC,EAAY,cAAe,YAAY,EAAI,EAAE,4BAChB,EAAI,EAAE,4BACN,EAAI,EAAE,wBACV,EAAI,EAAE,gBACV,EAAI,EAAE,eAG3B,EAAY,mBAAoB,YAAY,EAAI,EAAE,iCAChB,EAAI,EAAE,iCACN,EAAI,EAAE,6BACV,EAAI,EAAE,qBACV,EAAI,EAAE,eAGhC,EAAY,SAAU,IAAI,EAAI,EAAE,YAAY,EAAI,EAAE,iBAClD,EAAY,cAAe,IAAI,EAAI,EAAE,YAAY,EAAI,EAAE,sBAIvD,EAAY,SAAU,oBACI,oBACI,sBACA,sBAE9B,EAAY,YAAa,EAAI,EAAE,QAAS,IAIxC,EAAY,YAAa,WAEzB,EAAY,YAAa,SAAS,EAAI,EAAE,iBAAkB,IAC1D,GAAQ,iBAAmB,MAE3B,EAAY,QAAS,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,iBAClD,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,sBAIvD,EAAY,YAAa,WAEzB,EAAY,YAAa,SAAS,EAAI,EAAE,iBAAkB,IAC1D,GAAQ,iBAAmB,MAE3B,EAAY,QAAS,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,iBAClD,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,sBAGvD,EAAY,kBAAmB,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,oBAC5D,EAAY,aAAc,IAAI,EAAI,EAAE,aAAa,EAAI,EAAE,mBAIvD,EAAY,iBAAkB,SAAS,EAAI,EAAE,aACrC,EAAI,EAAE,eAAe,EAAI,EAAE,gBAAiB,IACpD,GAAQ,sBAAwB,SAMhC,EAAY,cAAe,SAAS,EAAI,EAAE,0BAEnB,EAAI,EAAE,sBAG7B,EAAY,mBAAoB,SAAS,EAAI,EAAE,+BAEnB,EAAI,EAAE,2BAIlC,EAAY,OAAQ,mBAEpB,EAAY,OAAQ,yBACpB,EAAY,UAAW,6BCrLvB,mBAEA,GAAM,IAAO,CAAC,oBAAqB,QAAS,OACtC,GAAe,GACnB,AAAC,EACC,MAAO,IAAY,SAAW,CAAE,MAAO,IACvC,GAAK,OAAO,GAAK,EAAQ,IAAI,OAAO,CAAC,EAAS,IAC9C,GAAQ,GAAK,GACN,GACN,IALQ,GAMb,GAAO,QAAU,KCVjB,sBAAM,IAAU,WACV,GAAqB,CAAC,EAAG,KAC7B,GAAM,GAAO,GAAQ,KAAK,GACpB,EAAO,GAAQ,KAAK,GAE1B,MAAI,IAAQ,GACV,GAAI,CAAC,EACL,EAAI,CAAC,GAGA,IAAM,EAAI,EACZ,GAAQ,CAAC,EAAQ,GACjB,GAAQ,CAAC,EAAQ,EAClB,EAAI,EAAI,GACR,GAGA,GAAsB,CAAC,EAAG,IAAM,GAAmB,EAAG,GAE5D,GAAO,QAAU,CACf,sBACA,0BCrBF,sBAAM,IAAgB,KAChB,CAAE,cAAY,qBAA6B,KAC3C,CAAE,MAAI,MAAc,KAEpB,GAAuB,KACvB,CAAE,uBAA+B,KALvC,SAOE,YAAa,EAAS,GAGpB,GAFA,EAAU,GAAa,GAEnB,YAAmB,KACrB,GAAI,EAAQ,QAAU,CAAC,CAAC,EAAQ,OAC5B,EAAQ,oBAAsB,CAAC,CAAC,EAAQ,kBAC1C,MAAO,GAEP,EAAU,EAAQ,gBAEX,MAAO,IAAY,SAC5B,KAAM,IAAI,WAAU,oBAAoB,KAG1C,GAAI,EAAQ,OAAS,GACnB,KAAM,IAAI,WACR,0BAA0B,iBAI9B,GAAM,SAAU,EAAS,GACzB,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MAGvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAEnC,GAAM,GAAI,EAAQ,OAAO,MAAM,EAAQ,MAAQ,GAAG,GAAE,OAAS,GAAG,GAAE,OAElE,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,oBAAoB,KAU1C,GAPA,KAAK,IAAM,EAGX,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAChB,KAAK,MAAQ,CAAC,EAAE,GAEZ,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAGtB,GAAI,KAAK,MAAQ,IAAoB,KAAK,MAAQ,EAChD,KAAM,IAAI,WAAU,yBAItB,AAAK,EAAE,GAGL,KAAK,WAAa,EAAE,GAAG,MAAM,KAAK,IAAI,AAAC,IACrC,GAAI,WAAW,KAAK,IAClB,GAAM,GAAM,CAAC,EACb,GAAI,GAAO,GAAK,EAAM,GACpB,MAAO,GAGX,MAAO,KATT,KAAK,WAAa,GAapB,KAAK,MAAQ,EAAE,GAAK,EAAE,GAAG,MAAM,KAAO,GACtC,KAAK,SAGP,SACE,YAAK,QAAU,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,QAC/C,KAAK,WAAW,QAClB,MAAK,SAAW,IAAI,KAAK,WAAW,KAAK,QAEpC,KAAK,QAGd,WACE,MAAO,MAAK,QAGd,QAAS,GAEP,GADA,GAAM,iBAAkB,KAAK,QAAS,KAAK,QAAS,GAChD,CAAE,aAAiB,MACrB,GAAI,MAAO,IAAU,UAAY,IAAU,KAAK,QAC9C,MAAO,GAET,EAAQ,GAAI,IAAO,EAAO,KAAK,SAGjC,MAAI,GAAM,UAAY,KAAK,QAClB,EAGF,KAAK,YAAY,IAAU,KAAK,WAAW,GAGpD,YAAa,GACX,MAAM,aAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAI/B,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,QACrC,GAAmB,KAAK,MAAO,EAAM,OAIzC,WAAY,GAMV,GALM,YAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAI7B,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OAC9C,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,EAAM,WAAW,OACrD,MAAO,GACF,GAAI,CAAC,KAAK,WAAW,QAAU,CAAC,EAAM,WAAW,OACtD,MAAO,GAGT,GAAI,GAAI,EACR,GACE,GAAM,GAAI,KAAK,WAAW,GACpB,EAAI,EAAM,WAAW,GAE3B,GADA,GAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,GAGb,aAAc,GACZ,AAAM,YAAiB,KACrB,GAAQ,GAAI,IAAO,EAAO,KAAK,UAGjC,GAAI,GAAI,EACR,GACE,GAAM,GAAI,KAAK,MAAM,GACf,EAAI,EAAM,MAAM,GAEtB,GADA,GAAM,qBAAsB,EAAG,EAAG,GAC9B,IAAM,QAAa,IAAM,OAC3B,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,OACf,MAAO,GACF,GAAI,IAAM,EACf,SAEA,MAAO,IAAmB,EAAG,SAExB,EAAE,GAKb,IAAK,EAAS,GACZ,OAAQ,OACD,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WACH,KAAK,WAAW,OAAS,EACzB,KAAK,MAAQ,EACb,KAAK,QACL,KAAK,IAAI,MAAO,GAChB,UACG,WAIH,KAAK,WAAW,OAAS,EACzB,KAAK,IAAI,QAAS,GAClB,KAAK,IAAI,MAAO,GAChB,UAGG,aACH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,IAAI,QAAS,GAEpB,KAAK,IAAI,MAAO,GAChB,UAEG,QAKH,AACE,MAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAW,SAAW,IAE3B,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,MAAK,QAAU,GAAK,KAAK,WAAW,SAAW,IACjD,KAAK,QAEP,KAAK,MAAQ,EACb,KAAK,WAAa,GAClB,UACG,QAKH,AAAI,KAAK,WAAW,SAAW,GAC7B,KAAK,QAEP,KAAK,WAAa,GAClB,UAGG,MACH,GAAI,KAAK,WAAW,SAAW,EAC7B,KAAK,WAAa,CAAC,QAEnB,GAAI,GAAI,KAAK,WAAW,OACxB,KAAO,EAAE,GAAK,GACZ,AAAI,MAAO,MAAK,WAAW,IAAO,UAChC,MAAK,WAAW,KAChB,EAAI,IAGR,AAAI,IAAM,IAER,KAAK,WAAW,KAAK,GAGzB,AAAI,GAGF,CAAI,KAAK,WAAW,KAAO,EACrB,MAAM,KAAK,WAAW,KACxB,MAAK,WAAa,CAAC,EAAY,IAGjC,KAAK,WAAa,CAAC,EAAY,IAGnC,cAGA,KAAM,IAAI,OAAM,+BAA+B,KAEnD,YAAK,SACL,KAAK,IAAM,KAAK,QACT,OAIX,GAAO,QAAU,KC9RjB,sBAAM,CAAC,eAAsB,KACvB,CAAE,MAAI,MAAc,KACpB,GAAiB,KAEjB,GAAuB,KACvB,GAAQ,CAAC,EAAS,KAGtB,GAFA,EAAU,GAAa,GAEnB,YAAmB,IACrB,MAAO,GAYT,GATI,MAAO,IAAY,UAInB,EAAQ,OAAS,IAKjB,CAAC,AADK,GAAQ,MAAQ,GAAG,GAAE,OAAS,GAAG,GAAE,OACtC,KAAK,GACV,MAAO,MAGT,IACE,MAAO,IAAI,IAAO,EAAS,SACpB,GACP,MAAO,QAIX,GAAO,QAAU,KChCjB,sBAAM,IAAgB,KAChB,GAAQ,CAAC,EAAS,KACtB,GAAM,GAAI,GAAM,EAAS,GACzB,MAAO,GAAI,EAAE,QAAU,MAEzB,GAAO,QAAU,KCLjB,sBAAM,IAAgB,KAChB,GAAQ,CAAC,EAAS,KACtB,GAAM,GAAI,GAAM,EAAQ,OAAO,QAAQ,SAAU,IAAK,GACtD,MAAO,GAAI,EAAE,QAAU,MAEzB,GAAO,QAAU,KCLjB,sBAAM,IAAiB,KAEjB,GAAM,CAAC,EAAS,EAAS,EAAS,KACtC,AAAI,MAAQ,IAAa,UACvB,GAAa,EACb,EAAU,QAGZ,IACE,MAAO,IAAI,IAAO,EAAS,GAAS,IAAI,EAAS,GAAY,cACtD,GACP,MAAO,QAGX,GAAO,QAAU,KCdjB,sBAAM,IAAiB,KACjB,GAAU,CAAC,EAAG,EAAG,IACrB,GAAI,IAAO,EAAG,GAAO,QAAQ,GAAI,IAAO,EAAG,IAE7C,GAAO,QAAU,KCJjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,KAAW,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAgB,KAChB,GAAa,KAEb,GAAO,CAAC,EAAU,KACtB,GAAI,GAAG,EAAU,GACf,MAAO,MACF,CACL,GAAM,GAAK,GAAM,GACX,EAAK,GAAM,GACX,EAAS,EAAG,WAAW,QAAU,EAAG,WAAW,OAC/C,EAAS,EAAS,MAAQ,GAC1B,EAAgB,EAAS,aAAe,GAC9C,OAAW,KAAO,GAChB,GAAI,KAAQ,SAAW,IAAQ,SAAW,IAAQ,UAC5C,EAAG,KAAS,EAAG,GACjB,MAAO,GAAS,EAItB,MAAO,KAGX,GAAO,QAAU,KCtBjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAQ,CAAC,EAAG,IAAU,GAAI,IAAO,EAAG,GAAO,MACjD,GAAO,QAAU,KCFjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAS,KAC3B,GAAM,GAAS,GAAM,EAAS,GAC9B,MAAQ,IAAU,EAAO,WAAW,OAAU,EAAO,WAAa,MAEpE,GAAO,QAAU,KCLjB,sBAAM,IAAkB,KAClB,GAAW,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAChD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAe,CAAC,EAAG,IAAM,GAAQ,EAAG,EAAG,IAC7C,GAAO,QAAU,KCFjB,sBAAM,IAAiB,KACjB,GAAe,CAAC,EAAG,EAAG,KAC1B,GAAM,GAAW,GAAI,IAAO,EAAG,GACzB,EAAW,GAAI,IAAO,EAAG,GAC/B,MAAO,GAAS,QAAQ,IAAa,EAAS,aAAa,IAE7D,GAAO,QAAU,KCNjB,sBAAM,IAAuB,KACvB,GAAO,CAAC,EAAM,IAAU,EAAK,KAAK,CAAC,EAAG,IAAM,GAAa,EAAG,EAAG,IACrE,GAAO,QAAU,KCFjB,sBAAM,IAAuB,KACvB,GAAQ,CAAC,EAAM,IAAU,EAAK,KAAK,CAAC,EAAG,IAAM,GAAa,EAAG,EAAG,IACtE,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAAS,EACnD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAK,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,GAAS,EACnD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,KAAW,EACtD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,IAAU,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAkB,KAClB,GAAM,CAAC,EAAG,EAAG,IAAU,GAAQ,EAAG,EAAG,IAAU,EACrD,GAAO,QAAU,KCFjB,sBAAM,IAAa,KACb,GAAc,KACd,GAAa,KACb,GAAc,KACd,GAAa,KACb,GAAc,KAEd,GAAM,CAAC,EAAG,EAAI,EAAG,KACrB,OAAQ,OACD,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,MACH,MAAI,OAAO,IAAM,UACf,GAAI,EAAE,SACJ,MAAO,IAAM,UACf,GAAI,EAAE,SACD,IAAM,MAEV,OACA,QACA,KACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,OAEd,IACH,MAAO,IAAG,EAAG,EAAG,OAEb,KACH,MAAO,IAAI,EAAG,EAAG,WAGjB,KAAM,IAAI,WAAU,qBAAqB,OAG/C,GAAO,QAAU,KC/CjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,CAAC,MAAI,MAAa,KAElB,GAAS,CAAC,EAAS,KACvB,GAAI,YAAmB,IACrB,MAAO,GAOT,GAJI,MAAO,IAAY,UACrB,GAAU,OAAO,IAGf,MAAO,IAAY,SACrB,MAAO,MAGT,EAAU,GAAW,GAErB,GAAI,GAAQ,KACZ,GAAI,CAAC,EAAQ,IACX,EAAQ,EAAQ,MAAM,GAAG,GAAE,cAU3B,GAAI,GACJ,KAAQ,GAAO,GAAG,GAAE,WAAW,KAAK,KAC/B,EAAC,GAAS,EAAM,MAAQ,EAAM,GAAG,SAAW,EAAQ,SAEvD,AAAI,EAAC,GACC,EAAK,MAAQ,EAAK,GAAG,SAAW,EAAM,MAAQ,EAAM,GAAG,SAC3D,GAAQ,GAEV,GAAG,GAAE,WAAW,UAAY,EAAK,MAAQ,EAAK,GAAG,OAAS,EAAK,GAAG,OAGpE,GAAG,GAAE,WAAW,UAAY,GAG9B,MAAI,KAAU,KACL,KAEF,GAAM,GAAG,EAAM,MAAM,EAAM,IAAM,OAAO,EAAM,IAAM,MAAO,IAEpE,GAAO,QAAU,KClDjB,gCACA,GAAO,QAAU,SAAU,GACzB,EAAQ,UAAU,OAAO,UAAY,YACnC,OAAS,GAAS,KAAK,KAAM,EAAQ,EAAS,EAAO,KACnD,KAAM,GAAO,UCJnB,gCACA,GAAO,QAAU,EAEjB,EAAQ,KAAO,GACf,EAAQ,OAAS,EAEjB,WAAkB,GAChB,GAAI,GAAO,KASX,GARM,YAAgB,IACpB,GAAO,GAAI,IAGb,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,OAAS,EAEV,GAAQ,MAAO,GAAK,SAAY,WAClC,EAAK,QAAQ,SAAU,GACrB,EAAK,KAAK,aAEH,UAAU,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,EAAK,KAAK,UAAU,IAIxB,MAAO,GAGT,EAAQ,UAAU,WAAa,SAAU,GACvC,GAAI,EAAK,OAAS,KAChB,KAAM,IAAI,OAAM,oDAGlB,GAAI,GAAO,EAAK,KACZ,EAAO,EAAK,KAEhB,MAAI,IACF,GAAK,KAAO,GAGV,GACF,GAAK,KAAO,GAGV,IAAS,KAAK,MAChB,MAAK,KAAO,GAEV,IAAS,KAAK,MAChB,MAAK,KAAO,GAGd,EAAK,KAAK,SACV,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KAEL,GAGT,EAAQ,UAAU,YAAc,SAAU,GACxC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,SAAW,SAAU,GACrC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,KAAO,WACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAK,KAAM,UAAU,IAEvB,MAAO,MAAK,QAGd,EAAQ,UAAU,QAAU,WAC1B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAQ,KAAM,UAAU,IAE1B,MAAO,MAAK,QAGd,EAAQ,UAAU,IAAM,WACtB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,MAAQ,WACxB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,QAAU,SAAU,EAAI,GACxC,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,EAAG,IAAW,KAAM,IACnD,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,eAAiB,SAAU,EAAI,GAC/C,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IACjE,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,IAAM,SAAU,GAChC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,WAAa,SAAU,GACvC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,IAAM,SAAU,EAAI,GACpC,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,WAAa,SAAU,EAAI,GAC3C,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAI,GACvC,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,EAAG,IAAW,KAAM,IAC/B,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,cAAgB,SAAU,EAAI,GAC9C,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IAC7C,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,QAAU,WAE1B,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,eAAiB,WAEjC,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,MAAQ,SAAU,EAAM,GACxC,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAM,IAC/D,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAI,IAAK,EAAS,EAAO,KACrD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAU,EAAM,GAC/C,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,KAAK,OAAQ,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAI,IACvE,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAM,IAAK,EAAS,EAAO,KACvD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAO,KAAgB,GAC1D,AAAI,EAAQ,KAAK,QACf,GAAQ,KAAK,OAAS,GAEpB,EAAQ,GACV,GAAQ,KAAK,OAAS,GAGxB,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAO,IAChE,EAAS,EAAO,KAIlB,OADI,GAAM,GACD,EAAI,EAAG,GAAU,EAAI,EAAa,IACzC,EAAI,KAAK,EAAO,OAChB,EAAS,KAAK,WAAW,GAE3B,AAAI,IAAW,MACb,GAAS,KAAK,MAGZ,IAAW,KAAK,MAAQ,IAAW,KAAK,MAC1C,GAAS,EAAO,MAGlB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAS,GAAO,KAAM,EAAQ,EAAM,IAEtC,MAAO,IAGT,EAAQ,UAAU,QAAU,WAG1B,OAFI,GAAO,KAAK,KACZ,EAAO,KAAK,KACP,EAAS,EAAM,IAAW,KAAM,EAAS,EAAO,MACvD,GAAI,GAAI,EAAO,KACf,EAAO,KAAO,EAAO,KACrB,EAAO,KAAO,EAEhB,YAAK,KAAO,EACZ,KAAK,KAAO,EACL,MAGT,YAAiB,EAAM,EAAM,GAC3B,GAAI,GAAW,IAAS,EAAK,KAC3B,GAAI,IAAK,EAAO,KAAM,EAAM,GAC5B,GAAI,IAAK,EAAO,EAAM,EAAK,KAAM,GAEnC,MAAI,GAAS,OAAS,MACpB,GAAK,KAAO,GAEV,EAAS,OAAS,MACpB,GAAK,KAAO,GAGd,EAAK,SAEE,EAGT,YAAe,EAAM,GACnB,EAAK,KAAO,GAAI,IAAK,EAAM,EAAK,KAAM,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAkB,EAAM,GACtB,EAAK,KAAO,GAAI,IAAK,EAAM,KAAM,EAAK,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAe,EAAO,EAAM,EAAM,GAChC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAO,EAAM,EAAM,GAGrC,KAAK,KAAO,EACZ,KAAK,MAAQ,EAEb,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAGd,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAIhB,IAEE,AAAQ,KAAiB,SAClB,OCzaT,gCAGA,GAAM,IAAkB,KAElB,GAAM,OAAO,OACb,GAAS,OAAO,UAChB,GAAoB,OAAO,oBAC3B,GAAc,OAAO,cACrB,GAAU,OAAO,UACjB,GAAU,OAAO,WACjB,GAAoB,OAAO,kBAC3B,GAAW,OAAO,WAClB,GAAQ,OAAO,SACf,GAAoB,OAAO,kBAE3B,GAAc,IAAM,EAhB1B,SA2BE,YAAa,GAOX,GANI,MAAO,IAAY,UACrB,GAAU,CAAE,IAAK,IAEd,GACH,GAAU,IAER,EAAQ,KAAQ,OAAO,GAAQ,KAAQ,UAAY,EAAQ,IAAM,GACnE,KAAM,IAAI,WAAU,qCAEtB,GAAM,GAAM,KAAK,IAAO,EAAQ,KAAO,SAEjC,EAAK,EAAQ,QAAU,GAG7B,GAFA,KAAK,IAAsB,MAAO,IAAO,WAAc,GAAc,EACrE,KAAK,IAAe,EAAQ,OAAS,GACjC,EAAQ,QAAU,MAAO,GAAQ,QAAW,SAC9C,KAAM,IAAI,WAAU,2BACtB,KAAK,IAAW,EAAQ,QAAU,EAClC,KAAK,IAAW,EAAQ,QACxB,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,WAIH,KAAK,GACP,GAAI,MAAO,IAAO,UAAY,EAAK,EACjC,KAAM,IAAI,WAAU,qCAEtB,KAAK,IAAO,GAAM,SAClB,GAAK,SAEH,OACF,MAAO,MAAK,OAGV,YAAY,GACd,KAAK,IAAe,CAAC,CAAC,KAEpB,cACF,MAAO,MAAK,OAGV,QAAQ,GACV,GAAI,MAAO,IAAO,SAChB,KAAM,IAAI,WAAU,wCAEtB,KAAK,IAAW,EAChB,GAAK,SAEH,UACF,MAAO,MAAK,OAIV,kBAAkB,GACpB,AAAI,MAAO,IAAO,YAChB,GAAK,IAEH,IAAO,KAAK,KACd,MAAK,IAAqB,EAC1B,KAAK,IAAU,EACf,KAAK,IAAU,QAAQ,IACrB,EAAI,OAAS,KAAK,IAAmB,EAAI,MAAO,EAAI,KACpD,KAAK,KAAW,EAAI,UAGxB,GAAK,SAEH,oBAAsB,MAAO,MAAK,OAElC,UAAY,MAAO,MAAK,OACxB,aAAe,MAAO,MAAK,IAAU,OAEzC,SAAU,EAAI,GACZ,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,QAAS,EAAI,GACX,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,OACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,KAG7C,SACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,OAG7C,QACE,AAAI,KAAK,KACL,KAAK,KACL,KAAK,IAAU,QACjB,KAAK,IAAU,QAAQ,GAAO,KAAK,IAAS,EAAI,IAAK,EAAI,QAG3D,KAAK,IAAS,GAAI,KAClB,KAAK,IAAY,GAAI,IACrB,KAAK,IAAU,EAGjB,OACE,MAAO,MAAK,IAAU,IAAI,GACxB,GAAQ,KAAM,GAAO,GAAQ,CAC3B,EAAG,EAAI,IACP,EAAG,EAAI,MACP,EAAG,EAAI,IAAO,GAAI,QAAU,KAC3B,UAAU,OAAO,GAAK,GAG7B,UACE,MAAO,MAAK,IAGd,IAAK,EAAK,EAAO,GAGf,GAFA,EAAS,GAAU,KAAK,IAEpB,GAAU,MAAO,IAAW,SAC9B,KAAM,IAAI,WAAU,2BAEtB,GAAM,GAAM,EAAS,KAAK,MAAQ,EAC5B,EAAM,KAAK,IAAmB,EAAO,GAE3C,GAAI,KAAK,IAAO,IAAI,IAClB,GAAI,EAAM,KAAK,IACb,UAAI,KAAM,KAAK,IAAO,IAAI,IACnB,GAIT,GAAM,GAAO,AADA,KAAK,IAAO,IAAI,GACX,MAIlB,MAAI,MAAK,KACF,MAAK,KACR,KAAK,IAAS,EAAK,EAAK,QAG5B,EAAK,IAAM,EACX,EAAK,OAAS,EACd,EAAK,MAAQ,EACb,KAAK,KAAW,EAAM,EAAK,OAC3B,EAAK,OAAS,EACd,KAAK,IAAI,GACT,GAAK,MACE,GAGT,GAAM,GAAM,GAAI,IAAM,EAAK,EAAO,EAAK,EAAK,GAG5C,MAAI,GAAI,OAAS,KAAK,IAChB,MAAK,KACP,KAAK,IAAS,EAAK,GAEd,IAGT,MAAK,KAAW,EAAI,OACpB,KAAK,IAAU,QAAQ,GACvB,KAAK,IAAO,IAAI,EAAK,KAAK,IAAU,MACpC,GAAK,MACE,IAGT,IAAK,GACH,GAAI,CAAC,KAAK,IAAO,IAAI,GAAM,MAAO,GAClC,GAAM,GAAM,KAAK,IAAO,IAAI,GAAK,MACjC,MAAO,CAAC,GAAQ,KAAM,GAGxB,IAAK,GACH,MAAO,IAAI,KAAM,EAAK,IAGxB,KAAM,GACJ,MAAO,IAAI,KAAM,EAAK,IAGxB,MACE,GAAM,GAAO,KAAK,IAAU,KAC5B,MAAK,GAGL,IAAI,KAAM,GACH,EAAK,OAHH,KAMX,IAAK,GACH,GAAI,KAAM,KAAK,IAAO,IAAI,IAG5B,KAAM,GAEJ,KAAK,QAEL,GAAM,GAAM,KAAK,MAEjB,OAAS,GAAI,EAAI,OAAS,EAAG,GAAK,EAAG,KACnC,GAAM,GAAM,EAAI,GACV,EAAY,EAAI,GAAK,EAC3B,GAAI,IAAc,EAEhB,KAAK,IAAI,EAAI,EAAG,EAAI,QAEpB,GAAM,GAAS,EAAY,EAE3B,AAAI,EAAS,GACX,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,KAM/B,QACE,KAAK,IAAO,QAAQ,CAAC,EAAO,IAAQ,GAAI,KAAM,EAAK,OAIjD,GAAM,CAAC,EAAM,EAAK,KACtB,GAAM,GAAO,EAAK,IAAO,IAAI,GAC7B,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,GAAI,GAAQ,EAAM,IAEhB,GADA,GAAI,EAAM,GACN,CAAC,EAAK,IACR,WAEF,AAAI,IACE,GAAK,KACP,GAAK,MAAM,IAAM,KAAK,OACxB,EAAK,IAAU,YAAY,IAG/B,MAAO,GAAI,QAIT,GAAU,CAAC,EAAM,KACrB,GAAI,CAAC,GAAQ,CAAC,EAAI,QAAU,CAAC,EAAK,IAChC,MAAO,GAET,GAAM,GAAO,KAAK,MAAQ,EAAI,IAC9B,MAAO,GAAI,OAAS,EAAO,EAAI,OAC3B,EAAK,KAAa,EAAO,EAAK,KAG9B,GAAO,IACX,GAAI,EAAK,IAAU,EAAK,IACtB,OAAS,GAAS,EAAK,IAAU,KAC/B,EAAK,IAAU,EAAK,KAAQ,IAAW,OAIvC,GAAM,GAAO,EAAO,KACpB,GAAI,EAAM,GACV,EAAS,IAKT,GAAM,CAAC,EAAM,KACjB,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,AAAI,EAAK,KACP,EAAK,IAAS,EAAI,IAAK,EAAI,OAE7B,EAAK,KAAW,EAAI,OACpB,EAAK,IAAO,OAAO,EAAI,KACvB,EAAK,IAAU,WAAW,KApT9B,SAyTE,YAAa,EAAK,EAAO,EAAQ,EAAK,GACpC,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,OAAS,GAAU,IAItB,GAAc,CAAC,EAAM,EAAI,EAAM,KACnC,GAAI,GAAM,EAAK,MACf,AAAI,GAAQ,EAAM,IAChB,IAAI,EAAM,GACL,EAAK,KACR,GAAM,SAEN,GACF,EAAG,KAAK,EAAO,EAAI,MAAO,EAAI,IAAK,IAGvC,GAAO,QAAU,KC7UjB,gCAEE,YAAa,EAAO,GAGlB,GAFA,EAAU,GAAa,GAEnB,YAAiB,IACnB,MACE,GAAM,QAAU,CAAC,CAAC,EAAQ,OAC1B,EAAM,oBAAsB,CAAC,CAAC,EAAQ,kBAE/B,EAEA,GAAI,IAAM,EAAM,IAAK,GAIhC,GAAI,YAAiB,IAEnB,YAAK,IAAM,EAAM,MACjB,KAAK,IAAM,CAAC,CAAC,IACb,KAAK,SACE,KAkBT,GAfA,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,kBAAoB,CAAC,CAAC,EAAQ,kBAGnC,KAAK,IAAM,EACX,KAAK,IAAM,EACR,MAAM,cAEN,IAAI,GAAS,KAAK,WAAW,EAAM,SAInC,OAAO,GAAK,EAAE,QAEb,CAAC,KAAK,IAAI,OACZ,KAAM,IAAI,WAAU,yBAAyB,KAI/C,GAAI,KAAK,IAAI,OAAS,GAEpB,GAAM,GAAQ,KAAK,IAAI,GAEvB,GADA,KAAK,IAAM,KAAK,IAAI,OAAO,GAAK,CAAC,GAAU,EAAE,KACzC,KAAK,IAAI,SAAW,EACtB,KAAK,IAAM,CAAC,WACL,KAAK,IAAI,OAAS,GAEzB,OAAW,KAAK,MAAK,IACnB,GAAI,EAAE,SAAW,GAAK,GAAM,EAAE,KAC5B,KAAK,IAAM,CAAC,GACZ,QAMR,KAAK,SAGP,SACE,YAAK,MAAQ,KAAK,IACf,IAAI,AAAC,GACG,EAAM,KAAK,KAAK,QAExB,KAAK,MACL,OACI,KAAK,MAGd,WACE,MAAO,MAAK,MAGd,WAAY,GACV,EAAQ,EAAM,OAKd,GAAM,GAAU,cADC,OAAO,KAAK,KAAK,SAAS,KAAK,QACN,IACpC,EAAS,GAAM,IAAI,GACzB,GAAI,EACF,MAAO,GAET,GAAM,GAAQ,KAAK,QAAQ,MAErB,EAAK,EAAQ,GAAG,GAAE,kBAAoB,GAAG,GAAE,aACjD,EAAQ,EAAM,QAAQ,EAAI,GAAc,KAAK,QAAQ,oBACrD,GAAM,iBAAkB,GAExB,EAAQ,EAAM,QAAQ,GAAG,GAAE,gBAAiB,IAC5C,GAAM,kBAAmB,EAAO,GAAG,GAAE,iBAGrC,EAAQ,EAAM,QAAQ,GAAG,GAAE,WAAY,IAGvC,EAAQ,EAAM,QAAQ,GAAG,GAAE,WAAY,IAGvC,EAAQ,EAAM,MAAM,OAAO,KAAK,KAKhC,GAAM,GAAS,EAAQ,GAAG,GAAE,iBAAmB,GAAG,GAAE,YAC9C,EAAY,EACf,MAAM,KACN,IAAI,GAAQ,GAAgB,EAAM,KAAK,UACvC,KAAK,KACL,MAAM,OAEN,IAAI,GAAQ,GAAY,EAAM,KAAK,UAEnC,OAAO,KAAK,QAAQ,MAAQ,GAAQ,CAAC,CAAC,EAAK,MAAM,GAAU,IAAM,IACjE,IAAI,GAAQ,GAAI,IAAW,EAAM,KAAK,UAKnC,EAAI,EAAU,OACd,EAAW,GAAI,KACrB,OAAW,KAAQ,IACjB,GAAI,GAAU,GACZ,MAAO,CAAC,GACV,EAAS,IAAI,EAAK,MAAO,GAE3B,AAAI,EAAS,KAAO,GAAK,EAAS,IAAI,KACpC,EAAS,OAAO,IAElB,GAAM,GAAS,CAAC,GAAG,EAAS,UAC5B,UAAM,IAAI,EAAS,GACZ,EAGT,WAAY,EAAO,GACjB,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,WAAU,uBAGtB,MAAO,MAAK,IAAI,KAAK,AAAC,GAElB,GAAc,EAAiB,IAC/B,EAAM,IAAI,KAAK,AAAC,GAEZ,GAAc,EAAkB,IAChC,EAAgB,MAAM,AAAC,GACd,EAAiB,MAAM,AAAC,GACtB,EAAe,WAAW,EAAiB,OAUhE,KAAM,GACJ,GAAI,CAAC,EACH,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,IACE,EAAU,GAAI,IAAO,EAAS,KAAK,eAC5B,GACP,MAAO,GAIX,OAAS,GAAI,EAAG,EAAI,KAAK,IAAI,OAAQ,IACnC,GAAI,GAAQ,KAAK,IAAI,GAAI,EAAS,KAAK,SACrC,MAAO,GAGX,MAAO,KAGX,GAAO,QAAU,GAEjB,GAAM,IAAc,KACd,GAAQ,GAAI,IAAI,CAAE,IAAK,MAEvB,GAAuB,KACvB,GAAqB,KACrB,GAAgB,KAChB,GAAiB,KACjB,CACJ,MACA,KACA,yBACA,oBACA,qBACU,KAEN,GAAY,GAAK,EAAE,QAAU,WAC7B,GAAQ,GAAK,EAAE,QAAU,GAIzB,GAAgB,CAAC,EAAa,KAClC,GAAI,GAAS,GACP,EAAuB,EAAY,QACrC,EAAiB,EAAqB,MAE1C,KAAO,GAAU,EAAqB,QACpC,EAAS,EAAqB,MAAM,AAAC,GAC5B,EAAe,WAAW,EAAiB,IAGpD,EAAiB,EAAqB,MAGxC,MAAO,IAMH,GAAkB,CAAC,EAAM,IAC7B,IAAM,OAAQ,EAAM,GACpB,EAAO,GAAc,EAAM,GAC3B,GAAM,QAAS,GACf,EAAO,GAAc,EAAM,GAC3B,GAAM,SAAU,GAChB,EAAO,GAAe,EAAM,GAC5B,GAAM,SAAU,GAChB,EAAO,GAAa,EAAM,GAC1B,GAAM,QAAS,GACR,GAGH,GAAM,GAAM,CAAC,GAAM,EAAG,gBAAkB,KAAO,IAAO,IAQtD,GAAgB,CAAC,EAAM,IAC3B,EAAK,OAAO,MAAM,OAAO,IAAI,AAAC,GACrB,GAAa,EAAM,IACzB,KAAK,KAEJ,GAAe,CAAC,EAAM,KAC1B,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,YAAc,GAAG,GAAE,OAClD,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAClC,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAK,UAAU,CAAC,EAAI,UACrB,AAAI,GAAI,GAEb,EAAM,KAAK,KAAK,QAAQ,KAAK,CAAC,EAAI,QAC7B,AAAI,EACT,IAAM,kBAAmB,GACzB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,CAAC,EAAI,SAGf,EAAM,KAAK,KAAK,KAAK,MAChB,KAAK,CAAC,EAAI,QAGjB,GAAM,eAAgB,GACf,KAUL,GAAgB,CAAC,EAAM,IAC3B,EAAK,OAAO,MAAM,OAAO,IAAI,AAAC,GACrB,GAAa,EAAM,IACzB,KAAK,KAEJ,GAAe,CAAC,EAAM,KAC1B,GAAM,QAAS,EAAM,GACrB,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,YAAc,GAAG,GAAE,OAC5C,EAAI,EAAQ,kBAAoB,KAAO,GAC7C,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAClC,GAAM,QAAS,EAAM,EAAG,EAAG,EAAG,EAAG,GACjC,GAAI,GAEJ,MAAI,IAAI,GACN,EAAM,GACD,AAAI,GAAI,GACb,EAAM,KAAK,QAAQ,MAAM,CAAC,EAAI,UACzB,AAAI,GAAI,GACb,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC,EAAI,QAEtC,EAAM,KAAK,KAAK,MAAM,MAAM,CAAC,EAAI,UAE9B,AAAI,EACT,IAAM,kBAAmB,GACzB,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,KAAK,CAAC,EAAI,MAEpB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,KAAK,CAAC,EAAI,QAGjB,EAAM,KAAK,KAAK,KAAK,KAAK,MACrB,CAAC,EAAI,WAGZ,IAAM,SACN,AAAI,IAAM,IACR,AAAI,IAAM,IACR,EAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,KAAK,CAAC,EAAI,MAExB,EAAM,KAAK,KAAK,KAAK,IAClB,MAAM,KAAK,CAAC,EAAI,QAGrB,EAAM,KAAK,KAAK,KAAK,MAChB,CAAC,EAAI,WAId,GAAM,eAAgB,GACf,KAIL,GAAiB,CAAC,EAAM,IAC5B,IAAM,iBAAkB,EAAM,GACvB,EAAK,MAAM,OAAO,IAAI,AAAC,GACrB,GAAc,EAAM,IAC1B,KAAK,MAGJ,GAAgB,CAAC,EAAM,KAC3B,EAAO,EAAK,OACZ,GAAM,GAAI,EAAQ,MAAQ,GAAG,GAAE,aAAe,GAAG,GAAE,QACnD,MAAO,GAAK,QAAQ,EAAG,CAAC,EAAK,EAAM,EAAG,EAAG,EAAG,KAC1C,GAAM,SAAU,EAAM,EAAK,EAAM,EAAG,EAAG,EAAG,GAC1C,GAAM,GAAK,GAAI,GACT,EAAK,GAAM,GAAI,GACf,EAAK,GAAM,GAAI,GACf,EAAO,EAEb,MAAI,KAAS,KAAO,GAClB,GAAO,IAKT,EAAK,EAAQ,kBAAoB,KAAO,GAExC,AAAI,EACF,AAAI,IAAS,KAAO,IAAS,IAE3B,EAAM,WAGN,EAAM,IAEH,AAAI,GAAQ,EAGb,IACF,GAAI,GAEN,EAAI,EAEJ,AAAI,IAAS,IAGX,GAAO,KACP,AAAI,EACF,GAAI,CAAC,EAAI,EACT,EAAI,EACJ,EAAI,GAEJ,GAAI,CAAC,EAAI,EACT,EAAI,IAEG,IAAS,MAGlB,GAAO,IACP,AAAI,EACF,EAAI,CAAC,EAAI,EAET,EAAI,CAAC,EAAI,GAIT,IAAS,KACX,GAAK,MAEP,EAAM,GAAG,EAAO,KAAK,KAAK,IAAI,KACzB,AAAI,EACT,EAAM,KAAK,QAAQ,MAAO,CAAC,EAAI,UACtB,GACT,GAAM,KAAK,KAAK,MAAM,MACjB,KAAK,CAAC,EAAI,SAGjB,GAAM,gBAAiB,GAEhB,KAML,GAAe,CAAC,EAAM,IAC1B,IAAM,eAAgB,EAAM,GAErB,EAAK,OAAO,QAAQ,GAAG,GAAE,MAAO,KAGnC,GAAc,CAAC,EAAM,IACzB,IAAM,cAAe,EAAM,GACpB,EAAK,OACT,QAAQ,GAAG,EAAQ,kBAAoB,GAAE,QAAU,GAAE,MAAO,KAQ3D,GAAgB,GAAS,CAAC,EAC9B,EAAM,EAAI,EAAI,EAAI,EAAK,EACvB,EAAI,EAAI,EAAI,EAAI,EAAK,IACrB,CAAI,GAAI,GACN,EAAO,GACF,AAAI,GAAI,GACb,EAAO,KAAK,QAAS,EAAQ,KAAO,KAC/B,AAAI,GAAI,GACb,EAAO,KAAK,KAAM,MAAO,EAAQ,KAAO,KACnC,AAAI,EACT,EAAO,KAAK,IAEZ,EAAO,KAAK,IAAO,EAAQ,KAAO,KAGpC,AAAI,GAAI,GACN,EAAK,GACA,AAAI,GAAI,GACb,EAAK,IAAI,CAAC,EAAK,UACV,AAAI,GAAI,GACb,EAAK,IAAI,KAAM,CAAC,EAAK,QAChB,AAAI,EACT,EAAK,KAAK,KAAM,KAAM,KAAM,IACvB,AAAI,EACT,EAAK,IAAI,KAAM,KAAM,CAAC,EAAK,MAE3B,EAAK,KAAK,IAGJ,GAAG,KAAQ,IAAM,QAGrB,GAAU,CAAC,EAAK,EAAS,KAC7B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAI,CAAC,EAAI,GAAG,KAAK,GACf,MAAO,GAIX,GAAI,EAAQ,WAAW,QAAU,CAAC,EAAQ,mBAMxC,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAE9B,GADA,GAAM,EAAI,GAAG,QACT,EAAI,GAAG,SAAW,GAAW,KAI7B,EAAI,GAAG,OAAO,WAAW,OAAS,GACpC,GAAM,GAAU,EAAI,GAAG,OACvB,GAAI,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,OAC1B,EAAQ,QAAU,EAAQ,MAC5B,MAAO,GAMb,MAAO,GAGT,MAAO,MC5fT,sBAAM,IAAM,OAAO,cAAnB,mBAGa,OACT,MAAO,IAET,YAAa,EAAM,GAGjB,GAFA,EAAU,GAAa,GAEnB,YAAgB,KAClB,GAAI,EAAK,QAAU,CAAC,CAAC,EAAQ,MAC3B,MAAO,GAEP,EAAO,EAAK,MAIhB,GAAM,aAAc,EAAM,GAC1B,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAQ,MACvB,KAAK,MAAM,GAEX,AAAI,KAAK,SAAW,GAClB,KAAK,MAAQ,GAEb,KAAK,MAAQ,KAAK,SAAW,KAAK,OAAO,QAG3C,GAAM,OAAQ,MAGhB,MAAO,GACL,GAAM,GAAI,KAAK,QAAQ,MAAQ,GAAG,GAAE,iBAAmB,GAAG,GAAE,YACtD,EAAI,EAAK,MAAM,GAErB,GAAI,CAAC,EACH,KAAM,IAAI,WAAU,uBAAuB,KAG7C,KAAK,SAAW,EAAE,KAAO,OAAY,EAAE,GAAK,GACxC,KAAK,WAAa,KACpB,MAAK,SAAW,IAIlB,AAAK,EAAE,GAGL,KAAK,OAAS,GAAI,IAAO,EAAE,GAAI,KAAK,QAAQ,OAF5C,KAAK,OAAS,GAMlB,WACE,MAAO,MAAK,MAGd,KAAM,GAGJ,GAFA,GAAM,kBAAmB,EAAS,KAAK,QAAQ,OAE3C,KAAK,SAAW,IAAO,IAAY,GACrC,MAAO,GAGT,GAAI,MAAO,IAAY,SACrB,IACE,EAAU,GAAI,IAAO,EAAS,KAAK,eAC5B,GACP,MAAO,GAIX,MAAO,IAAI,EAAS,KAAK,SAAU,KAAK,OAAQ,KAAK,SAGvD,WAAY,EAAM,GAChB,GAAI,CAAE,aAAgB,KACpB,KAAM,IAAI,WAAU,4BAUtB,GAPI,EAAC,GAAW,MAAO,IAAY,WACjC,GAAU,CACR,MAAO,CAAC,CAAC,EACT,kBAAmB,KAInB,KAAK,WAAa,GACpB,MAAI,MAAK,QAAU,GACV,GAEF,GAAI,IAAM,EAAK,MAAO,GAAS,KAAK,KAAK,OAC3C,GAAI,EAAK,WAAa,GAC3B,MAAI,GAAK,QAAU,GACV,GAEF,GAAI,IAAM,KAAK,MAAO,GAAS,KAAK,EAAK,QAGlD,GAAM,GACH,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KACzC,EACH,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,KACzC,EAAa,KAAK,OAAO,UAAY,EAAK,OAAO,QACjD,EACH,MAAK,WAAa,MAAQ,KAAK,WAAa,OAC5C,GAAK,WAAa,MAAQ,EAAK,WAAa,MACzC,EACJ,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IAClC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC1C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAC3C,EACJ,GAAI,KAAK,OAAQ,IAAK,EAAK,OAAQ,IAClC,MAAK,WAAa,MAAQ,KAAK,WAAa,MAC1C,GAAK,WAAa,MAAQ,EAAK,WAAa,KAEjD,MACE,IACA,GACC,GAAc,GACf,GACA,IAKN,GAAO,QAAU,GAEjB,GAAM,IAAuB,KACvB,CAAC,MAAI,MAAa,KAClB,GAAc,KACd,GAAgB,KAChB,GAAiB,KACjB,GAAgB,OCtItB,sBAAM,IAAgB,KAChB,GAAY,CAAC,EAAS,EAAO,KACjC,IACE,EAAQ,GAAI,IAAM,EAAO,SAClB,GACP,MAAO,GAET,MAAO,GAAM,KAAK,IAEpB,GAAO,QAAU,KCTjB,sBAAM,IAAgB,KAGhB,GAAgB,CAAC,EAAO,IAC5B,GAAI,IAAM,EAAO,GAAS,IACvB,IAAI,GAAQ,EAAK,IAAI,GAAK,EAAE,OAAO,KAAK,KAAK,OAAO,MAAM,MAE/D,GAAO,QAAU,KCPjB,sBAAM,IAAiB,KACjB,GAAgB,KAEhB,GAAgB,CAAC,EAAU,EAAO,KACtC,GAAI,GAAM,KACN,EAAQ,KACR,EAAW,KACf,IACE,EAAW,GAAI,IAAM,EAAO,SACrB,GACP,MAAO,MAET,SAAS,QAAQ,AAAC,IAChB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,KAE/B,GAAM,EACN,EAAQ,GAAI,IAAO,EAAK,MAIvB,GAET,GAAO,QAAU,KCxBjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,GAAgB,CAAC,EAAU,EAAO,KACtC,GAAI,GAAM,KACN,EAAQ,KACR,EAAW,KACf,IACE,EAAW,GAAI,IAAM,EAAO,SACrB,GACP,MAAO,MAET,SAAS,QAAQ,AAAC,IAChB,AAAI,EAAS,KAAK,IAEZ,EAAC,GAAO,EAAM,QAAQ,KAAO,IAE/B,GAAM,EACN,EAAQ,GAAI,IAAO,EAAK,MAIvB,GAET,GAAO,QAAU,KCvBjB,sBAAM,IAAiB,KACjB,GAAgB,KAChB,GAAa,KAEb,GAAa,CAAC,EAAO,KACzB,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAS,GAAI,IAAO,SAMxB,GALI,EAAM,KAAK,IAIf,GAAS,GAAI,IAAO,WAChB,EAAM,KAAK,IACb,MAAO,GAGT,EAAS,KACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAM,GAAc,EAAM,IAAI,GAE1B,EAAS,KACb,EAAY,QAAQ,AAAC,IAEnB,GAAM,GAAU,GAAI,IAAO,EAAW,OAAO,SAC7C,OAAQ,EAAW,cACZ,IACH,AAAI,EAAQ,WAAW,SAAW,EAChC,EAAQ,QAER,EAAQ,WAAW,KAAK,GAE1B,EAAQ,IAAM,EAAQ,aAEnB,OACA,KACH,AAAI,EAAC,GAAU,GAAG,EAAS,KACzB,GAAS,GAEX,UACG,QACA,KAEH,cAGA,KAAM,IAAI,OAAM,yBAAyB,EAAW,eAGtD,GAAW,EAAC,GAAU,GAAG,EAAQ,KACnC,GAAS,GAGb,MAAI,IAAU,EAAM,KAAK,GAChB,EAGF,MAET,GAAO,QAAU,KC3DjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAO,KACzB,IAGE,MAAO,IAAI,IAAM,EAAO,GAAS,OAAS,UACnC,GACP,MAAO,QAGX,GAAO,QAAU,KCVjB,sBAAM,IAAiB,KACjB,GAAqB,KACrB,CAAC,QAAO,GACR,GAAgB,KAChB,GAAoB,KACpB,GAAa,KACb,GAAa,KACb,GAAc,KACd,GAAc,KAEd,GAAU,CAAC,EAAS,EAAO,EAAM,KACrC,EAAU,GAAI,IAAO,EAAS,GAC9B,EAAQ,GAAI,IAAM,EAAO,GAEzB,GAAI,GAAM,EAAO,EAAM,EAAM,EAC7B,OAAQ,OACD,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,UACG,IACH,EAAO,GACP,EAAQ,GACR,EAAO,GACP,EAAO,IACP,EAAQ,KACR,cAEA,KAAM,IAAI,WAAU,yCAIxB,GAAI,GAAU,EAAS,EAAO,GAC5B,MAAO,GAMT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAI,OAAQ,EAAE,GACtC,GAAM,GAAc,EAAM,IAAI,GAE1B,EAAO,KACP,EAAM,KAuBV,GArBA,EAAY,QAAQ,AAAC,IACnB,AAAI,EAAW,SAAW,IACxB,GAAa,GAAI,IAAW,YAE9B,EAAO,GAAQ,EACf,EAAM,GAAO,EACb,AAAI,EAAK,EAAW,OAAQ,EAAK,OAAQ,GACvC,EAAO,EACE,EAAK,EAAW,OAAQ,EAAI,OAAQ,IAC7C,GAAM,KAMN,EAAK,WAAa,GAAQ,EAAK,WAAa,GAM3C,EAAC,EAAI,UAAY,EAAI,WAAa,IACnC,EAAM,EAAS,EAAI,QACrB,MAAO,GACF,GAAI,EAAI,WAAa,GAAS,EAAK,EAAS,EAAI,QACrD,MAAO,GAGX,MAAO,IAGT,GAAO,QAAU,KC/EjB,mBACA,GAAM,IAAkB,KAClB,GAAM,CAAC,EAAS,EAAO,IAAY,GAAQ,EAAS,EAAO,IAAK,GACtE,GAAO,QAAU,KCHjB,sBAAM,IAAkB,KAElB,GAAM,CAAC,EAAS,EAAO,IAAY,GAAQ,EAAS,EAAO,IAAK,GACtE,GAAO,QAAU,KCHjB,sBAAM,IAAgB,KAChB,GAAa,CAAC,EAAI,EAAI,IAC1B,GAAK,GAAI,IAAM,EAAI,GACnB,EAAK,GAAI,IAAM,EAAI,GACZ,EAAG,WAAW,IAEvB,GAAO,QAAU,KCNjB,mBAGA,GAAM,IAAoB,KACpB,GAAkB,KACxB,GAAO,QAAU,CAAC,EAAU,EAAO,KACjC,GAAM,GAAM,GACR,EAAM,KACN,EAAO,KACL,EAAI,EAAS,KAAK,CAAC,EAAG,IAAM,GAAQ,EAAG,EAAG,IAChD,OAAW,KAAW,GAEpB,AADiB,GAAU,EAAS,EAAO,GAEzC,GAAO,EACF,GACH,GAAM,IAEJ,IACF,EAAI,KAAK,CAAC,EAAK,IAEjB,EAAO,KACP,EAAM,MAGV,AAAI,GACF,EAAI,KAAK,CAAC,EAAK,OAEjB,GAAM,GAAS,GACf,OAAW,CAAC,EAAK,IAAQ,GACvB,AAAI,IAAQ,EACV,EAAO,KAAK,GACT,AAAI,CAAC,GAAO,IAAQ,EAAE,GACzB,EAAO,KAAK,KACT,AAAK,EAEL,AAAI,IAAQ,EAAE,GACjB,EAAO,KAAK,KAAK,KAEjB,EAAO,KAAK,GAAG,OAAS,KAJxB,EAAO,KAAK,KAAK,KAMrB,GAAM,GAAa,EAAO,KAAK,QACzB,EAAW,MAAO,GAAM,KAAQ,SAAW,EAAM,IAAM,OAAO,GACpE,MAAO,GAAW,OAAS,EAAS,OAAS,EAAa,KC1C5D,sBAAM,IAAgB,KAChB,CAAE,QAAgB,KAClB,GAAoB,KACpB,GAAkB,KA4BlB,GAAS,CAAC,EAAK,EAAK,KACxB,GAAI,IAAQ,EACV,MAAO,GAET,EAAM,GAAI,IAAM,EAAK,GACrB,EAAM,GAAI,IAAM,EAAK,GACrB,GAAI,GAAa,GAEjB,EAAO,OAAW,KAAa,GAAI,KACjC,OAAW,KAAa,GAAI,KAC1B,GAAM,GAAQ,GAAa,EAAW,EAAW,GAEjD,GADA,EAAa,GAAc,IAAU,KACjC,EACF,WAMJ,GAAI,EACF,MAAO,GAEX,MAAO,IAGH,GAAe,CAAC,EAAK,EAAK,KAC9B,GAAI,IAAQ,EACV,MAAO,GAET,GAAI,EAAI,SAAW,GAAK,EAAI,GAAG,SAAW,GACxC,MAAO,GAAI,SAAW,GAAK,EAAI,GAAG,SAAW,GAE/C,GAAM,GAAQ,GAAI,KACd,EAAI,EACR,OAAW,KAAK,GACd,AAAI,EAAE,WAAa,KAAO,EAAE,WAAa,KACvC,EAAK,GAAS,EAAI,EAAG,GAClB,AAAI,EAAE,WAAa,KAAO,EAAE,WAAa,KAC5C,EAAK,GAAQ,EAAI,EAAG,GAEpB,EAAM,IAAI,EAAE,QAGhB,GAAI,EAAM,KAAO,EACf,MAAO,MAET,GAAI,GACJ,GAAI,GAAM,GAER,GADA,EAAW,GAAQ,EAAG,OAAQ,EAAG,OAAQ,GACrC,EAAW,EACb,MAAO,MACJ,GAAI,IAAa,GAAM,GAAG,WAAa,MAAQ,EAAG,WAAa,MAClE,MAAO,MAIX,OAAW,KAAM,IAIf,GAHI,GAAM,CAAC,GAAU,EAAI,OAAO,GAAK,IAGjC,GAAM,CAAC,GAAU,EAAI,OAAO,GAAK,GACnC,MAAO,MAET,OAAW,KAAK,GACd,GAAI,CAAC,GAAU,EAAI,OAAO,GAAI,GAC5B,MAAO,GAGX,MAAO,GAGT,GAAI,GAAQ,EACR,EAAU,EACd,OAAW,KAAK,IAGd,GAFA,EAAW,GAAY,EAAE,WAAa,KAAO,EAAE,WAAa,KAC5D,EAAW,GAAY,EAAE,WAAa,KAAO,EAAE,WAAa,KACxD,GACF,GAAI,EAAE,WAAa,KAAO,EAAE,WAAa,MAEvC,GADA,EAAS,GAAS,EAAI,EAAG,GACrB,IAAW,GAAK,IAAW,EAC7B,MAAO,WACA,EAAG,WAAa,MAAQ,CAAC,GAAU,EAAG,OAAQ,OAAO,GAAI,GAClE,MAAO,GAEX,GAAI,GACF,GAAI,EAAE,WAAa,KAAO,EAAE,WAAa,MAEvC,GADA,EAAQ,GAAQ,EAAI,EAAG,GACnB,IAAU,GAAK,IAAU,EAC3B,MAAO,WACA,EAAG,WAAa,MAAQ,CAAC,GAAU,EAAG,OAAQ,OAAO,GAAI,GAClE,MAAO,GAEX,GAAI,CAAC,EAAE,UAAa,IAAM,IAAO,IAAa,EAC5C,MAAO,GASX,MAHI,KAAM,GAAY,CAAC,GAAM,IAAa,GAGtC,GAAM,GAAY,CAAC,GAAM,IAAa,IAOtC,GAAW,CAAC,EAAG,EAAG,KACtB,GAAI,CAAC,EACH,MAAO,GACT,GAAM,GAAO,GAAQ,EAAE,OAAQ,EAAE,OAAQ,GACzC,MAAO,GAAO,EAAI,EACd,EAAO,GACP,EAAE,WAAa,KAAO,EAAE,WAAa,KAD1B,EAEX,GAIA,GAAU,CAAC,EAAG,EAAG,KACrB,GAAI,CAAC,EACH,MAAO,GACT,GAAM,GAAO,GAAQ,EAAE,OAAQ,EAAE,OAAQ,GACzC,MAAO,GAAO,EAAI,EACd,EAAO,GACP,EAAE,WAAa,KAAO,EAAE,WAAa,KAD1B,EAEX,GAGN,GAAO,QAAU,KCjKjB,mBACA,GAAM,IAAqB,KAC3B,GAAO,QAAU,CACf,GAAI,GAAW,GACf,IAAK,GAAW,IAChB,OAAQ,GAAW,EACnB,oBAAqB,AAAQ,KAAwB,oBACrD,OAAgB,KAChB,mBAAoB,AAAQ,KAA0B,mBACtD,oBAAqB,AAAQ,KAA0B,oBACvD,MAAe,KACf,MAAe,KACf,MAAe,KACf,IAAa,KACb,KAAc,KACd,MAAe,KACf,MAAe,KACf,MAAe,KACf,WAAoB,KACpB,QAAiB,KACjB,SAAkB,KAClB,aAAsB,KACtB,aAAsB,KACtB,KAAc,KACd,MAAe,KACf,GAAY,KACZ,GAAY,KACZ,GAAY,KACZ,IAAa,KACb,IAAa,KACb,IAAa,KACb,IAAa,KACb,OAAgB,KAChB,WAAoB,KACpB,MAAe,KACf,UAAmB,KACnB,cAAuB,KACvB,cAAuB,KACvB,cAAuB,KACvB,WAAoB,KACpB,WAAoB,KACpB,QAAiB,KACjB,IAAa,KACb,IAAa,KACb,WAAoB,KACpB,cAAuB,KACvB,OAAgB,QC9ClB,gCAEA,GAAI,IAAW,GAAO,QAAU,CAC9B,OAAQ,CAGN,UAAa,CAAE,MAAO,OAAQ,UAAW,YAAa,MAAO,SAC7D,OAAU,aACV,SAAY,OACZ,aAAgB,gFAChB,aAAgB,2CAChB,YAAe,0DACf,gBAAmB,kEAErB,UAAW,CACT,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,gBACV,SAAY,MACZ,gBAAmB,6DAErB,OAAQ,CACN,UAAa,CAAE,UAAW,YAAa,MAAO,SAC9C,OAAU,aACV,SAAY,OACZ,aAAgB,2CAChB,cAAiB,oEACjB,gBAAmB,+EACnB,UAAa,yFAEf,KAAM,CACJ,UAAa,CAAE,MAAO,UAAW,YAAa,MAAO,SACrD,OAAU,kBACV,UAAa,gDACb,aAAgB,8EAChB,aAAgB,6BAChB,YAAe,4CACf,YAAe,2CACf,eAAkB,oDAClB,eAAkB,0CAClB,mBAAsB,iDACtB,aAAgB,0CAChB,cAAiB,kDACjB,iBAAoB,gCACpB,aAAgB,yBAChB,gBAAmB,iEACnB,WAAc,SAAU,GACtB,MAAO,QAAU,GAAmB,MAKtC,GAAkB,CACpB,YAAe,iDACf,eAAkB,2DAClB,eAAkB,sDAClB,mBAAsB,8EACtB,aAAgB,6DAChB,cAAiB,gEACjB,aAAgB,4DAChB,iBAAoB,uCACpB,aAAgB,gCAChB,UAAa,yCACb,WAAc,IAGhB,OAAO,KAAK,IAAU,QAAQ,SAAU,GACtC,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAC7C,AAAI,GAAS,GAAM,IACnB,IAAS,GAAM,GAAO,GAAgB,MAExC,GAAS,GAAM,aAAe,OAAO,KACnC,GAAS,GAAM,UAAU,IAAI,SAAU,GACrC,MAAO,GAAS,QAAQ,sBAAuB,UAC9C,KAAK,KAAO,SAGnB,YAA6B,GAC3B,MAAO,GAAS,cAAc,QAAQ,gBAAiB,IAAI,QAAQ,OAAQ,QC7E7E,gCACA,GAAI,IAAmB,KAMnB,GAAS,OAAO,QAAU,SAAkB,EAAQ,GAEtD,GAAI,IAAW,MAAQ,MAAO,IAAW,SAAU,MAAO,GAE1D,GAAM,GAAO,OAAO,KAAK,GACrB,EAAI,EAAK,OACb,KAAO,KACL,EAAO,EAAK,IAAM,EAAO,EAAK,IAEhC,MAAO,IAGT,GAAO,QAAU,GACjB,YAAkB,EAAM,EAAM,EAAM,EAAS,EAAY,EAAuB,GAC9E,GAAI,GAAc,KAClB,EAAY,KAAO,EACnB,OAAO,KAAK,GAAS,IAAO,QAAQ,SAAU,GAC5C,EAAY,GAAO,GAAS,GAAM,KAEpC,EAAY,KAAO,EACnB,EAAY,KAAO,EACnB,EAAY,QAAU,EACtB,EAAY,WAAa,EACzB,EAAY,QAAU,EACtB,EAAY,KAAO,GAAQ,GAG7B,GAAQ,UAAU,KAAO,WACvB,MAAO,MAAK,WAAa,IAAM,KAAK,WAAa,IAGnD,GAAQ,UAAU,MAAQ,SAAU,EAAU,GAC5C,GAAI,EAAC,GACL,GAAI,GAAO,GAAO,GAAI,GACtB,EAAK,KAAO,EAAK,KAAO,EAAK,KAAK,QAAQ,SAAU,IAAM,GAC1D,EAAO,GAAO,GAAO,GAAI,KAAK,MAAO,GACrC,GAAI,GAAO,KACX,OAAO,KAAK,MAAM,QAAQ,SAAU,GAClC,AAAI,EAAK,IAAQ,MAAQ,EAAK,IAAQ,MAAM,GAAK,GAAO,EAAK,MAE/D,GAAI,GAAU,EAAK,KACf,EAAgB,EAAK,WACrB,EAAc,EAAK,SACnB,EAAU,EAAK,KACf,EAAa,EAAK,QACtB,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,GAAI,GAAQ,EAAK,GACjB,AAAK,KAAQ,QAAU,IAAQ,YAAc,MAAO,IAAU,SAC5D,EAAK,GAAO,EAAM,MAAM,KAAK,IAAI,SAAU,GACzC,MAAO,oBAAmB,KACzB,KAAK,KACC,IAAQ,UACjB,GAAK,GAAO,mBAAmB,MAGnC,EAAK,SAAW,EAAU,EAAU,IAAM,GAC1C,EAAK,aAAe,EAAc,IAAM,KAAK,WAAW,GAAe,GACvE,EAAK,SAAW,EAAK,SAAW,EAAK,SAAW,GAChD,EAAK,SAAW,EAAU,IAAM,KAAK,WAAW,GAAW,GAC3D,EAAK,SAAW,EAAK,KAAO,IAAM,EAAK,KAAO,GAC9C,EAAK,YAAc,EAAW,MAAM,KAAK,IAAI,oBAAoB,KAAK,KACtE,AAAI,EAAK,aACP,GAAK,eAAiB,GACtB,EAAK,oBAAsB,GAC3B,EAAK,eAAiB,GACtB,EAAK,WAAa,IAElB,GAAK,eAAiB,EAAgB,IAAM,EAAgB,GAC5D,EAAK,oBAAsB,EAAK,WAC5B,IAAM,EAAK,SAAW,IAAM,EAAK,WACjC,GACJ,EAAK,eAAiB,EAAK,WAAa,IAAM,EAAK,WAAa,GAChE,EAAK,WAAa,EAAK,YAAc,UAEvC,GAAI,GAAM,EAIV,MAHA,QAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,EAAM,EAAI,QAAQ,GAAI,QAAO,MAAQ,EAAM,MAAO,KAAM,EAAK,MAE3D,EAAK,UACA,EAAI,QAAQ,UAAW,IAEvB,IAIX,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,OAAS,SAAU,GACnC,MAAO,MAAK,MAAM,KAAK,eAAgB,IAGzC,GAAQ,UAAU,OAAS,SAAU,EAAG,EAAG,GACzC,MAAI,OAAO,IAAM,SACX,OAAO,IAAM,UACf,GAAO,EACP,EAAI,MAEC,KAAK,MAAM,KAAK,mBAAoB,GAAO,CAChD,SAAU,EACV,KAAM,GACL,KAEI,KAAK,MAAM,KAAK,eAAgB,IAI3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,MAAQ,SAAU,GAClC,MAAO,MAAK,MAAM,KAAK,cAAe,IAGxC,GAAQ,UAAU,IAAM,SAAU,GAChC,MAAO,MAAK,MAAM,KAAK,YAAa,IAGtC,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAO,MAAK,MAAM,KAAK,iBAAkB,IAG3C,GAAQ,UAAU,KAAO,SAAU,GACjC,MAAO,MAAK,MAAM,KAAK,aAAc,IAGvC,GAAQ,UAAU,QAAU,SAAU,GACpC,GAAI,GAAO,GAAO,GAAI,EAAO,CAAE,aAAc,KAC7C,MAAO,MAAK,MAAM,KAAK,gBAAiB,IAG1C,GAAQ,UAAU,KAAO,SAAU,EAAG,GACpC,MAAO,MAAK,MAAM,KAAK,aAAc,GAAO,CAAE,KAAM,GAAK,KAG3D,GAAQ,UAAU,yBAA2B,WAC3C,MAAO,MAAK,SAGd,GAAQ,UAAU,SAAW,SAAU,GACrC,MAAI,MAAK,SAAW,MAAO,MAAK,KAAK,UAAa,WAAmB,KAAK,KAAK,SAAS,GACjF,KAAK,OAAO,MC1JrB,gCACA,GAAI,IAAc,eACd,GAAmB,KACnB,GAAU,GAAO,QAAkB,KACnC,GAAc,KACd,GAAQ,GAAI,IAAI,CAAC,IAAK,MAEtB,GAA8B,CAChC,WAAY,SACZ,aAAc,QACd,OAAQ,SACR,OAAQ,OAGV,YAAmC,GACjC,MAAO,IAA4B,IAAa,EAAS,MAAM,EAAG,IAGpE,GAAI,IAAgB,CAClB,OAAQ,GACR,SAAU,GACV,aAAc,GACd,QAAS,GACT,YAAa,IAGf,GAAO,QAAQ,QAAU,SAAU,EAAQ,GACzC,GAAI,MAAO,IAAW,UACtB,GAAI,GAAM,EAAS,KAAK,UAAU,GAAQ,IAE1C,MAAK,IAAM,IAAI,IACb,GAAM,IAAI,EAAK,GAAQ,EAAQ,IAG1B,GAAM,IAAI,KAGnB,YAAkB,EAAQ,GACxB,GAAI,KAAU,MAAQ,IAAW,KACjC,GAAI,GAAM,GACR,GAAkB,GAAU,UAAY,EAAS,GAE/C,EAAS,GAAY,GACrB,EAAgB,EAAI,MAAM,6CAC1B,EAAU,OAAO,KAAK,IAAU,IAAI,SAAU,GAChD,IACE,GAAI,GAAc,GAAS,GACvB,EAAO,KACX,AAAI,EAAO,MAAQ,GAAc,EAAO,WACtC,GAAO,EAAO,MAEhB,GAAI,GAAa,EAAO,KAAO,mBAAmB,EAAO,KAAK,OAAO,IAAM,KACvE,EAAO,KACP,EAAU,KACV,EAAwB,KAC5B,GAAI,GAAiB,EAAc,KAAO,EACxC,EAAO,EAAc,IAAM,mBAAmB,EAAc,IAC5D,EAAU,mBAAmB,EAAc,GAAG,QAAQ,SAAU,KAChE,EAAwB,gBAIxB,GAFI,EAAO,MAAQ,EAAO,OAAS,EAAY,QAAU,EAAO,KAAK,QAAQ,UAAW,MAAQ,EAAY,QACxG,CAAC,EAAY,aAAa,KAAK,EAAO,WACtC,CAAC,EAAO,KAAM,OAClB,GAAI,GAAY,EAAY,UACxB,EAAU,EAAO,KAAK,MAAM,GAChC,GAAI,CAAC,EAAS,OAEd,AAAI,EAAQ,KAAO,MAAQ,EAAQ,KAAO,QACxC,GAAO,mBAAmB,EAAQ,GAAG,QAAQ,KAAM,MAErD,EAAU,mBAAmB,EAAQ,IACrC,EAAwB,GAAyB,EAAO,UAE1D,MAAO,IAAI,IAAQ,EAAa,EAAM,EAAM,EAAS,EAAY,EAAuB,SACjF,GAEP,GAAI,cAAc,WACX,KAAM,MAEd,OAAO,SAAU,GAAe,MAAO,KAC1C,GAAI,EAAQ,SAAW,EACvB,MAAO,GAAQ,IAGjB,YAA4B,GAS1B,MAAO,+CAA+C,KAAK,GAG7D,YAA+B,GAE7B,GAAI,GAAS,GAAI,MAAM,GACvB,MAAI,GAAO,WAAa,SAAW,EAAO,MAAQ,CAAC,EAAO,KACjD,EAAO,SAAW,IAAM,EAAO,KAE/B,EAIX,YAAsB,GACpB,GAAI,GAAU,EAAO,MAAM,iEAC3B,GAAI,CAAC,GACH,GAAI,GAAS,GAAI,MAAM,GACvB,GAAI,EAAO,MAUT,GAAM,GAAY,EAAO,MAAM,gBAE/B,GAAI,GACF,GAAI,GAAS,GAAI,IAAI,IAAI,EAAU,IACnC,EAAO,KAAO,EAAO,UAAY,GAC7B,EAAO,UAAU,GAAO,MAAQ,IAAM,EAAO,WAGrD,MAAO,GAET,MAAO,CACL,SAAU,WACV,QAAS,GACT,KAAM,EAAQ,GACd,KAAM,EAAQ,GACd,KAAM,KACN,SAAU,EAAQ,GAClB,KAAM,EAAQ,GACd,OAAQ,KACR,MAAO,KACP,SAAU,IAAM,EAAQ,GACxB,KAAM,IAAM,EAAQ,GACpB,KAAM,aAAe,EAAQ,GAAK,IAAM,EAAQ,GAC1C,IAAM,EAAQ,GAAM,GAAQ,IAAM,QC/I5C,sBAAO,QAAU,GAGjB,YAA6B,GAC3B,GAAI,EAAC,GACD,IAAM,gCAGV,EAAI,EAAE,OAAO,MAAM;AAAA,GACnB,OAAS,GAAI,EAAG,EAAE,IAAM,EAAE,GAAG,OAAO,MAAM,UAAW,IAAK,CAE1D,OADI,GAAI,EAAE,OACD,EAAI,EAAI,EAAG,EAAI,GAAK,EAAE,GAAG,OAAQ,IAAK,CAC/C,MAAO,GAAE,MAAM,EAAG,GAAG,KAAK,KAAK,0mBCZjC,sBAAI,IAAiB,KACjB,GAA0B,KAC1B,GAAwB,KACxB,GAAkB,AAAQ,KAAW,OACrC,GAAW,CAAC,eAAe,kBAAkB,wBAC7C,GAA6B,KAC7B,GAAc,eACd,GAAgB,KAEhB,GAAQ,GAAO,QAAU,CAE3B,KAAM,aAEN,mBAAoB,SAAS,GAK3B,GAJI,EAAK,cACP,MAAK,KAAK,gBACV,EAAK,WAAa,EAAK,aAAa,IAElC,CAAC,EAAK,WAAY,MAAO,MAAK,KAAK,qBACvC,AAAI,MAAO,GAAK,YAAe,UAC7B,GAAK,WAAa,CAChB,KAAM,MACN,IAAK,EAAK,aAGd,GAAI,GAAI,EAAK,WAAW,KAAO,GAC/B,GAAI,GACF,GAAI,GAAS,GAAc,QAAQ,GACnC,AAAI,GACF,GAAI,EAAK,WAAW,IAChB,EAAO,4BAA8B,WAAa,EAAO,QAAU,EAAO,YAIlF,AAAI,EAAE,MAAM,0CACV,KAAK,KAAK,eAAgB,IAI9B,SAAU,SAAS,GACjB,OAAO,KAAK,GAAM,UAAU,QAAQ,SAAU,GAC5C,AAAI,EAAK,eAAe,IACtB,KAAK,KAAK,OAAQ,EAAG,GAAM,SAAS,KAErC,OAGL,gBAAiB,SAAS,GACxB,GAAI,EAAC,EAAK,SACV,GAAI,MAAO,GAAK,SAAY,UAC1B,KAAK,KAAK,oBACV,MAAO,GAAK,QACZ,OAEF,OAAO,KAAK,EAAK,SAAS,QAAQ,SAAU,GAC1C,AAAI,MAAO,GAAK,QAAQ,IAAO,SAC7B,MAAK,KAAK,mBACV,MAAO,GAAK,QAAQ,IACX,GAAM,OAAO,IAAM,CAAC,EAAK,QAAQ,GAAM,OAAO,KACvD,KAAK,KAAK,OAAQ,EAAG,GAAM,OAAO,GAAI,YAEvC,QAGL,cAAe,SAAS,GACtB,GAAI,GAAQ,EAAK,MACjB,AAAI,GAAS,CAAC,MAAM,QAAQ,GAC1B,MAAK,KAAK,iBACV,MAAO,GAAK,OACH,EAAK,OACd,GAAK,MAAQ,EAAK,MAAM,OAAO,SAAS,GACtC,MAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,MAAK,KAAK,kBAAmB,GACtB,IAEA,IAER,QAIP,YAAa,SAAS,GACpB,GAAI,EAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAI,GAAI,GACJ,EACJ,AAAI,GAAQ,EAAK,KAAK,MAAM,oBAC1B,EAAE,EAAM,IAAM,EAAK,IAEnB,EAAE,EAAK,MAAQ,EAAK,IAEtB,EAAK,IAAM,IAIf,YAAa,SAAS,GACpB,AAAI,CAAC,EAAK,KACN,MAAO,GAAK,KAAQ,UACtB,GAAK,IAAM,CAAE,EAAK,OAGtB,2BAA4B,SAAS,GACnC,GAAI,GAAM,sBACN,EAAK,qBACT,AAAI,EAAK,IAAQ,CAAC,EAAK,IACrB,GAAK,GAAM,EAAK,GAChB,MAAO,GAAK,IAEd,AAAI,EAAK,IAAO,CAAC,MAAM,QAAQ,EAAK,IAClC,MAAK,KAAK,8BACV,MAAO,GAAK,IACH,EAAK,IACd,GAAK,GAAM,EAAK,GAAI,OAAO,SAAS,GAClC,MAAI,CAAC,GAAM,MAAO,IAAO,SACvB,MAAK,KAAK,4BAA6B,GAChC,IAEF,GAAK,cACR,GAAK,aAAe,IAEjB,EAAK,aAAa,eAAe,IACpC,MAAK,KAAK,gCAAiC,GAC3C,EAAK,aAAa,GAAM,KAEnB,KAER,QAIP,gBAAiB,SAAS,EAAM,GAC9B,GAAI,GAAQ,CAAC,EACb,GAAc,EAAM,KAAK,MACzB,GAAsB,EAAM,KAAK,MACjC,KAAK,2BAA2B,GAE/B,CAAC,eAAe,mBAAmB,QAAQ,SAAS,GACnD,GAAM,IAAQ,IACd,GAAI,CAAC,EAAK,IAAS,MAAO,GAAK,IAAU,UACvC,KAAK,KAAK,wBAAyB,GACnC,MAAO,GAAK,GACZ,OAEF,OAAO,KAAK,EAAK,IAAO,QAAQ,SAAU,GACxC,GAAI,GAAI,EAAK,GAAM,GACnB,AAAI,MAAO,IAAM,UACf,MAAK,KAAK,sBAAuB,EAAG,KAAK,UAAU,IACnD,MAAO,GAAK,GAAM,IAEpB,GAAI,GAAS,GAAc,QAAQ,EAAK,GAAM,IAC9C,AAAI,GAAQ,GAAK,GAAM,GAAK,EAAO,aAClC,QACF,OAGL,gBAAiB,SAAU,GACzB,AAAI,EAAK,SACP,MAAK,KAAK,qBACV,MAAO,GAAK,UAIhB,iBAAkB,SAAU,GAC1B,AAAI,MAAO,GAAK,UAAa,UAC3B,GAAK,SAAW,EAAK,SAAS,MAAM,SAEtC,AAAI,EAAK,UAAY,CAAC,MAAM,QAAQ,EAAK,UACvC,OAAO,GAAK,SACZ,KAAK,KAAK,qBACD,EAAK,UACd,GAAK,SAAW,EAAK,SAAS,OAAO,SAAS,GAC5C,MAAI,OAAO,IAAO,UAAY,CAAC,EAC7B,MAAK,KAAK,oBACH,IAEA,IAER,QAIP,gBAAiB,SAAS,EAAM,GAG9B,GAAI,GAAQ,CAAC,EACb,GAAI,CAAC,EAAK,QACR,SAAK,QAAU,GACR,GAET,GAAI,CAAC,GAAO,MAAM,EAAK,QAAS,GAC9B,KAAM,IAAI,OAAM,qBAAsB,EAAK,QAAU,KAEvD,SAAK,QAAU,GAAO,MAAM,EAAK,QAAS,GACnC,IAGT,UAAW,SAAS,GAClB,GAAa,EAAM,IACnB,GAAa,EAAM,KAGrB,aAAc,SAAS,EAAM,GAC3B,AAAI,MAAO,IAAY,UAAW,EAAU,CAAC,OAAQ,GAC5C,MAAO,IAAY,aAAa,GAAU,IACnD,GAAI,GAAS,EAAQ,OACrB,GAAI,CAAC,EAAK,MAAQ,CAAC,GACjB,EAAK,KAAO,GACZ,OAEF,GAAI,MAAO,GAAK,MAAS,SACvB,KAAM,IAAI,OAAM,gCAElB,AAAK,GACH,GAAK,KAAO,EAAK,KAAK,QACxB,GAAgB,EAAK,KAAM,EAAQ,EAAQ,iBACvC,GAAgB,EAAK,OACvB,KAAK,KAAK,kBAAmB,EAAK,OAItC,oBAAqB,SAAU,GAC7B,AAAI,EAAK,aAAe,MAAO,GAAK,aAAgB,UAClD,MAAK,KAAK,wBACV,MAAO,GAAK,aAEV,EAAK,QAAU,CAAC,EAAK,aACvB,GAAK,YAAc,GAAmB,EAAK,SACxC,EAAK,cAAgB,QAAW,MAAO,GAAK,YAC5C,EAAK,aAAa,KAAK,KAAK,uBAGnC,eAAgB,SAAU,GACxB,AAAK,EAAK,QACR,MAAK,KAAK,iBACV,EAAK,OAAS,iCAIlB,aAAc,SAAS,GACrB,GAAI,CAAC,EAAK,MAAQ,EAAK,YAAc,EAAK,WAAW,KACnD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAG,GAAU,EAAO,QAClB,GAAK,KAAO,CAAC,IAAK,EAAO,iBAGrB,EAAK,MACX,GAAI,GAAU,cACd,GAAG,MAAO,GAAK,MAAQ,SACrB,AAAG,EAAQ,KAAK,EAAK,MACnB,EAAK,KAAO,CAAC,MAAM,EAAK,MACrB,AAAG,GAAI,MAAM,EAAK,MAAM,SAC3B,EAAK,KAAO,CAAC,IAAK,EAAK,MAEvB,KAAK,KAAK,8BAGZ,GAAU,EAAK,KAAM,KAAK,MAC1B,GAAI,GAAU,EAAK,KACnB,EAAK,KAAO,GACT,EAAQ,KACT,CAAG,MAAO,GAAQ,KAAQ,UAAY,GAAI,MAAM,EAAQ,KAAK,SAC3D,EAAK,KAAK,IAAM,EAAQ,IAExB,KAAK,KAAK,uBAEX,EAAQ,OACT,CAAG,MAAO,GAAQ,OAAU,UAAY,EAAQ,KAAK,EAAQ,OAC3D,EAAK,KAAK,MAAQ,EAAQ,MAE1B,KAAK,KAAK,2BAGhB,AAAG,CAAC,EAAK,KAAK,OAAS,CAAC,EAAK,KAAK,KAChC,OAAO,GAAK,KACZ,KAAK,KAAK,0BAKhB,iBAAkB,SAAS,GACzB,GAAI,CAAC,EAAK,UAAY,EAAK,YAAc,EAAK,WAAW,KACvD,GAAI,GAAS,GAAc,QAAQ,EAAK,WAAW,KACnD,AAAI,GAAU,EAAO,QAAQ,GAAK,SAAW,EAAO,QAEtD,GAAI,EAAC,EAAK,UAEV,GAAG,MAAO,GAAK,UAAa,SAC1B,YAAK,KAAK,kBACH,MAAO,GAAK,SAErB,AAAI,GAAI,MAAM,EAAK,UAAU,UAC3B,GAAK,SAAW,UAAY,EAAK,YAIrC,gBAAiB,SAAS,GACxB,GAAK,EAAK,QAGR,AACE,MAAO,GAAK,SAAa,UACzB,EAAK,QAAQ,OAAS,GACtB,EAAK,QAAQ,SAAW,GAExB,KAAK,KAAK,kBAEL,GAAgB,EAAK,SAAS,qBACjC,KAAK,KAAK,sBAVd,OAAO,MAAK,KAAK,oBAgBvB,YAAkC,GAChC,GAAI,EAAK,OAAO,KAAO,IAAK,MAAO,GAEnC,GAAI,GAAO,EAAK,MAAM,GAAG,MAAM,KAC/B,MAAI,GAAK,SAAW,EAAU,GAEvB,EAAK,IAAM,EAAK,IACrB,EAAK,KAAO,mBAAmB,EAAK,KACpC,EAAK,KAAO,mBAAmB,EAAK,IAGxC,YAAgC,GAC9B,MAAO,CAAC,EAAK,MAAM,gBACjB,IAAS,mBAAmB,GAGhC,YAA0B,EAAM,EAAQ,GACtC,GAAI,EAAK,OAAO,KAAO,KACnB,CAAE,IAAyB,IAAS,GAAuB,KAC1D,GAAW,CAAC,GAAoB,IAAS,EAAK,eAC/C,EAAK,gBAAkB,gBACvB,EAAK,gBAAkB,cACrB,KAAM,IAAI,OAAM,iBAAmB,KAAK,UAAU,IAI1D,YAAuB,EAAM,GAC3B,MAAI,GAAK,QAAQ,GAAK,OAAS,EAAG,EAAK,SACtC,CAAC,cAAe,gBAAgB,QAAQ,SAAU,GACjD,AAAI,CAAC,MAAM,QAAQ,EAAK,KACxB,GAAK,GAAO,EAAK,GAAK,IAAI,MAErB,EAGT,YAAwB,GACtB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAQ,GACtB,EAAI,EAAO,KAAO,EAAO,IACzB,EAAM,EAAK,KAAK,EAAE,IAAO,GACzB,EAAI,EAAO,OAAS,EAAO,KAC3B,EAAQ,EAAK,KAAK,EAAE,IAAO,GAC/B,MAAO,GAAK,EAAM,EAGpB,YAAsB,GACpB,GAAI,MAAO,IAAW,SAAU,MAAO,GACvC,GAAI,GAAO,EAAO,MAAM,cACpB,EAAM,EAAO,MAAM,gBACnB,EAAQ,EAAO,MAAM,aACrB,EAAM,GACV,MAAI,IAAQ,EAAK,GAAG,QAAQ,GAAI,KAAO,EAAK,GAAG,QAC3C,GAAO,GAAI,MAAQ,EAAM,IACzB,GAAK,GAAI,IAAM,EAAI,IAChB,EAGT,YAAgC,EAAM,GACpC,GAAI,GAAI,EAAK,qBACb,GAAI,EAAC,GACL,GAAI,GAAI,EAAK,cAAgB,GAC7B,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,EAAK,aAAe,GAGtB,YAAuB,EAAM,EAAM,GACjC,GAAI,CAAC,EAAM,MAAO,GAIlB,GAHI,MAAO,IAAS,UAClB,GAAO,EAAK,OAAO,MAAM,kBAEvB,CAAC,MAAM,QAAQ,GAAO,MAAO,GACjC,EAAK,8BAA+B,GACpC,GAAI,GAAI,GACR,SAAK,OAAO,SAAU,GACpB,MAAO,OAAO,IAAM,WACnB,QAAQ,SAAS,GAClB,EAAI,EAAE,OAAO,MAAM,gBACnB,GAAI,GAAK,EAAE,QACP,EAAK,EAAE,KAAK,IAChB,EAAK,EAAG,OACR,EAAK,EAAG,QAAQ,KAAM,IACtB,EAAE,GAAM,IAEH,EAGT,YAAwB,EAAM,GAC5B,GAAS,QAAQ,SAAU,GACzB,AAAI,CAAC,EAAK,IACV,GAAK,GAAQ,GAAa,EAAK,GAAO,EAAM,MAIhD,YAAmB,EAAM,GACvB,AAAI,CAAC,GACL,OAAO,KAAK,GAAM,QAAQ,SAAU,GAClC,AAAI,GAAM,KAAK,IACb,GAAK,OAAQ,EAAG,GAAM,KAAK,GAAI,QAC/B,EAAK,GAAM,KAAK,IAAM,EAAK,GAC3B,MAAO,GAAK,soDC9ZlB,sBAAI,IAAe,gBACf,GAAmB,KAEvB,GAAO,QAAU,WACf,GAAI,GAAO,MAAM,UAAU,MAAM,KAAK,UAAW,GAC7C,EAAc,EAAK,QACvB,GAAI,GAAe,OACjB,MAAO,IAAgB,MAAM,KAAK,GAGlC,GAAI,GAAc,GAAS,GAAe,GAAS,GAAe,EAAc,SAChF,SAAK,QAAQ,GACN,GAAK,OAAO,MAAM,KAAM,IAInC,YAA0B,EAAc,EAAc,GACpD,MAAI,IACF,GAAe,EAAQ,KAAO,EAAe,KAC7C,EAAe,EAAQ,KAAO,EAAe,MAExC,GAAK,OAAO,GAAS,KAAM,EAAc,MCrBlD,sBAAO,QAAU,GAEjB,GAAI,IAAgB,KACpB,GAAU,MAAQ,GAElB,GAAI,IAAsB,KAEtB,GAAc,CAAC,OAAO,UAAU,cAAc,aAAa,UAAU,UACtD,QAAQ,MAAM,MAAM,OAAO,WAAW,SAAS,WAAW,WACzE,GAAmB,CAAC,eAAe,SAAU,SAE7C,GAAc,GAAY,IAAI,SAAS,GACzC,MAAO,IAAQ,GAAa,UAK9B,GAAc,GAAY,OAAO,IAEjC,YAAoB,EAAM,EAAM,GAC9B,AAAG,IAAS,IAAM,GAAO,KAAM,EAAS,IACpC,GAAQ,GAAS,IAClB,EAAC,GAAQ,EAAK,UAAS,GAAO,SAAS,MAEtC,EAAK,SACL,EAAK,QAAQ,UAAY,oBACzB,CAAC,EAAK,QAAQ,YAChB,GAAK,QAAU,IAEjB,GAAM,KAAO,WAAa,EAAK,GAAY,MAAM,KAAM,aACvD,GAAY,QAAQ,SAAS,GAC3B,GAAM,MAAQ,GAAQ,IAAY,EAAM,KAE1C,EAAK,IAAM,EAAK,KAAO,IAAM,EAAK,QAGpC,YAAkB,GAChB,MAAO,GAAO,OAAO,GAAG,cAAgB,EAAO,MAAM,MCrCvD,gCACA,GAAM,IAAe,gBACf,GAA6B,KAC7B,GAAyB,KACzB,GAAwB,KACxB,GAAqB,KACrB,GAAyB,KACzB,GAAuB,KACvB,GAAiB,KACjB,GAAoB,KACpB,GAAwB,KACxB,GAA+B,KAGrC,MAAO,SAAQ,MAAM,YACrB,GAAM,IAAY,GAAK,QAAQ,GAAO,QAAU,GAAO,OAAO,SAAW,GAAO,OAAO,SAAW,KAE5F,GAAgB,CAAC,EAAU,EAAc,EAAe,KAC7D,GAAM,GAAO,EAAa,GACtB,EAAiB,GAErB,GAAI,MAAO,GAAK,YAAe,YAC9B,GAAiB,EAAK,WAAW,EAAe,GAC5C,MAAO,IAAmB,WAC7B,KAAM,IAAI,WAAU,uEAAuE,MAAO,oBAIpG,MAAI,OAAO,GAAc,IAAc,YAC/B,EAGD,EAAK,YAAc,EAAc,GAAU,SAAW,GAGxD,GAA0B,CAAC,EAAO,EAAe,KACtD,GAAM,GAAuB,GAC7B,GAAI,MAAO,IAAU,YACpB,MAAO,GAGR,OAAW,KAAY,QAAO,KAAK,GAClC,AAAI,EAAM,GAAU,YAAc,GAAc,EAAU,EAAO,EAAe,IAC/E,EAAqB,KAAK,CAAC,IAAK,KAAa,EAAM,KAIrD,MAAO,IAGF,GAA6B,IAClC,QAAQ,MAAM,wBAAwB,EAAqB,OAAS,EAAI,IAAM,MAC9E,OAAW,KAAQ,GAClB,QAAQ,MAAM,MAAO,GAAW,EAAK,IAAK,OAAO,EAAK,MAAQ,MAAM,EAAK,QAAU,OAI/E,GAAkB,CAAC,CAAC,YACzB,GAAM,GAAe,OAAO,KAAK,GAAO,OAAO,GAAW,EAAQ,SAAS,MAAQ,IAAY,MAC/F,GAAI,EAAa,OAAS,EACzB,KAAM,IAAI,OAAM,kCAAkC,EAAa,KAAK,UAIhE,GAAqB,IAC1B,QAAQ,MAAM,CACb,eAAe,EAAa,OAAS,EAAI,IAAM,KAC/C,GAAG,GACF,KAAK;AAAA,KAGF,GAAmB,CAAC,CAAC,QAAO,qBACjC,GAAM,GAAc,GAEpB,OAAW,CAAC,EAAS,IAAc,QAAO,QAAQ,IACjD,GAAM,GAAO,IAAI,GAEjB,AACC,MAAO,IAAmB,aAC1B,EAAK,OAAS,WACd,CAAC,OAAO,UAAU,eAAe,KAAK,EAAM,YAE5C,GAAK,QAAU,EAAK,WAAa,CAAC,GAAkB,GAGjD,EAAK,YACR,GAAK,KAAO,EAAK,KAAO,GAAG,EAAK,aAAe,QAC/C,EAAK,QAAU,EAAK,SAAW,GAC/B,MAAO,GAAK,YAGb,EAAY,GAAW,EAGxB,MAAO,IAGF,GAAgB,CAAC,EAAO,KAC7B,OAAW,CAAC,EAAS,IAAc,QAAO,QAAQ,EAAQ,OACzD,GAAI,IAAY,MAAQ,CAAC,EAAU,YAAc,MAAM,QAAQ,EAAM,IACpE,KAAM,IAAI,OAAM,cAAc,4BAK3B,GAAO,CAAC,EAAU,KACvB,AAAI,MAAO,IAAa,UACvB,GAAU,EACV,EAAW,IAGZ,GAAM,GAAW,GAAU,KAAK,CAC/B,IAAK,GACL,UAAW,KAGZ,EAAU,CACT,IAAK,EAAW,EAAS,YAAc,GACvC,KAAM,QAAQ,KAAK,MAAM,GACzB,MAAO,GACP,UAAW,GACX,MAAO,SACP,KAAM,EACN,SAAU,GACV,YAAa,GACb,eAAgB,GAChB,cAAe,GACf,kBAAmB,MAChB,GAGA,EAAQ,eACX,KAGD,GAAgB,GAChB,GAAI,GAAgB,CACnB,UAAW,EAAQ,SAChB,GAAiB,IAGrB,EAAgB,GAAe,EAAe,IAAK,CAAC,QAAS,CAAC,YAAa,QAEvE,EAAQ,WACX,MAAO,GAAc,UAGtB,EAAgB,GAAmB,GAEnC,EAAc,cAAgB,IAC1B,EAAc,cACjB,gBAAiB,IAGd,EAAc,OACjB,GAAc,cAAc,cAAgB,IAGxC,EAAQ,mBAEZ,GAAc,cAAc,2BAA6B,IAG1D,GAAM,CAAC,OAAO,EACR,EAAO,GAAe,EAAQ,KAAM,GACtC,EAAO,GAAO,GAAc,GAAQ,MAAQ,IAAI,QAAQ,UAAW,KAAM,GAE7E,GAAqB,GAErB,QAAQ,MAAQ,EAAI,IAAM,OAAO,KAAK,EAAI,KAAK,GAAK,EAAI,KAExD,GAAI,CAAC,eAAe,EACpB,AAAI,CAAC,GAAe,IAAgB,IAClC,EAAC,eAAe,GAGlB,EAAQ,GAAc;AAAA,IAAO;AAAA,EAAkB,IAAO,GAAO;AAAA,EAAK;AAAA,EAAW;AAAA,GAE7E,GAAM,GAAW,IAChB,QAAQ,IAAI,GACZ,QAAQ,KAAK,MAAO,IAAS,SAAW,EAAO,IAG1C,EAAc,KACnB,QAAQ,IAAI,MAAO,GAAQ,SAAY,SAAW,EAAQ,QAAU,EAAI,SACxE,QAAQ,KAAK,IAGd,AAAI,EAAK,EAAE,SAAW,GAAK,EAAQ,KAAK,SAAW,GAC9C,GAAK,UAAY,IAAQ,EAAQ,aACpC,IAGG,EAAK,OAAS,IAAQ,EAAQ,UACjC,EAAS,IAIX,GAAM,GAAQ,EAAK,EAGnB,GAFA,MAAO,GAAK,EAER,CAAC,EAAQ,mBACZ,GAAM,GAAe,EAAM,OAAO,GAAQ,MAAO,IAAS,UAAY,EAAK,WAAW,MACtF,AAAI,EAAa,OAAS,GACzB,IAAmB,GACnB,QAAQ,KAAK,IAIf,GAAM,GAAQ,GAAc,EAAM,CAAC,QAAS,CAAC,KAAM,UAC7C,EAAoB,IAAI,GAE9B,GAAc,EAAO,GAErB,OAAW,KAAa,QAAO,OAAO,EAAQ,OAC7C,MAAO,GAAM,EAAU,OAGxB,GAAM,GAAuB,GAAwB,EAAQ,MAAO,EAAO,GAC3E,MAAI,GAAqB,OAAS,GACjC,IAA2B,GAC3B,QAAQ,KAAK,IAGP,CACN,QACA,QACA,oBACA,MACA,OACA,WACA,gBAIF,GAAO,QAAU,KC3OjB,gCAIA,GAAM,IAAS,GAAI,KAAI,CACrB,CAAC,IAAK,OACN,CAAC,IAAK,QACN,CAAC,IAAK,QACN,CAAC,IAAK,iBACN,CAAC,IAAK,UACN,CAAC,mBAAoB,SACrB,CAAC,kBAAmB,SACpB,CAAC,aAAc,SACf,CAAC,YAAa,SACd,CAAC,mBAAoB,SACrB,CAAC,iBAAkB,SACnB,CAAC,IAAK,QACN,CAAC,gBAAiB,QAClB,CAAC,eAAgB,QACjB,CAAC,IAAK,WACN,CAAC,WAAY,WACb,CAAC,IAAK,iBACN,CAAC,IAAK,UACN,CAAC,IAAK,YAGR,GAAO,QAAU,GAAO,EAAM,OAAO,KAAK,GAAK,IAAI,GAAK,CACtD,GAAO,IAAI,GAAK,GAAO,IAAI,GAAK,EAAG,EAAI,KACtC,OAAO,CAAC,EAAK,IAAQ,GAAI,EAAG,IAAM,EAAG,GAAI,GAAM,OAAO,OAAO,OAAS,KC5BzE,gCACA,GAAM,IAAa,kBACb,GAAiB,kBACjB,GAAkB,KAClB,GAAK,AAAQ,0BAAkB,cAE/B,GAAM,OAAO,OACb,GAAiB,OAAO,gBACxB,GAAc,OAAO,cACrB,GAAe,OAAO,eACtB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,GAAe,OAAO,gBACtB,GAAa,OAAO,cACpB,GAAc,OAAO,eACrB,GAAa,OAAO,cACpB,GAAY,OAAO,aAGnB,GAAS,OAAO,2BAA8B,IAC9C,GAAgB,IAAU,OAAO,eAClC,OAAO,iCACN,GAAW,IAAU,OAAO,UAC7B,OAAO,4BAKN,GAAW,GACf,IAAO,OACP,IAAO,UACP,IAAO,YAEH,GAAgB,GAAK,YAAa,cACtC,MAAO,IAAM,UACb,EAAE,aACF,EAAE,YAAY,OAAS,eACvB,EAAE,YAAc,EAEZ,GAAoB,GAAK,CAAC,OAAO,SAAS,IAAM,YAAY,OAAO,GAEzE,GAAO,QAAU,gBAAuB,IACtC,YAAa,GACX,QACA,KAAK,IAAW,GAEhB,KAAK,IAAU,GACf,KAAK,MAAQ,GAAI,IACjB,KAAK,OAAS,GAAI,IAClB,KAAK,IAAc,GAAW,EAAQ,YAAc,GACpD,AAAI,KAAK,IACP,KAAK,IAAY,KAEjB,KAAK,IAAY,GAAW,EAAQ,UAAY,KAC9C,KAAK,MAAc,UACrB,MAAK,IAAY,MACnB,KAAK,IAAW,KAAK,IAAY,GAAI,IAAG,KAAK,KAAa,KAC1D,KAAK,IAAO,GACZ,KAAK,IAAe,GACpB,KAAK,IAAgB,GACrB,KAAK,IAAU,GACf,KAAK,SAAW,GAChB,KAAK,SAAW,GAChB,KAAK,IAAgB,EACrB,KAAK,IAAa,MAGhB,gBAAkB,MAAO,MAAK,OAE9B,YAAc,MAAO,MAAK,OAC1B,UAAU,GACZ,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,qCAElB,GAAI,KAAK,KAAa,IAAQ,KAAK,KAC9B,MAAK,KAAY,KAAK,IAAS,UAAY,KAAK,KACnD,KAAM,IAAI,OAAM,0BAElB,AAAI,KAAK,MAAc,GACrB,MAAK,IAAW,EAAM,GAAI,IAAG,GAAO,KAChC,KAAK,OAAO,QACd,MAAK,OAAS,KAAK,OAAO,IAAI,GAAS,KAAK,IAAS,MAAM,MAG/D,KAAK,IAAY,EAGnB,YAAa,GACX,KAAK,SAAW,KAGd,cAAgB,MAAO,MAAK,OAC5B,YAAY,GAAM,KAAK,IAAc,KAAK,KAAe,CAAC,CAAC,EAE/D,MAAO,EAAO,EAAU,GACtB,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,mBAElB,MAAI,MAAK,IACP,MAAK,KAAK,QAAS,OAAO,OACxB,GAAI,OAAM,kDACV,CAAE,KAAM,0BAEH,IAGL,OAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QAEvB,GACH,GAAW,QAMT,CAAC,KAAK,KAAe,CAAC,OAAO,SAAS,IACxC,CAAI,GAAkB,GACpB,EAAQ,OAAO,KAAK,EAAM,OAAQ,EAAM,WAAY,EAAM,YACvD,AAAI,GAAc,GACrB,EAAQ,OAAO,KAAK,GACb,MAAO,IAAU,UAExB,MAAK,WAAa,KAKlB,CAAC,KAAK,YAAc,CAAC,EAAM,OACzB,MAAK,MAAkB,GACzB,KAAK,KAAK,YACR,GACF,IACK,KAAK,SAKV,OAAO,IAAU,UAAY,CAAC,KAAK,KAEnC,CAAE,KAAa,KAAK,KAAa,CAAC,KAAK,IAAS,WAClD,GAAQ,OAAO,KAAK,EAAO,IAGzB,OAAO,SAAS,IAAU,KAAK,KACjC,GAAQ,KAAK,IAAS,MAAM,IAE9B,AAAI,KAAK,QAKH,MAAK,MAAkB,GACzB,KAAK,IAAO,IACd,KAAK,KAAK,OAAQ,IAElB,KAAK,IAAY,GAEf,KAAK,MAAkB,GACzB,KAAK,KAAK,YAER,GACF,IAEK,KAAK,UAGd,KAAM,GACJ,GAAI,KAAK,IACP,MAAO,MAET,IACE,MAAI,MAAK,MAAkB,GAAK,IAAM,GAAK,EAAI,KAAK,IAC3C,KAEL,MAAK,KACP,GAAI,MAEF,KAAK,OAAO,OAAS,GAAK,CAAC,KAAK,KAClC,CAAI,KAAK,SACP,KAAK,OAAS,GAAI,IAAQ,CACxB,MAAM,KAAK,KAAK,QAAQ,KAAK,MAG/B,KAAK,OAAS,GAAI,IAAQ,CACxB,OAAO,OAAO,MAAM,KAAK,KAAK,QAAS,KAAK,QAI3C,KAAK,IAAM,GAAK,KAAM,KAAK,OAAO,KAAK,gBAE9C,KAAK,QAIR,IAAO,EAAG,GACT,MAAI,KAAM,EAAM,QAAU,IAAM,KAC9B,KAAK,MAEL,MAAK,OAAO,KAAK,MAAQ,EAAM,MAAM,GACrC,EAAQ,EAAM,MAAM,EAAG,GACvB,KAAK,KAAiB,GAGxB,KAAK,KAAK,OAAQ,GAEd,CAAC,KAAK,OAAO,QAAU,CAAC,KAAK,KAC/B,KAAK,KAAK,SAEL,EAGT,IAAK,EAAO,EAAU,GACpB,MAAI,OAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAClB,MAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QACxB,GACF,KAAK,MAAM,EAAO,GAChB,GACF,KAAK,KAAK,MAAO,GACnB,KAAK,IAAO,GACZ,KAAK,SAAW,GAMZ,MAAK,SAAW,CAAC,KAAK,MACxB,KAAK,MACA,MAIR,MACC,AAAI,KAAK,KAGT,MAAK,IAAU,GACf,KAAK,IAAW,GAChB,KAAK,KAAK,UACV,AAAI,KAAK,OAAO,OACd,KAAK,MACF,AAAI,KAAK,IACZ,KAAK,MAEL,KAAK,KAAK,UAGd,SACE,MAAO,MAAK,MAGd,QACE,KAAK,IAAW,GAChB,KAAK,IAAU,MAGb,aACF,MAAO,MAAK,OAGV,WACF,MAAO,MAAK,OAGV,UACF,MAAO,MAAK,KAGb,IAAa,GACZ,MAAI,MAAK,IACP,KAAK,KAAiB,EAEtB,KAAK,KAAiB,EAAM,OACvB,KAAK,OAAO,KAAK,IAGzB,MACC,MAAI,MAAK,OAAO,QACd,CAAI,KAAK,IACP,KAAK,KAAiB,EAEtB,KAAK,KAAiB,KAAK,OAAO,KAAK,MAAM,QAE1C,KAAK,OAAO,SAGpB,IAAQ,GACP,EAAG,OAAU,KAAK,IAAY,KAAK,QAEnC,AAAI,CAAC,GAAW,CAAC,KAAK,OAAO,QAAU,CAAC,KAAK,KAC3C,KAAK,KAAK,UAGb,IAAa,GACZ,MAAO,GAAS,MAAK,KAAK,OAAQ,GAAQ,KAAK,SAAW,GAG5D,KAAM,EAAM,GACV,GAAI,KAAK,IACP,OAEF,GAAM,GAAQ,KAAK,IACnB,EAAO,GAAQ,GACf,AAAI,IAAS,QAAQ,QAAU,IAAS,QAAQ,OAC9C,EAAK,IAAM,GAEX,EAAK,IAAM,EAAK,MAAQ,GAE1B,GAAM,GAAI,CAAE,KAAM,EAAM,KAAM,EAAM,QAAS,GAAK,KAAK,OACvD,YAAK,MAAM,KAAK,GAEhB,EAAK,GAAG,QAAS,EAAE,SACnB,KAAK,MAED,GAAS,EAAE,KAAK,KAClB,EAAE,KAAK,MACF,EAGT,YAAa,EAAI,GACf,MAAO,MAAK,GAAG,EAAI,GAGrB,GAAI,EAAI,GACN,IACE,MAAO,OAAM,GAAG,EAAI,WAEpB,AAAI,IAAO,QAAU,CAAC,KAAK,MAAM,QAAU,CAAC,KAAK,QAC/C,KAAK,MACE,GAAS,IAAO,KAAK,KAC5B,OAAM,KAAK,GACX,KAAK,mBAAmB,QAK1B,cACF,MAAO,MAAK,KAGb,MACC,AAAI,CAAC,KAAK,KACN,CAAC,KAAK,KACN,CAAC,KAAK,KACN,KAAK,OAAO,SAAW,GACvB,KAAK,KACP,MAAK,IAAgB,GACrB,KAAK,KAAK,OACV,KAAK,KAAK,aACV,KAAK,KAAK,UACN,KAAK,KACP,KAAK,KAAK,SACZ,KAAK,IAAgB,IAIzB,KAAM,EAAI,GAER,GAAI,IAAO,SAAW,IAAO,SAAW,IAAO,IAAa,KAAK,IAC/D,OACG,GAAI,IAAO,QACd,GAAI,CAAC,EACH,OAEF,AAAI,KAAK,MAAM,QACb,KAAK,MAAM,QAAQ,GACjB,EAAE,KAAK,MAAM,KAAU,IAAS,KAAK,iBAChC,IAAO,OAEhB,GAAI,KAAK,MAAiB,GACxB,OAEF,KAAK,IAAe,GACpB,KAAK,SAAW,GAEZ,KAAK,KACP,GAAO,KAAK,IAAS,MACjB,GACF,MAAK,MAAM,QAAQ,GAAK,EAAE,KAAK,MAAM,IACrC,MAAM,KAAK,OAAQ,KAIvB,KAAK,MAAM,QAAQ,IACjB,EAAE,KAAK,eAAe,QAAS,EAAE,SAC7B,EAAE,KAAK,KACT,EAAE,KAAK,gBAEF,IAAO,SAChB,MAAK,IAAU,GAEX,CAAC,KAAK,KAAgB,CAAC,KAAK,KAC9B,OAIJ,GAAM,GAAO,GAAI,OAAM,UAAU,QAGjC,GAFA,EAAK,GAAK,EACV,EAAK,GAAK,EACN,UAAU,OAAS,EACrB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IACpC,EAAK,GAAK,UAAU,GAIxB,IACE,MAAO,OAAM,KAAK,MAAM,KAAM,WAE9B,AAAK,GAAS,GAGZ,KAAK,mBAAmB,GAFxB,KAAK,OAOX,UACE,GAAM,GAAM,GACZ,AAAK,KAAK,KACR,GAAI,WAAa,GAGnB,GAAM,GAAI,KAAK,UACf,YAAK,GAAG,OAAQ,IACd,EAAI,KAAK,GACJ,KAAK,KACR,GAAI,YAAc,EAAE,UAEjB,EAAE,KAAK,IAAM,GAItB,SACE,MAAO,MAAK,IACR,QAAQ,OAAO,GAAI,OAAM,gCACzB,KAAK,UAAU,KAAK,GAClB,KAAK,IACD,QAAQ,OAAO,GAAI,OAAM,gCACzB,KAAK,IAAY,EAAI,KAAK,IAAM,OAAO,OAAO,EAAK,EAAI,aAInE,UACE,MAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,KAAK,GAAG,GAAW,IAAM,EAAO,GAAI,OAAM,sBAC1C,KAAK,GAAG,MAAO,IAAM,KACrB,KAAK,GAAG,QAAS,GAAM,EAAO,OAKjC,MAsCC,MAAO,CAAE,KArCI,KACX,GAAM,GAAM,KAAK,OACjB,GAAI,IAAQ,KACV,MAAO,SAAQ,QAAQ,CAAE,KAAM,GAAO,MAAO,IAE/C,GAAI,KAAK,IACP,MAAO,SAAQ,QAAQ,CAAE,KAAM,KAEjC,GAAI,GAAU,KACV,EAAS,KACP,EAAQ,IACZ,KAAK,eAAe,OAAQ,GAC5B,KAAK,eAAe,MAAO,GAC3B,EAAO,IAEH,EAAS,IACb,KAAK,eAAe,QAAS,GAC7B,KAAK,eAAe,MAAO,GAC3B,KAAK,QACL,EAAQ,CAAE,MAAO,EAAO,KAAM,CAAC,CAAC,KAAK,OAEjC,EAAQ,KACZ,KAAK,eAAe,QAAS,GAC7B,KAAK,eAAe,OAAQ,GAC5B,EAAQ,CAAE,KAAM,MAEZ,EAAY,IAAM,EAAM,GAAI,OAAM,qBACxC,MAAO,IAAI,SAAQ,CAAC,EAAK,KACvB,EAAS,EACT,EAAU,EACV,KAAK,KAAK,GAAW,GACrB,KAAK,KAAK,QAAS,GACnB,KAAK,KAAK,MAAO,GACjB,KAAK,KAAK,OAAQ,QAQvB,MAMC,MAAO,CAAE,KALI,KACX,GAAM,GAAQ,KAAK,OAEnB,MAAO,CAAE,QAAO,KADH,IAAU,QAM3B,QAAS,GACP,MAAI,MAAK,IACP,CAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,IACL,MAGT,MAAK,IAAa,GAGlB,KAAK,OAAS,GAAI,IAClB,KAAK,IAAgB,EAEjB,MAAO,MAAK,OAAU,YAAc,CAAC,KAAK,KAC5C,KAAK,QAEP,AAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,IAEL,YAGF,UAAU,GACf,MAAO,CAAC,CAAC,GAAM,aAAa,KAAY,YAAa,KACnD,YAAa,KACX,OAAO,GAAE,MAAS,YACjB,MAAO,GAAE,OAAU,YAAc,MAAO,GAAE,KAAQ,iBC7hB3D,mBAIA,GAAM,IAAoB,AAAQ,gBAAQ,WACb,CAAE,YAAa,MAE5C,GAAO,QAAU,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAO,CAChE,WAAY,EACZ,gBAAiB,EACjB,aAAc,EACd,aAAc,EACd,SAAU,EACV,QAAS,EACT,KAAM,EACN,aAAc,EACd,YAAa,EACb,QAAS,GACT,eAAgB,GAChB,aAAc,GACd,YAAa,GACb,YAAa,GACb,gBAAiB,GACjB,iBAAkB,EAClB,aAAc,EACd,mBAAoB,EACpB,sBAAuB,GACvB,WAAY,EACZ,eAAgB,EAChB,MAAO,EACP,QAAS,EACT,mBAAoB,EACpB,QAAS,EACT,QAAS,EACT,KAAM,EACN,OAAQ,EACR,WAAY,EACZ,WAAY,EACZ,MAAO,EACP,cAAe,EACf,cAAe,EACf,iBAAkB,EAClB,iBAAkB,GAClB,qBAAsB,GACtB,YAAa,GACb,YAAa,SACb,gBAAiB,MACjB,eAAgB,EAChB,eAAgB,EAChB,mBAAoB,EACpB,YAAa,GACb,YAAa,EACb,gBAAiB,GACjB,yBAA0B,EAC1B,uBAAwB,EACxB,wBAAyB,EACzB,+BAAgC,EAChC,oBAAqB,EACrB,iBAAkB,EAClB,iBAAkB,EAClB,oBAAqB,EACrB,mBAAoB,EACpB,mBAAoB,GACpB,uBAAwB,GACxB,uBAAwB,GACxB,uBAAwB,GACxB,6BAA8B,GAC9B,sBAAuB,GACvB,4BAA6B,GAC7B,4BAA6B,GAC7B,kBAAmB,EACnB,qBAAsB,EACtB,mBAAoB,EACpB,qBAAsB,EACtB,8CAA+C,EAC/C,uBAAwB,EACxB,0BAA2B,EAC3B,sBAAuB,EACvB,qBAAsB,EACtB,4BAA6B,EAC7B,8BAA+B,EAC/B,uCAAwC,EACxC,wCAAyC,EACzC,sDAAuD,EACvD,kCAAmC,EACnC,wBAAyB,EACzB,uBAAwB,EACxB,gCAAiC,EACjC,iCAAkC,EAClC,6CAA8C,GAC9C,qCAAsC,GACtC,kDAAmD,GACnD,oDAAqD,GACrD,gDAAiD,GACjD,qCAAsC,GACtC,0CAA2C,GAC3C,+CAAgD,GAChD,2CAA4C,GAC5C,2CAA4C,IAC5C,sCAAuC,IACvC,uCAAwC,IACxC,wCAAyC,IACzC,sCAAuC,IACvC,sCAAuC,IACvC,qCAAsC,IACtC,wCAAyC,IACzC,uCAAwC,IACxC,yCAA0C,IAC1C,uCAAwC,IACxC,uCAAwC,IACxC,yCAA0C,IAC1C,yCAA0C,IAC1C,4CAA6C,IAC7C,iCAAkC,KACjC,OClHH,2BAEA,GAAM,IAAiB,kBACjB,GAAS,AAAQ,kBAAU,OAC3B,GAAmB,gBAEnB,GAAY,GAAQ,UAAoB,KACxC,GAAmB,KAEnB,GAAuB,GAAO,OAE9B,GAAc,OAAO,eAX3B,gBAYwB,OACtB,YAAa,GACX,MAAM,SAAW,EAAI,SACrB,KAAK,KAAO,EAAI,KAChB,KAAK,MAAQ,EAAI,MAEZ,KAAK,MACR,MAAK,KAAO,cAEd,KAAK,QAAU,SAAW,EAAI,QAC9B,MAAM,kBAAkB,KAAM,KAAK,gBAGjC,QACF,MAAO,cAQL,GAAQ,OAAO,QACf,GAAa,OAAO,aACpB,GAAmB,OAAO,mBAC1B,GAAiB,OAAO,iBACxB,GAAU,OAAO,UACjB,GAAW,OAAO,WAClB,GAAY,OAAO,YACnB,GAAS,OAAO,SAChB,GAAY,OAAO,YACnB,GAAS,OAAO,SAChB,GAAoB,OAAO,qBA5CjC,gBA8CuB,IACrB,YAAa,EAAM,GACjB,GAAI,CAAC,GAAQ,MAAO,IAAS,SAC3B,KAAM,IAAI,WAAU,4CAEtB,MAAM,GACN,KAAK,IAAa,GAClB,KAAK,IAAU,GACf,KAAK,IAAS,EAEd,KAAK,IAAc,EAAK,MACxB,KAAK,IAAoB,EAAK,YAE9B,IACE,KAAK,IAAW,GAAI,IAAS,GAAM,SAC5B,GAEP,KAAM,IAAI,IAAU,GAGtB,KAAK,IAAY,AAAC,IAEhB,AAAI,KAAK,KAGT,MAAK,IAAa,GAIlB,KAAK,QACL,KAAK,KAAK,QAAS,KAGrB,KAAK,IAAS,GAAG,QAAS,GAAM,KAAK,IAAU,GAAI,IAAU,KAC7D,KAAK,KAAK,MAAO,IAAM,KAAK,OAG9B,QACE,AAAI,KAAK,KACP,MAAK,IAAS,QACd,KAAK,IAAW,KAChB,KAAK,KAAK,UAId,QACE,GAAI,CAAC,KAAK,IACR,UAAO,KAAK,IAAU,uBACf,KAAK,IAAS,QAIzB,MAAO,GACL,AAAI,KAAK,OAGL,OAAO,IAAc,UACvB,GAAY,KAAK,KACnB,KAAK,MAAM,OAAO,OAAO,GAAO,MAAM,GAAI,EAAG,IAAa,MAG5D,IAAK,EAAO,EAAU,GACpB,MAAI,IACF,KAAK,MAAM,EAAO,GACpB,KAAK,MAAM,KAAK,KAChB,KAAK,IAAU,GACR,MAAM,IAAI,KAAM,KAAM,MAG3B,SACF,MAAO,MAAK,IAGd,MAAO,EAAO,EAAU,GAStB,GANI,MAAO,IAAa,YACtB,GAAK,EAAU,EAAW,QAExB,MAAO,IAAU,UACnB,GAAQ,GAAO,KAAK,EAAO,IAEzB,KAAK,IACP,OACF,GAAO,KAAK,IAAU,uBAItB,GAAM,GAAe,KAAK,IAAS,QAC7B,EAAsB,EAAa,MACzC,EAAa,MAAQ,OACrB,GAAM,GAAgB,KAAK,IAAS,MACpC,KAAK,IAAS,MAAQ,OAGtB,GAAO,OAAS,AAAC,GAAS,EAC1B,GAAI,GACJ,IACE,GAAM,GAAY,MAAO,GAAM,KAAgB,SAC3C,EAAM,IAAc,KAAK,IAC7B,EAAS,KAAK,IAAS,cAAc,EAAO,GAE5C,GAAO,OAAS,SACT,GAGP,GAAO,OAAS,GAChB,KAAK,IAAU,GAAI,IAAU,YAE7B,AAAI,KAAK,KAIP,MAAK,IAAS,QAAU,EACxB,EAAa,MAAQ,EACrB,KAAK,IAAS,MAAQ,EAGtB,KAAK,IAAS,mBAAmB,UAKrC,AAAI,KAAK,KACP,KAAK,IAAS,GAAG,QAAS,GAAM,KAAK,IAAU,GAAI,IAAU,KAE/D,GAAI,GACJ,GAAI,EACF,GAAI,MAAM,QAAQ,IAAW,EAAO,OAAS,GAG3C,EAAc,KAAK,IAAa,GAAO,KAAK,EAAO,KACnD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAc,KAAK,IAAa,EAAO,QAGzC,GAAc,KAAK,IAAa,GAAO,KAAK,IAIhD,MAAI,IACF,IACK,GAGR,IAAc,GACb,MAAO,OAAM,MAAM,KAhMvB,gBAoMmB,IACjB,YAAa,EAAM,GACjB,EAAO,GAAQ,GAEf,EAAK,MAAQ,EAAK,OAAS,GAAU,WACrC,EAAK,YAAc,EAAK,aAAe,GAAU,SACjD,MAAM,EAAM,GAEZ,KAAK,IAAkB,GAAU,aACjC,KAAK,IAAU,EAAK,MACpB,KAAK,IAAa,EAAK,SAGzB,OAAQ,EAAO,GACb,GAAI,MAAK,KAGT,GAAI,CAAC,KAAK,IACR,KAAM,IAAI,OAAM,+CAIlB,GAAI,CAAC,KAAK,IAAS,OACjB,KAAM,IAAI,OAAM,wCAElB,GAAI,KAAK,MAAY,GAAS,KAAK,MAAe,GAChD,KAAK,MAAM,GAAU,cACrB,GAAO,KAAK,IAAU,uBAItB,GAAM,GAAY,KAAK,IAAS,MAChC,KAAK,IAAS,MAAQ,CAAC,EAAW,KAChC,KAAK,MAAM,GACX,KAEF,IACE,KAAK,IAAS,OAAO,EAAO,WAE5B,KAAK,IAAS,MAAQ,EAGxB,AAAI,KAAK,KACP,MAAK,IAAU,EACf,KAAK,IAAa,OAhP1B,gBAuPsB,IACpB,YAAa,GACX,MAAM,EAAM,aAzPhB,gBA6PsB,IACpB,YAAa,GACX,MAAM,EAAM,aAKV,GAAY,OAAO,aApQzB,gBAqQmB,IACjB,YAAa,GACX,MAAM,EAAM,QACZ,KAAK,IAAa,GAAQ,CAAC,CAAC,EAAK,UAGlC,IAAc,GACb,MAAK,MAAK,IAKV,MAAK,IAAa,GAClB,EAAK,GAAK,IACH,MAAM,IAAa,IANjB,MAAM,IAAa,KA7QhC,gBAuRqB,IACnB,YAAa,GACX,MAAM,EAAM,YAzRhB,gBA8RyB,IACvB,YAAa,GACX,MAAM,EAAM,gBAhShB,gBAoSyB,IACvB,YAAa,GACX,MAAM,EAAM,gBAtShB,gBA2SoB,IAClB,YAAa,GACX,MAAM,EAAM,WA7ShB,gBAiTqB,IACnB,YAAa,EAAM,GACjB,EAAO,GAAQ,GAEf,EAAK,MAAQ,EAAK,OAAS,GAAU,yBACrC,EAAK,YAAc,EAAK,aAAe,GAAU,wBAEjD,MAAM,EAAM,GAEZ,KAAK,IAAkB,GAAU,yBA1TrC,gBA8T6B,IAC3B,YAAa,GACX,MAAM,EAAM,oBAhUhB,gBAoU+B,IAC7B,YAAa,GACX,MAAM,EAAM,sBAIhB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,KAAO,GACf,GAAQ,OAAS,GACjB,GAAQ,WAAa,GACrB,GAAQ,WAAa,GACrB,GAAQ,MAAQ,GAEhB,AAAI,MAAO,IAAS,gBAAmB,WACrC,IAAQ,eAAiB,GACzB,GAAQ,iBAAmB,IAE3B,GAAQ,eAAiB,GAAQ,iBAAmB,MAClD,cACE,KAAM,IAAI,OAAM,0DCxVtB,gCACA,GAAM,IAAmB,KAEnB,GAAQ,OAAO,SACrB,GAAO,QAAU,aAAwB,IACvC,YAAa,EAAQ,EAAI,GACvB,QAcA,OAVA,KAAK,QACL,KAAK,SAAW,EAChB,KAAK,eAAiB,EACtB,KAAK,OAAS,EACd,KAAK,eAAiB,IAAM,KAAK,KAAK,EAAO,KAAO,KACpD,KAAK,YAAc,KAAK,eACxB,KAAK,OAAS,EAAO,KACrB,KAAK,KAAO,EAAO,KACnB,KAAK,KAAO,GACZ,KAAK,OAAS,GACN,KAAK,UACN,WACA,cACA,WACA,mBACA,sBACA,kBACA,gBACA,WACA,qBACA,aACH,UAEG,8BACA,0BACA,qBACA,2BACA,qBACA,oBACH,KAAK,KAAO,GACZ,cAKA,KAAK,OAAS,GAGlB,KAAK,KAAO,EAAO,KACnB,KAAK,KAAO,EAAO,KACf,KAAK,MACP,MAAK,KAAO,KAAK,KAAO,MAC1B,KAAK,IAAM,EAAO,IAClB,KAAK,IAAM,EAAO,IAClB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,KAAO,EAAO,KACnB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,SAAW,EAAO,SACvB,KAAK,MAAQ,EAAO,MACpB,KAAK,MAAQ,EAAO,MAEhB,GACF,KAAK,IAAO,GACV,GACF,KAAK,IAAO,EAAK,IAGrB,MAAO,GACL,GAAM,GAAW,EAAK,OACtB,GAAI,EAAW,KAAK,YAClB,KAAM,IAAI,OAAM,6CAElB,GAAM,GAAI,KAAK,OACT,EAAK,KAAK,YAGhB,MAFA,MAAK,OAAS,KAAK,IAAI,EAAG,EAAI,GAC9B,KAAK,YAAc,KAAK,IAAI,EAAG,EAAK,GAChC,KAAK,OACA,GAEL,GAAK,EACA,MAAM,MAAM,GAGd,MAAM,MAAM,EAAK,MAAM,EAAG,KAGlC,IAAQ,EAAI,GACX,OAAW,KAAK,GAGd,AAAI,EAAG,KAAO,MAAQ,EAAG,KAAO,QAC5B,CAAE,IAAU,IAAM,SACpB,MAAK,GAAK,EAAG,QC/FrB,2BAEA,GAAQ,KAAO,GAAI,KAAI,CACrB,CAAC,IAAK,QAEN,CAAC,GAAI,WACL,CAAC,IAAK,QACN,CAAC,IAAK,gBAGN,CAAC,IAAK,mBACN,CAAC,IAAK,eACN,CAAC,IAAK,aACN,CAAC,IAAK,QAEN,CAAC,IAAK,kBAEN,CAAC,IAAK,wBACN,CAAC,IAAK,kBAGN,CAAC,IAAK,cAEN,CAAC,IAAK,cAEN,CAAC,IAAK,SAEN,CAAC,IAAK,2BAEN,CAAC,IAAK,uBAEN,CAAC,IAAK,oBAEN,CAAC,IAAK,kBAEN,CAAC,IAAK,cAEN,CAAC,IAAK,oBAEN,CAAC,IAAK,uBAIR,GAAQ,KAAO,GAAI,KAAI,MAAM,KAAK,GAAQ,MAAM,IAAI,GAAM,CAAC,EAAG,GAAI,EAAG,QC3CrE,gCAIA,GAAM,IAAS,CAAC,EAAK,KACnB,GAAK,OAAO,cAAc,GAIrB,AAAI,EAAM,EACb,GAAe,EAAK,GAEpB,GAAe,EAAK,OAJpB,MAAM,OAAM,iEAKd,MAAO,IAGH,GAAiB,CAAC,EAAK,KAC3B,EAAI,GAAK,IAET,OAAS,GAAI,EAAI,OAAQ,EAAI,EAAG,IAC9B,EAAI,EAAI,GAAK,EAAM,IACnB,EAAM,KAAK,MAAM,EAAM,MAIrB,GAAiB,CAAC,EAAK,KAC3B,EAAI,GAAK,IACT,GAAI,GAAU,GACd,EAAM,EAAM,GACZ,OAAS,GAAI,EAAI,OAAQ,EAAI,EAAG,KAC9B,GAAI,GAAO,EAAM,IACjB,EAAM,KAAK,MAAM,EAAM,KACvB,AAAI,EACF,EAAI,EAAI,GAAK,GAAS,GACnB,AAAI,IAAS,EAChB,EAAI,EAAI,GAAK,EAEb,GAAU,GACV,EAAI,EAAI,GAAK,GAAS,MAKtB,GAAQ,AAAC,IACb,GAAM,GAAM,EAAI,GACV,EAAQ,IAAQ,IAAO,GAAI,EAAI,MAAM,EAAG,EAAI,SAC9C,IAAQ,IAAO,GAAK,GACpB,KACJ,GAAI,IAAU,KACZ,KAAM,OAAM,4BAEd,GAAI,CAAC,OAAO,cAAc,GAGxB,KAAM,OAAM,0DAEd,MAAO,IAGH,GAAO,AAAC,IAIZ,OAHI,GAAM,EAAI,OACV,EAAM,EACN,EAAU,GACL,EAAI,EAAM,EAAG,EAAI,GAAI,KAC5B,GAAI,GAAO,EAAI,GACX,EACJ,AAAI,EACF,EAAI,GAAS,GACV,AAAI,IAAS,EAChB,EAAI,EAEJ,GAAU,GACV,EAAI,GAAS,IAEX,IAAM,GACR,IAAO,EAAI,KAAK,IAAI,IAAK,EAAM,EAAI,IAEvC,MAAO,IAGH,GAAM,AAAC,IAGX,OAFI,GAAM,EAAI,OACV,EAAM,EACD,EAAI,EAAM,EAAG,EAAI,GAAI,KAC5B,GAAI,GAAO,EAAI,GACf,AAAI,IAAS,GACX,IAAO,EAAO,KAAK,IAAI,IAAK,EAAM,EAAI,IAE1C,MAAO,IAGH,GAAW,GAAS,KAAO,GAAQ,IAEnC,GAAW,GAAU,KAAO,GAAQ,EAAK,IAE/C,GAAO,QAAU,CACf,UACA,YCjGF,gCAMA,GAAM,IAAgB,KAChB,GAAa,AAAQ,gBAAQ,MAC7B,GAAgB,KAEhB,GAAQ,OAAO,SACf,GAAO,OAAO,QAXpB,SAcE,YAAa,EAAM,EAAK,EAAI,GAC1B,KAAK,WAAa,GAClB,KAAK,QAAU,GACf,KAAK,UAAY,GAEjB,KAAK,MAAQ,KACb,KAAK,KAAO,KACZ,KAAK,KAAO,KACZ,KAAK,IAAM,KACX,KAAK,IAAM,KACX,KAAK,KAAO,KACZ,KAAK,MAAQ,KACb,KAAK,MAAQ,KACb,KAAK,IAAQ,IACb,KAAK,SAAW,KAChB,KAAK,MAAQ,KACb,KAAK,MAAQ,KACb,KAAK,OAAS,EACd,KAAK,OAAS,EACd,KAAK,MAAQ,KACb,KAAK,MAAQ,KAEb,AAAI,OAAO,SAAS,GAClB,KAAK,OAAO,EAAM,GAAO,EAAG,EAAI,GACzB,GACP,KAAK,IAAI,GAGb,OAAQ,EAAK,EAAK,EAAI,GAIpB,GAHK,GACH,GAAM,GAEJ,CAAC,GAAO,CAAE,GAAI,QAAU,EAAM,KAChC,KAAM,IAAI,OAAM,6BA+BlB,GA7BA,KAAK,KAAO,GAAU,EAAK,EAAK,KAChC,KAAK,KAAO,GAAU,EAAK,EAAM,IAAK,GACtC,KAAK,IAAM,GAAU,EAAK,EAAM,IAAK,GACrC,KAAK,IAAM,GAAU,EAAK,EAAM,IAAK,GACrC,KAAK,KAAO,GAAU,EAAK,EAAM,IAAK,IACtC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IACrC,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IAIvC,KAAK,IAAO,GACZ,KAAK,IAAO,EAAK,IAGjB,KAAK,IAAQ,GAAU,EAAK,EAAM,IAAK,GACnC,KAAK,MAAU,IACjB,MAAK,IAAQ,KACX,KAAK,MAAU,KAAO,KAAK,KAAK,OAAO,MAAQ,KACjD,MAAK,IAAQ,KAOX,KAAK,MAAU,KACjB,MAAK,KAAO,GAEd,KAAK,SAAW,GAAU,EAAK,EAAM,IAAK,KACtC,EAAI,MAAM,EAAM,IAAK,EAAM,KAAK,aAAe,cAKjD,GAJA,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IACvC,KAAK,MAAQ,GAAU,EAAK,EAAM,IAAK,IACvC,KAAK,OAAS,GAAU,EAAK,EAAM,IAAK,GACxC,KAAK,OAAS,GAAU,EAAK,EAAM,IAAK,GACpC,EAAI,EAAM,OAAS,GAErB,GAAM,GAAS,GAAU,EAAK,EAAM,IAAK,KACzC,KAAK,KAAO,EAAS,IAAM,KAAK,UAEhC,GAAM,GAAS,GAAU,EAAK,EAAM,IAAK,KACzC,AAAI,GACF,MAAK,KAAO,EAAS,IAAM,KAAK,MAClC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IACrC,KAAK,MAAQ,GAAQ,EAAK,EAAM,IAAK,IAIzC,GAAI,GAAM,EAAI,GACd,OAAS,GAAI,EAAK,EAAI,EAAM,IAAK,IAC/B,GAAO,EAAI,GAEb,OAAS,GAAI,EAAM,IAAK,EAAI,EAAM,IAAK,IACrC,GAAO,EAAI,GAEb,KAAK,WAAa,IAAQ,KAAK,MAC3B,KAAK,QAAU,MAAQ,IAAQ,EAAI,IACrC,MAAK,UAAY,KAGpB,IAAQ,EAAI,GACX,OAAW,KAAK,GAGd,AAAI,EAAG,KAAO,MAAQ,EAAG,KAAO,QAC5B,CAAE,IAAU,IAAM,SACpB,MAAK,GAAK,EAAG,IAInB,OAAQ,EAAK,GASX,GARK,GACH,GAAM,KAAK,MAAQ,OAAO,MAAM,KAChC,EAAM,GAGH,GACH,GAAM,GAEJ,CAAE,GAAI,QAAU,EAAM,KACxB,KAAM,IAAI,OAAM,6BAElB,GAAM,GAAa,KAAK,OAAS,KAAK,MAAQ,IAAM,IAC9C,EAAQ,GAAY,KAAK,MAAQ,GAAI,GACrC,EAAO,EAAM,GACb,EAAS,EAAM,GACrB,KAAK,QAAU,EAAM,GAErB,KAAK,QAAU,GAAU,EAAK,EAAK,IAAK,IAAS,KAAK,QACtD,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,OAAS,KAAK,QAC/D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,MAAQ,KAAK,QAC9D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,MAAQ,KAAK,QAC9D,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,OAAS,KAAK,QAChE,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QAC/D,EAAI,EAAM,KAAO,KAAK,IAAM,WAAW,GACvC,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,KAAK,WAAa,KAAK,QACrE,EAAI,MAAM,cAAiB,EAAM,IAAK,GACtC,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,SAAW,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,SAAW,KAAK,QACjE,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,EAAY,IAAW,KAAK,QACrE,AAAI,EAAI,EAAM,OAAS,EACrB,KAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,IAAW,KAAK,QAE9D,MAAK,QAAU,GAAU,EAAK,EAAM,IAAK,IAAK,IAAW,KAAK,QAC9D,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,QAC/D,KAAK,QAAU,GAAQ,EAAK,EAAM,IAAK,GAAI,KAAK,QAAU,KAAK,SAGjE,GAAI,GAAM,EAAI,GACd,OAAS,GAAI,EAAK,EAAI,EAAM,IAAK,IAC/B,GAAO,EAAI,GAEb,OAAS,GAAI,EAAM,IAAK,EAAI,EAAM,IAAK,IACrC,GAAO,EAAI,GAEb,YAAK,MAAQ,EACb,GAAU,EAAK,EAAM,IAAK,EAAG,KAAK,OAClC,KAAK,WAAa,GAEX,KAAK,QAGd,IAAK,GACH,OAAW,KAAK,GACd,AAAI,EAAK,KAAO,MAAQ,EAAK,KAAO,QAClC,MAAK,GAAK,EAAK,OAIjB,QACF,MAAO,IAAM,KAAK,IAAI,KAAK,MAAU,KAAK,OAGxC,WACF,MAAO,MAAK,OAGV,MAAM,GACR,AAAI,GAAM,KAAK,IAAI,GACjB,KAAK,IAAQ,GAAM,KAAK,IAAI,GAE5B,KAAK,IAAQ,IAIb,GAAc,CAAC,EAAG,KACtB,GAAM,GAAW,IACb,EAAK,EACL,EAAS,GACT,EACE,EAAO,GAAW,MAAM,GAAG,MAAQ,IAEzC,GAAI,OAAO,WAAW,GAAM,EAC1B,EAAM,CAAC,EAAI,EAAQ,SAGnB,EAAS,GAAW,QAAQ,GAC5B,EAAK,GAAW,SAAS,GAEzB,EAEE,AAAI,QAAO,WAAW,IAAO,GACzB,OAAO,WAAW,IAAW,EAC/B,EAAM,CAAC,EAAI,EAAQ,IAGhB,AAAI,OAAO,WAAW,GAAM,GAC7B,OAAO,WAAW,IAAW,EAC/B,EAAM,CAAC,EAAG,OAAO,EAAG,EAAW,GAAI,EAAQ,IAI3C,GAAK,GAAW,KAAK,GAAW,SAAS,GAAS,GAClD,EAAS,GAAW,QAAQ,UAEvB,IAAW,GAAQ,CAAC,GAG7B,AAAK,GACH,GAAM,CAAC,EAAE,OAAO,EAAG,EAAW,GAAI,GAAI,KAE1C,MAAO,IAGH,GAAY,CAAC,EAAK,EAAK,IAC3B,EAAI,MAAM,EAAK,EAAM,GAAM,SAAS,QAAQ,QAAQ,OAAQ,IAExD,GAAU,CAAC,EAAK,EAAK,IACzB,GAAU,GAAU,EAAK,EAAK,IAE1B,GAAY,GAAO,IAAQ,KAAO,KAAO,GAAI,MAAK,EAAM,KAExD,GAAY,CAAC,EAAK,EAAK,IAC3B,EAAI,GAAO,IAAO,GAAM,MAAM,EAAI,MAAM,EAAK,EAAM,IACjD,GAAe,EAAK,EAAK,GAEvB,GAAU,GAAS,MAAM,GAAS,KAAO,EAEzC,GAAiB,CAAC,EAAK,EAAK,IAChC,GAAQ,SACN,EAAI,MAAM,EAAK,EAAM,GAClB,SAAS,QAAQ,QAAQ,QAAS,IAAI,OAAQ,IAG/C,GAAS,CACb,GAAI,WACJ,EAAG,SAGC,GAAY,CAAC,EAAK,EAAK,EAAM,IACjC,IAAW,KAAO,GAClB,EAAS,GAAO,IAAS,EAAS,EAC7B,IAAM,OAAO,EAAQ,EAAI,MAAM,EAAK,EAAM,IAAQ,IAClD,IAAe,EAAK,EAAK,EAAM,GAAS,IAEzC,GAAiB,CAAC,EAAK,EAAK,EAAM,IACtC,EAAI,MAAM,GAAY,EAAQ,GAAO,EAAK,EAAM,SAE5C,GAAc,CAAC,EAAQ,IAC3B,GAAS,KAAK,MAAM,GAAQ,SAAS,GAAI,GAErC,GAAW,CAAC,EAAQ,IACvB,GAAO,SAAW,EAAO,EAAI,EAC5B,GAAI,OAAM,EAAO,EAAO,OAAS,GAAG,KAAK,KAAO,EAAS,KAAO,KAE9D,GAAU,CAAC,EAAK,EAAK,EAAM,IAC/B,IAAS,KAAO,GAChB,GAAU,EAAK,EAAK,EAAM,EAAK,UAAY,KAGvC,GAAQ,GAAI,OAAM,KAAK,KAAK,MAE5B,GAAY,CAAC,EAAK,EAAK,EAAM,IACjC,IAAW,KAAO,GACjB,GAAI,MAAM,EAAS,GAAO,EAAK,EAAM,QACtC,EAAO,SAAW,OAAO,WAAW,IAAW,EAAO,OAAS,GAEjE,GAAO,QAAU,KC/RjB,gCACA,GAAM,IAAiB,KACjB,GAAe,gBAFrB,SAKE,YAAa,EAAK,GAChB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,QAAU,EAAI,SAAW,KAC9B,KAAK,QAAU,EAAI,SAAW,KAC9B,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,SAAW,EAAI,UAAY,KAChC,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,KAAO,EAAI,MAAQ,KACxB,KAAK,KAAO,EAAI,MAAQ,KACxB,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,IAAM,EAAI,KAAO,KACtB,KAAK,MAAQ,EAAI,OAAS,KAC1B,KAAK,OAAS,GAAU,GAG1B,SACE,GAAM,GAAO,KAAK,aAClB,GAAI,IAAS,GACX,MAAO,MAET,GAAM,GAAU,OAAO,WAAW,GAG5B,EAAS,IAAM,KAAK,KAAK,EAAI,EAAU,KACvC,EAAM,OAAO,YAAY,GAG/B,OAAS,GAAI,EAAG,EAAI,IAAK,IACvB,EAAI,GAAK,EAEX,GAAI,IAAO,CAIT,KAAO,cAAe,GAAK,SAAS,KAAK,OAAO,MAAM,EAAG,IACzD,KAAM,KAAK,MAAQ,IACnB,IAAK,KAAK,KAAO,KACjB,IAAK,KAAK,KAAO,KACjB,KAAM,EACN,MAAO,KAAK,OAAS,KACrB,KAAM,KAAK,OAAS,uBAAyB,iBAC7C,SAAU,GACV,MAAO,KAAK,OAAS,GACrB,MAAO,KAAK,OAAS,GACrB,OAAQ,EACR,OAAQ,EACR,MAAO,KAAK,OAAS,KACrB,MAAO,KAAK,OAAS,OACpB,OAAO,GAEV,EAAI,MAAM,EAAM,IAAK,EAAS,QAG9B,OAAS,GAAI,EAAU,IAAK,EAAI,EAAI,OAAQ,IAC1C,EAAI,GAAK,EAEX,MAAO,GAGT,aACE,MACE,MAAK,YAAY,QACjB,KAAK,YAAY,SACjB,KAAK,YAAY,SACjB,KAAK,YAAY,OACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SACjB,KAAK,YAAY,WACjB,KAAK,YAAY,WACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SACjB,KAAK,YAAY,YACjB,KAAK,YAAY,SACjB,KAAK,YAAY,QACjB,KAAK,YAAY,OACjB,KAAK,YAAY,SAIrB,YAAa,GACX,GAAI,KAAK,KAAW,MAAQ,KAAK,KAAW,OAC1C,MAAO,GACT,GAAM,GAAI,KAAK,YAAkB,MAAO,KAAK,GAAO,UAAY,IAC5D,KAAK,GACH,EAAI,IACP,KAAU,OAAS,IAAU,OAAS,IAAU,QAC7C,UAAY,IAChB,EAAQ,IAAM,EAAI;AAAA,EACd,EAAU,OAAO,WAAW,GAI9B,EAAS,KAAK,MAAM,KAAK,IAAI,GAAW,KAAK,IAAI,KAAO,EAC5D,MAAI,GAAU,GAAU,KAAK,IAAI,GAAI,IACnC,IAAU,GAEL,AADK,EAAS,EACR,IAIjB,GAAI,MAAQ,CAAC,EAAQ,EAAI,IAAM,GAAI,IAAI,GAAM,GAAQ,GAAS,GAAK,GAEnE,GAAM,IAAQ,CAAC,EAAG,IAChB,EAAI,OAAO,KAAK,GAAG,OAAO,CAAC,EAAG,IAAO,GAAE,GAAK,EAAE,GAAI,GAAI,GAAK,EAEvD,GAAU,GACd,EACG,QAAQ,MAAO,IACf,MAAM;AAAA,GACN,OAAO,GAAa,OAAO,OAAO,OAEjC,GAAc,CAAC,EAAK,KACxB,GAAM,GAAI,SAAS,EAAM,IAIzB,GAAI,IAAM,OAAO,WAAW,GAAQ,EAClC,MAAO,GAET,EAAO,EAAK,OAAQ,GAAI,KAAK,QAC7B,GAAM,GAAK,EAAK,MAAM,KAChB,EAAI,EAAG,QAAQ,QAAQ,2BAA4B,MACzD,GAAI,CAAC,EACH,MAAO,GAET,GAAM,GAAI,EAAG,KAAK,KAClB,SAAI,GAAK,0CAA0C,KAAK,GACpD,GAAI,MAAK,EAAI,KACb,WAAW,KAAK,GAAK,CAAC,EACtB,EACG,GAGT,GAAO,QAAU,KC9IjB,gCACA,GAAO,QAAU,GAAQ,aAAc,GACrC,KAAM,EAAM,EAAS,EAAO,IAC1B,AAAI,KAAK,MACP,GAAK,KAAO,KAAK,MACf,KAAK,KACP,GAAK,IAAM,KAAK,KAClB,EAAK,KAAO,YAAmB,QAAS,EAAQ,MAAQ,EACxD,EAAK,QAAU,EACf,AAAI,CAAC,KAAK,QAAU,EAAK,cAAgB,GACnC,aAAmB,QACrB,GAAO,OAAO,OAAO,EAAS,GAC9B,EAAU,EAAQ,SAEpB,KAAK,KAAK,OAAQ,EAAK,QAAS,EAAS,IACpC,AAAI,YAAmB,OAC5B,KAAK,KAAK,QAAS,OAAO,OAAO,EAAS,IAE1C,KAAK,KAAK,QAAS,OAAO,OAAO,GAAI,OAAM,GAAG,MAAS,KAAY,QClBzE,gCAKA,GAAM,IAAM,CACV,IACA,IACA,IACA,IACA,KAGI,GAAM,GAAI,IAAI,GAClB,OAAO,aAAa,MAAS,EAAK,WAAW,KAEzC,GAAQ,GAAI,KAAI,GAAI,IAAI,CAAC,EAAM,IAAM,CAAC,EAAM,GAAI,MAChD,GAAQ,GAAI,KAAI,GAAI,IAAI,CAAC,EAAM,IAAM,CAAC,EAAM,GAAI,MAEtD,GAAO,QAAU,CACf,OAAQ,GAAK,GAAI,OAAO,CAAC,EAAG,IAAM,EAAE,MAAM,GAAG,KAAK,GAAM,IAAI,IAAK,GACjE,OAAQ,GAAK,GAAI,OAAO,CAAC,EAAG,IAAM,EAAE,MAAM,GAAG,KAAK,GAAM,IAAI,IAAK,MCrBnE,gCACA,GAAO,QAAU,CAAC,EAAM,EAAO,IAC7B,IAAQ,KAOJ,GACF,GAAQ,GAAO,KAAS,CAAC,IAGvB,GACE,GAAO,KACT,IAAQ,IACN,EAAO,IACT,IAAQ,GACN,EAAO,GACT,IAAQ,IAEL,KCrBT,gCACA,GAAM,IAAmB,KACnB,GAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAe,gBAEf,GAAc,GAAK,KAAO,KAC1B,GAAU,OAAO,WACjB,GAAO,OAAO,QACd,GAAY,OAAO,aACnB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAS,OAAO,UAChB,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAa,OAAO,cACpB,GAAQ,OAAO,SACf,GAAO,OAAO,QACd,GAAiB,KACjB,GAAmB,KAEnB,GAAkB,KAElB,GAAa,GAAO,aAAyB,IACjD,YAAa,EAAG,GAGd,GAFA,EAAM,GAAO,GACb,MAAM,GACF,MAAO,IAAM,SACf,KAAM,IAAI,WAAU,oBACtB,KAAK,KAAO,EAEZ,KAAK,SAAW,CAAC,CAAC,EAAI,SAEtB,KAAK,MAAQ,QAAQ,QAAU,QAAQ,SACvC,KAAK,OAAS,QAAQ,IAAI,MAAQ,GAClC,KAAK,YAAc,EAAI,aAAe,GACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,IAAM,EAAI,KAAO,QAAQ,MAC9B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,QAAU,CAAC,CAAC,EAAI,QACrB,KAAK,MAAQ,EAAI,OAAS,KAEtB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,GAAI,GAAW,GACf,GAAI,CAAC,KAAK,eAAiB,GAAK,MAAM,WAAW,IAG/C,GAAM,GAAS,GAAK,MAAM,MAAM,GAChC,KAAK,KAAO,EAAE,OAAO,EAAO,KAAK,QACjC,EAAW,EAAO,KAGpB,KAAK,MAAQ,CAAC,CAAC,EAAI,OAAS,QAAQ,WAAa,QAC7C,KAAK,OACP,MAAK,KAAO,GAAS,OAAO,KAAK,KAAK,QAAQ,MAAO,MACrD,EAAI,EAAE,QAAQ,MAAO,MAGvB,KAAK,SAAW,EAAI,UAAY,GAAK,QAAQ,KAAK,IAAK,GAEnD,KAAK,OAAS,IAChB,MAAK,KAAO,MAEV,GACF,KAAK,KAAK,iBAAkB,aAAa,uBAA+B,CACtE,MAAO,KACP,KAAM,EAAW,KAAK,OAI1B,AAAI,KAAK,UAAU,IAAI,KAAK,UAC1B,KAAK,IAAS,KAAK,UAAU,IAAI,KAAK,WAEtC,KAAK,OAGR,MACC,GAAG,MAAM,KAAK,SAAU,CAAC,EAAI,KAC3B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAS,MAIjB,IAAU,GACT,KAAK,UAAU,IAAI,KAAK,SAAU,GAClC,KAAK,KAAO,EACP,EAAK,UACR,GAAK,KAAO,GACd,KAAK,KAAO,GAAQ,GACpB,KAAK,KAAK,OAAQ,GAClB,KAAK,OAGN,MACC,OAAQ,KAAK,UACN,OAAQ,MAAO,MAAK,UACpB,YAAa,MAAO,MAAK,UACzB,eAAgB,MAAO,MAAK,cAExB,MAAO,MAAK,QAIxB,IAAO,GACN,MAAO,IAAQ,EAAM,KAAK,OAAS,YAAa,KAAK,WAGtD,MACC,AAAI,KAAK,OAAS,aAAe,KAAK,UACpC,MAAK,QAAU,IAEjB,KAAK,OAAS,GAAI,IAAO,CACvB,KAAM,KAAK,KACX,SAAU,KAAK,SAGf,KAAM,KAAK,IAAM,KAAK,KAAK,MAC3B,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,KAAM,KAAK,KAAK,KAChB,MAAO,KAAK,QAAU,KAAO,KAAK,OAAS,KAAK,KAAK,MACrD,KAAM,KAAK,KACX,MAAO,KAAK,SAAW,KACvB,KAAK,KAAK,MAAQ,KAAK,MAAQ,KAAK,OAAS,GAC7C,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,MACxC,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,QAGtC,KAAK,OAAO,UAAY,CAAC,KAAK,OAChC,KAAK,MAAM,GAAI,IAAI,CACjB,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,IAAK,KAAK,SAAW,KAAO,KAAK,OAAO,IACxC,MAAO,KAAK,QAAU,KAAO,KAAK,OAAS,KAAK,OAAO,MACvD,KAAM,KAAK,KACX,SAAU,KAAK,SACf,KAAM,KAAK,OAAO,KAClB,IAAK,KAAK,SAAW,KAAO,KAAK,OAAO,IACxC,MAAO,KAAK,SAAW,KAAO,KAAK,OAAO,MAC1C,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,IAAK,KAAK,SAAW,KAAO,KAAK,KAAK,IACtC,MAAO,KAAK,SAAW,KAAO,KAAK,KAAK,QACvC,UAEL,KAAK,MAAM,KAAK,OAAO,QAGxB,MACC,AAAI,KAAK,KAAK,OAAO,MAAQ,KAC3B,MAAK,MAAQ,KACf,KAAK,KAAK,KAAO,EACjB,KAAK,MACL,KAAK,OAGN,MACC,GAAG,SAAS,KAAK,SAAU,CAAC,EAAI,KAC9B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAY,MAIpB,IAAa,GACZ,KAAK,SAAW,EAAS,QAAQ,MAAO,KACxC,KAAK,MACL,KAAK,OAGN,IAAW,GACV,KAAK,KAAO,OACZ,KAAK,SAAW,GAAK,SAAS,KAAK,IAAK,GAAU,QAAQ,MAAO,KACjE,KAAK,KAAK,KAAO,EACjB,KAAK,MACL,KAAK,OAGN,MACC,GAAI,KAAK,KAAK,MAAQ,GACpB,GAAM,GAAU,KAAK,KAAK,IAAM,IAAM,KAAK,KAAK,IAChD,GAAI,KAAK,UAAU,IAAI,IACrB,GAAM,GAAW,KAAK,UAAU,IAAI,GACpC,GAAI,EAAS,QAAQ,KAAK,OAAS,EACjC,MAAO,MAAK,IAAU,GAE1B,KAAK,UAAU,IAAI,EAAS,KAAK,UAInC,GADA,KAAK,MACD,KAAK,KAAK,OAAS,EACrB,MAAO,MAAK,MAEd,KAAK,OAGN,MACC,GAAG,KAAK,KAAK,SAAU,IAAK,CAAC,EAAI,KAC/B,GAAI,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAY,MAIpB,IAAa,GACZ,GAAM,GAAW,IAAM,KAAK,KAAK,KAAK,KAAK,KAAO,KAC5C,EAAS,KAAK,IAAI,EAAU,KAAK,aACjC,EAAM,OAAO,YAAY,GAC/B,KAAK,IAAM,EAAI,EAAK,EAAG,EAAI,OAAQ,EAAG,KAAK,KAAK,KAAM,IAGvD,IAAO,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,GAC5C,GAAG,KAAK,EAAI,EAAK,EAAQ,EAAQ,EAAK,CAAC,EAAI,KACzC,GAAI,EAGF,MAAO,MAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAElD,KAAK,IAAQ,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,MAInE,IAAQ,EAAI,GACX,GAAG,MAAM,EAAI,IAGd,IAAS,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,GAC3D,GAAI,GAAa,GAAK,EAAS,GAC7B,GAAM,GAAK,GAAI,OAAM,8BACrB,SAAG,KAAO,KAAK,SACf,EAAG,QAAU,OACb,EAAG,KAAO,MACH,KAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAGlD,GAAI,EAAY,GACd,GAAM,GAAK,GAAI,OAAM,kCACrB,SAAG,KAAO,KAAK,SACf,EAAG,QAAU,OACb,EAAG,KAAO,MACH,KAAK,IAAO,EAAI,IAAM,KAAK,KAAK,QAAS,IAIlD,GAAI,IAAc,EAChB,OAAS,GAAI,EAAW,EAAI,GAAU,EAAY,EAAa,IAC7D,EAAI,EAAI,GAAU,EAClB,IACA,IAIJ,GAAM,GAAW,IAAW,GAAK,IAAc,EAAI,OACjD,EAAM,EAAI,MAAM,EAAQ,EAAS,GAQnC,GAPA,GAAU,EACV,GAAe,EACf,GAAO,EACP,GAAU,EAEV,KAAK,MAAM,GAEP,CAAC,EACH,MAAI,IACF,KAAK,MAAM,OAAO,MAAM,IACnB,KAAK,IAAO,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,OAGlE,AAAI,GAAU,GACZ,GAAM,OAAO,YAAY,GACzB,EAAS,GAEX,EAAS,EAAI,OAAS,EACtB,KAAK,IAAM,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,MA1RrD,gBA8R6B,KAC1B,MACC,KAAK,IAAS,GAAG,UAAU,KAAK,YAGjC,MACC,KAAK,IAAY,GAAG,aAAa,KAAK,YAGvC,MACC,KAAK,IAAY,GAAG,SAAS,KAAK,SAAU,OAG7C,IAAO,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,GAC5C,GAAI,GAAQ,GACZ,IACE,GAAM,GAAY,GAAG,SAAS,EAAI,EAAK,EAAQ,EAAQ,GACvD,KAAK,IAAQ,EAAI,EAAK,EAAQ,EAAQ,EAAK,EAAQ,EAAa,GAChE,EAAQ,WAIR,GAAI,EACF,IACE,KAAK,IAAO,EAAI,cACT,OAKd,IAAQ,EAAI,GACX,GAAG,UAAU,GACb,MAIE,GAAgB,GAAO,aAA4B,IACvD,YAAa,EAAW,GACtB,EAAM,GAAO,GACb,MAAM,GACN,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,SAAW,CAAC,CAAC,EAAI,SACtB,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,QAAU,CAAC,CAAC,EAAI,QAErB,KAAK,UAAY,EACjB,KAAK,KAAO,EAAU,KAClB,KAAK,OAAS,aAAe,KAAK,UACpC,MAAK,QAAU,IAEjB,KAAK,KAAO,EAAU,KACtB,KAAK,KAAO,KAAK,IAAM,EAAU,MACjC,KAAK,IAAM,KAAK,SAAW,KAAO,EAAU,IAC5C,KAAK,IAAM,KAAK,SAAW,KAAO,EAAU,IAC5C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,KAAO,EAAU,KACtB,KAAK,MAAQ,KAAK,QAAU,KAAO,EAAI,OAAS,EAAU,MAC1D,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,MAAQ,KAAK,SAAW,KAAO,EAAU,MAC9C,KAAK,SAAW,EAAU,SAEtB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,GAAI,GAAW,GACf,GAAI,GAAK,WAAW,KAAK,OAAS,CAAC,KAAK,eACtC,GAAM,GAAS,GAAK,MAAM,KAAK,MAC/B,EAAW,EAAO,KAClB,KAAK,KAAO,KAAK,KAAK,OAAO,EAAO,KAAK,QAG3C,KAAK,OAAS,EAAU,KACxB,KAAK,YAAc,EAAU,eAE7B,KAAK,OAAS,GAAI,IAAO,CACvB,KAAM,KAAK,KACX,SAAU,KAAK,SAGf,KAAM,KAAK,KACX,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,KAAM,KAAK,KACX,MAAO,KAAK,QAAU,KAAO,KAAK,MAClC,KAAM,KAAK,KACX,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,QAGjC,GACF,KAAK,KAAK,iBAAkB,aAAa,uBAA+B,CACtE,MAAO,KACP,KAAM,EAAW,KAAK,OAItB,KAAK,OAAO,UAAY,CAAC,KAAK,OAChC,MAAM,MAAM,GAAI,IAAI,CAClB,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,MAAO,KAAK,QAAU,KAAO,KAAK,MAClC,KAAM,KAAK,KACX,SAAU,KAAK,SACf,KAAM,KAAK,KACX,IAAK,KAAK,SAAW,KAAO,KAAK,IACjC,MAAO,KAAK,SAAW,KAAO,KAAK,MACnC,IAAK,KAAK,SAAW,KAAO,KAAK,UAAU,IAC3C,IAAK,KAAK,SAAW,KAAO,KAAK,UAAU,IAC3C,MAAO,KAAK,SAAW,KAAO,KAAK,UAAU,QAC5C,UAGL,MAAM,MAAM,KAAK,OAAO,OACxB,EAAU,KAAK,OAGhB,IAAO,GACN,MAAO,IAAQ,EAAM,KAAK,OAAS,YAAa,KAAK,UAGvD,MAAO,GACL,GAAM,GAAW,EAAK,OACtB,GAAI,EAAW,KAAK,YAClB,KAAM,IAAI,OAAM,6CAClB,YAAK,aAAe,EACb,MAAM,MAAM,GAGrB,MACE,MAAI,MAAK,aACP,KAAK,MAAM,OAAO,MAAM,KAAK,cACxB,MAAM,SAIjB,GAAW,KAAO,GAClB,GAAW,IAAM,GAEjB,GAAM,IAAU,GACd,EAAK,SAAW,OACd,EAAK,cAAgB,YACrB,EAAK,iBAAmB,eACxB,cAEJ,GAAO,QAAU,KClbjB,gCACA,GAAO,QAAU,SAAU,GACzB,EAAQ,UAAU,OAAO,UAAY,YACnC,OAAS,GAAS,KAAK,KAAM,EAAQ,EAAS,EAAO,KACnD,KAAM,GAAO,UCJnB,gCACA,GAAO,QAAU,EAEjB,EAAQ,KAAO,GACf,EAAQ,OAAS,EAEjB,WAAkB,GAChB,GAAI,GAAO,KASX,GARM,YAAgB,IACpB,GAAO,GAAI,IAGb,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,OAAS,EAEV,GAAQ,MAAO,GAAK,SAAY,WAClC,EAAK,QAAQ,SAAU,GACrB,EAAK,KAAK,aAEH,UAAU,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,EAAK,KAAK,UAAU,IAIxB,MAAO,GAGT,EAAQ,UAAU,WAAa,SAAU,GACvC,GAAI,EAAK,OAAS,KAChB,KAAM,IAAI,OAAM,oDAGlB,GAAI,GAAO,EAAK,KACZ,EAAO,EAAK,KAEhB,MAAI,IACF,GAAK,KAAO,GAGV,GACF,GAAK,KAAO,GAGV,IAAS,KAAK,MAChB,MAAK,KAAO,GAEV,IAAS,KAAK,MAChB,MAAK,KAAO,GAGd,EAAK,KAAK,SACV,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KAEL,GAGT,EAAQ,UAAU,YAAc,SAAU,GACxC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,SAAW,SAAU,GACrC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,KAAO,WACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAK,KAAM,UAAU,IAEvB,MAAO,MAAK,QAGd,EAAQ,UAAU,QAAU,WAC1B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAQ,KAAM,UAAU,IAE1B,MAAO,MAAK,QAGd,EAAQ,UAAU,IAAM,WACtB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,MAAQ,WACxB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,QAAU,SAAU,EAAI,GACxC,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,EAAG,IAAW,KAAM,IACnD,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,eAAiB,SAAU,EAAI,GAC/C,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IACjE,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,IAAM,SAAU,GAChC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,WAAa,SAAU,GACvC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,IAAM,SAAU,EAAI,GACpC,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,WAAa,SAAU,EAAI,GAC3C,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAI,GACvC,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,EAAG,IAAW,KAAM,IAC/B,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,cAAgB,SAAU,EAAI,GAC9C,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IAC7C,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,QAAU,WAE1B,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,eAAiB,WAEjC,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,MAAQ,SAAU,EAAM,GACxC,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAM,IAC/D,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAI,IAAK,EAAS,EAAO,KACrD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAU,EAAM,GAC/C,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,KAAK,OAAQ,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAI,IACvE,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAM,IAAK,EAAS,EAAO,KACvD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAO,KAAgB,GAC1D,AAAI,EAAQ,KAAK,QACf,GAAQ,KAAK,OAAS,GAEpB,EAAQ,GACV,GAAQ,KAAK,OAAS,GAGxB,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAO,IAChE,EAAS,EAAO,KAIlB,OADI,GAAM,GACD,EAAI,EAAG,GAAU,EAAI,EAAa,IACzC,EAAI,KAAK,EAAO,OAChB,EAAS,KAAK,WAAW,GAE3B,AAAI,IAAW,MACb,GAAS,KAAK,MAGZ,IAAW,KAAK,MAAQ,IAAW,KAAK,MAC1C,GAAS,EAAO,MAGlB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAS,GAAO,KAAM,EAAQ,EAAM,IAEtC,MAAO,IAGT,EAAQ,UAAU,QAAU,WAG1B,OAFI,GAAO,KAAK,KACZ,EAAO,KAAK,KACP,EAAS,EAAM,IAAW,KAAM,EAAS,EAAO,MACvD,GAAI,GAAI,EAAO,KACf,EAAO,KAAO,EAAO,KACrB,EAAO,KAAO,EAEhB,YAAK,KAAO,EACZ,KAAK,KAAO,EACL,MAGT,YAAiB,EAAM,EAAM,GAC3B,GAAI,GAAW,IAAS,EAAK,KAC3B,GAAI,IAAK,EAAO,KAAM,EAAM,GAC5B,GAAI,IAAK,EAAO,EAAM,EAAK,KAAM,GAEnC,MAAI,GAAS,OAAS,MACpB,GAAK,KAAO,GAEV,EAAS,OAAS,MACpB,GAAK,KAAO,GAGd,EAAK,SAEE,EAGT,YAAe,EAAM,GACnB,EAAK,KAAO,GAAI,IAAK,EAAM,EAAK,KAAM,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAkB,EAAM,GACtB,EAAK,KAAO,GAAI,IAAK,EAAM,KAAM,EAAK,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAe,EAAO,EAAM,EAAM,GAChC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAO,EAAM,EAAM,GAGrC,KAAK,KAAO,EACZ,KAAK,MAAQ,EAEb,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAGd,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAIhB,IAEE,AAAQ,KAAiB,SAClB,OCzaT,6CAYE,YAAa,EAAM,GACjB,KAAK,KAAO,GAAQ,KACpB,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,KAAO,KACZ,KAAK,QAAU,KACf,KAAK,QAAU,GACf,KAAK,OAAS,GACd,KAAK,MAAQ,KAIX,GAAmB,KACnB,GAAe,KACf,GAAoB,KACpB,GAAqB,KACrB,GAAiB,GAAW,KAC5B,GAAgB,GAAW,IAC3B,GAAkB,KAClB,GAAM,OAAO,MAAM,MACnB,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAa,OAAO,cACpB,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAa,OAAO,cACpB,GAAc,OAAO,eACrB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAY,OAAO,aACnB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAW,OAAO,YAClB,GAAkB,OAAO,mBACzB,GAAQ,OAAO,SACf,GAAU,OAAO,WAEjB,GAAa,cACb,GAAe,gBACf,GAAiB,KAEjB,GAAO,GAAO,aAAmB,IACrC,YAAa,GACX,MAAM,GACN,EAAM,GAAO,OAAO,OAAO,MAC3B,KAAK,IAAM,EACX,KAAK,KAAO,EAAI,MAAQ,GACxB,KAAK,IAAM,EAAI,KAAO,QAAQ,MAC9B,KAAK,YAAc,EAAI,YACvB,KAAK,cAAgB,CAAC,CAAC,EAAI,cAC3B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,MAAQ,CAAC,CAAC,EAAI,MACnB,KAAK,OAAU,GAAI,QAAU,IAAI,QAAQ,YAAa,IACtD,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,UAAY,EAAI,WAAa,GAAI,KACtC,KAAK,aAAe,EAAI,cAAgB,GAAI,KAE5C,KAAK,IAAmB,GACpB,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAEtB,KAAK,SAAW,CAAC,CAAC,EAAI,SACtB,KAAK,IAAM,KACX,AAAI,EAAI,KACF,OAAO,GAAI,MAAS,UACtB,GAAI,KAAO,IACT,KAAK,UACP,GAAI,KAAK,SAAW,IACtB,KAAK,IAAM,GAAI,IAAK,KAAK,EAAI,MAC7B,KAAK,IAAI,GAAG,OAAQ,GAAS,MAAM,MAAM,IACzC,KAAK,IAAI,GAAG,MAAO,GAAK,MAAM,OAC9B,KAAK,IAAI,GAAG,QAAS,GAAK,KAAK,OAC/B,KAAK,GAAG,SAAU,GAAK,KAAK,IAAI,WAEhC,KAAK,GAAG,QAAS,KAAK,KAExB,KAAK,aAAe,CAAC,CAAC,EAAI,aAC1B,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,QAAU,CAAC,CAAC,EAAI,QACrB,KAAK,MAAQ,EAAI,OAAS,KAE1B,KAAK,OAAS,MAAO,GAAI,QAAW,WAAa,EAAI,OAAS,GAAK,GAEnE,KAAK,IAAS,GAAI,IAClB,KAAK,IAAQ,EACb,KAAK,KAAO,CAAC,EAAI,MAAQ,EACzB,KAAK,IAAc,GACnB,KAAK,IAAS,IAGf,IAAQ,GACP,MAAO,OAAM,MAAM,GAGrB,IAAK,GACH,YAAK,MAAM,GACJ,KAGT,IAAK,GACH,MAAI,IACF,KAAK,MAAM,GACb,KAAK,IAAS,GACd,KAAK,MACE,KAGT,MAAO,GACL,GAAI,KAAK,IACP,KAAM,IAAI,OAAM,mBAElB,MAAI,aAAgB,IAClB,KAAK,IAAa,GAElB,KAAK,IAAY,GACZ,KAAK,SAGb,IAAc,GACb,GAAM,GAAW,GAAK,QAAQ,KAAK,IAAK,EAAE,MAK1C,GAJI,KAAK,QACP,GAAE,KAAO,KAAK,OAAS,IAAM,EAAE,KAAK,QAAQ,aAAc,KAGxD,CAAC,KAAK,OAAO,EAAE,KAAM,GACvB,EAAE,cAEF,GAAM,GAAM,GAAI,IAAQ,EAAE,KAAM,EAAU,IAC1C,EAAI,MAAQ,GAAI,IAAc,EAAG,KAAK,IAAU,IAChD,EAAI,MAAM,GAAG,MAAO,GAAK,KAAK,IAAS,IACvC,KAAK,KAAS,EACd,KAAK,IAAO,KAAK,GAGnB,KAAK,OAGN,IAAa,GACZ,GAAM,GAAW,GAAK,QAAQ,KAAK,IAAK,GACxC,AAAI,KAAK,QACP,GAAI,KAAK,OAAS,IAAM,EAAE,QAAQ,aAAc,KAElD,KAAK,IAAO,KAAK,GAAI,IAAQ,EAAG,IAChC,KAAK,OAGN,IAAO,GACN,EAAI,QAAU,GACd,KAAK,KAAS,EACd,GAAM,GAAO,KAAK,OAAS,OAAS,QACpC,GAAG,GAAM,EAAI,SAAU,CAAC,EAAI,KAC1B,EAAI,QAAU,GACd,KAAK,KAAS,EACd,AAAI,EACF,KAAK,KAAK,QAAS,GAEnB,KAAK,IAAQ,EAAK,MAIvB,IAAS,EAAK,GACb,KAAK,UAAU,IAAI,EAAI,SAAU,GACjC,EAAI,KAAO,EAGN,KAAK,OAAO,EAAI,KAAM,IACzB,GAAI,OAAS,IAEf,KAAK,OAGN,IAAU,GACT,EAAI,QAAU,GACd,KAAK,KAAS,EACd,GAAG,QAAQ,EAAI,SAAU,CAAC,EAAI,KAG5B,GAFA,EAAI,QAAU,GACd,KAAK,KAAS,EACV,EACF,MAAO,MAAK,KAAK,QAAS,GAC5B,KAAK,IAAW,EAAK,MAIxB,IAAY,EAAK,GAChB,KAAK,aAAa,IAAI,EAAI,SAAU,GACpC,EAAI,QAAU,EACd,KAAK,OAGN,MACC,GAAI,MAAK,KAGT,KAAK,IAAc,GACnB,OAAS,GAAI,KAAK,IAAO,KACvB,IAAM,MAAQ,KAAK,IAAQ,KAAK,KAChC,EAAI,EAAE,KAEN,GADA,KAAK,IAAY,EAAE,OACf,EAAE,MAAM,QACV,GAAM,GAAI,EAAE,KACZ,KAAK,IAAO,WAAW,GACvB,EAAE,KAAO,EAIb,KAAK,IAAc,GAEf,KAAK,KAAU,CAAC,KAAK,IAAO,QAAU,KAAK,MAAU,GACvD,CAAI,KAAK,IACP,KAAK,IAAI,IAAI,IAEb,OAAM,MAAM,IACZ,MAAM,aAKP,MACH,MAAO,MAAK,KAAU,KAAK,IAAO,MAAQ,KAAK,IAAO,KAAK,OAG5D,IAAU,GACT,KAAK,IAAO,QACZ,KAAK,KAAS,EACd,KAAK,OAGN,IAAa,GACZ,GAAI,GAAI,SAGR,GAAI,EAAI,OACN,AAAI,IAAQ,KAAK,KAAY,CAAC,EAAI,OAChC,KAAK,IAAM,GACb,OASF,GANK,EAAI,MACP,CAAI,KAAK,UAAU,IAAI,EAAI,UACzB,KAAK,IAAQ,EAAK,KAAK,UAAU,IAAI,EAAI,WAEzC,KAAK,IAAM,IAEX,EAAC,EAAI,MAIL,GAAI,QAGJ,GAAC,KAAK,cAAgB,EAAI,KAAK,eAAiB,CAAC,EAAI,SACvD,CAAI,KAAK,aAAa,IAAI,EAAI,UAC5B,KAAK,IAAW,EAAK,KAAK,aAAa,IAAI,EAAI,WAE/C,KAAK,IAAS,GACZ,CAAC,EAAI,WAMX,GADA,EAAI,MAAQ,KAAK,IAAO,GACpB,CAAC,EAAI,OACP,EAAI,OAAS,GACb,OAGF,AAAI,IAAQ,KAAK,KAAY,CAAC,EAAI,OAChC,KAAK,IAAM,MAGd,IAAW,GACV,MAAO,CACL,OAAQ,CAAC,EAAM,EAAK,IAAS,KAAK,KAAK,EAAM,EAAK,GAClD,MAAO,KAAK,MACZ,IAAK,KAAK,IACV,SAAU,EAAI,SACd,cAAe,KAAK,cACpB,YAAa,KAAK,YAClB,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,UAAW,KAAK,UAChB,UAAW,KAAK,UAChB,QAAS,KAAK,QACd,MAAO,KAAK,QAIf,IAAQ,GACP,KAAK,KAAS,EACd,IACE,MAAO,IAAI,MAAK,IAAiB,EAAI,KAAM,KAAK,IAAU,IACvD,GAAG,MAAO,IAAM,KAAK,IAAS,IAC9B,GAAG,QAAS,GAAM,KAAK,KAAK,QAAS,UACjC,GACP,KAAK,KAAK,QAAS,KAItB,MACC,AAAI,KAAK,KAAY,KAAK,IAAS,OACjC,KAAK,IAAS,MAAM,UAIvB,IAAO,GACN,EAAI,MAAQ,GAER,EAAI,SACN,EAAI,QAAQ,QAAQ,IAClB,GAAM,GAAI,KAAK,OACb,EAAI,KAAK,MAAM,KAAK,OAAO,OAAS,IAAM,KACxC,EAAI,KAEF,EAAO,IAAM,KAAO,GAAK,EAAE,QAAQ,OAAQ,KACjD,KAAK,IAAY,EAAO,KAI5B,GAAM,GAAS,EAAI,MACb,EAAM,KAAK,IAEjB,AAAI,EACF,EAAO,GAAG,OAAQ,IAChB,AAAK,EAAI,MAAM,IACb,EAAO,UAGX,EAAO,GAAG,OAAQ,IAChB,AAAK,MAAM,MAAM,IACf,EAAO,UAKf,QACE,MAAI,MAAK,KACP,KAAK,IAAI,QACJ,MAAM,WAjWjB,gBAqWuB,IACrB,YAAa,GACX,MAAM,GACN,KAAK,IAAmB,GAI1B,SACA,WAEC,IAAO,GACN,GAAM,GAAO,KAAK,OAAS,WAAa,YACxC,KAAK,IAAQ,EAAK,GAAG,GAAM,EAAI,YAGhC,IAAU,EAAK,GACd,KAAK,IAAW,EAAK,GAAG,YAAY,EAAI,YAIzC,IAAO,GACN,GAAM,GAAS,EAAI,MACb,EAAM,KAAK,IAEjB,AAAI,EAAI,SACN,EAAI,QAAQ,QAAQ,IAClB,GAAM,GAAI,KAAK,OACb,EAAI,KAAK,MAAM,KAAK,OAAO,OAAS,IAAM,KACxC,EAAI,KAEF,EAAO,IAAM,KAAO,GAAK,EAAE,QAAQ,OAAQ,KACjD,KAAK,IAAY,EAAO,KAI5B,AAAI,EACF,EAAO,GAAG,OAAQ,IAChB,EAAI,MAAM,KAGZ,EAAO,GAAG,OAAQ,IAChB,MAAM,IAAO,OAMrB,GAAK,KAAO,GAEZ,GAAO,QAAU,KCtZjB,2BACA,GAAM,IAAmB,KACnB,GAAK,AAAQ,kBAAU,aACvB,GAAa,cAEf,GAAS,GAAG,OAEhB,GAAI,CAAC,IAGH,GAAM,GAAU,QAAQ,QAAQ,MAC1B,EAAY,EAAQ,WAAa,EAAQ,cAE/C,GAAS,CAAC,EAAI,EAAO,EAAK,KACxB,GAAM,GAAO,CAAC,EAAI,IAAO,EAAG,EAAI,EAAI,GAC9B,EAAM,GAAI,GAChB,EAAI,WAAa,EACjB,EAAQ,aAAa,EAAI,EAAO,EAAK,IAIzC,GAAM,IAAa,OAAO,cACpB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,GAAM,OAAO,OACb,GAAY,OAAO,aACnB,GAAS,OAAO,UAChB,GAAS,OAAO,UAChB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAClB,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAO,OAAO,QACd,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAY,OAAO,aACnB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAQ,OAAO,SACf,GAAS,OAAO,UAChB,GAAW,OAAO,YAClB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAhDxB,gBAkDyB,IACvB,YAAa,EAAM,GAOjB,GANA,EAAM,GAAO,GACb,MAAM,GAEN,KAAK,SAAW,GAChB,KAAK,SAAW,GAEZ,MAAO,IAAS,SAClB,KAAM,IAAI,WAAU,yBAEtB,KAAK,IAAY,GACjB,KAAK,IAAO,MAAO,GAAI,IAAO,SAAW,EAAI,GAAK,KAClD,KAAK,IAAS,EACd,KAAK,IAAa,EAAI,UAAY,GAAG,KAAK,KAC1C,KAAK,IAAY,GACjB,KAAK,IAAS,MAAO,GAAI,MAAS,SAAW,EAAI,KAAO,SACxD,KAAK,IAAW,KAAK,IACrB,KAAK,IAAc,MAAO,GAAI,WAAc,UAC1C,EAAI,UAAY,GAElB,AAAI,MAAO,MAAK,KAAS,SACvB,KAAK,MAEL,KAAK,SAGL,MAAQ,MAAO,MAAK,OACpB,QAAU,MAAO,MAAK,IAE1B,QACE,KAAM,IAAI,WAAU,6BAGtB,MACE,KAAM,IAAI,WAAU,8BAGrB,MACC,GAAG,KAAK,KAAK,IAAQ,IAAK,CAAC,EAAI,IAAO,KAAK,IAAS,EAAI,KAGzD,IAAU,EAAI,GACb,AAAI,EACF,KAAK,IAAU,GAEf,MAAK,IAAO,EACZ,KAAK,KAAK,OAAQ,GAClB,KAAK,QAIR,MACC,MAAO,QAAO,YAAY,KAAK,IAAI,KAAK,IAAY,KAAK,OAG1D,MACC,GAAI,CAAC,KAAK,KACR,KAAK,IAAY,GACjB,GAAM,GAAM,KAAK,MAEjB,GAAI,EAAI,SAAW,EACjB,MAAO,SAAQ,SAAS,IAAM,KAAK,IAAS,KAAM,EAAG,IACvD,GAAG,KAAK,KAAK,IAAM,EAAK,EAAG,EAAI,OAAQ,KAAM,CAAC,EAAI,EAAI,IACpD,KAAK,IAAS,EAAI,EAAI,MAI3B,IAAU,EAAI,EAAI,GACjB,KAAK,IAAY,GACjB,AAAI,EACF,KAAK,IAAU,GACR,KAAK,IAAc,EAAI,IAC9B,KAAK,OAGR,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,KACZ,GAAG,MAAM,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,KAAK,YAI9D,IAAW,GACV,KAAK,IAAY,GACjB,KAAK,MACL,KAAK,KAAK,QAAS,IAGpB,IAAe,EAAI,GAClB,GAAI,GAAM,GAEV,YAAK,KAAY,EACb,EAAK,GACP,GAAM,MAAM,MAAM,EAAK,EAAI,OAAS,EAAI,MAAM,EAAG,GAAM,IAErD,KAAO,GAAK,KAAK,KAAY,IAC/B,GAAM,GACN,KAAK,MACL,MAAM,OAGD,EAGT,KAAM,EAAI,GACR,OAAQ,OACD,gBACA,SACH,UAEG,QACH,AAAI,MAAO,MAAK,KAAS,UACvB,KAAK,MACP,UAEG,QACH,MAAI,MAAK,IACP,OACF,MAAK,IAAY,GACV,MAAM,KAAK,EAAI,YAGtB,MAAO,OAAM,KAAK,EAAI,MA9K9B,gBAmL6B,KAC1B,MACC,GAAI,GAAQ,GACZ,IACE,KAAK,IAAS,KAAM,GAAG,SAAS,KAAK,IAAQ,MAC7C,EAAQ,WAER,AAAI,GACF,KAAK,QAIV,MACC,GAAI,GAAQ,GACZ,IACE,GAAI,CAAC,KAAK,KACR,KAAK,IAAY,GACjB,GACE,GAAM,GAAM,KAAK,MAEX,EAAK,EAAI,SAAW,EAAI,EAC1B,GAAG,SAAS,KAAK,IAAM,EAAK,EAAG,EAAI,OAAQ,MAC/C,GAAI,CAAC,KAAK,IAAc,EAAI,GAC1B,YACK,IACT,KAAK,IAAY,GAEnB,EAAQ,WAER,AAAI,GACF,KAAK,QAIV,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,KACZ,GAAG,UAAU,GACb,KAAK,KAAK,YA1NhB,gBA+N0B,IACxB,YAAa,EAAM,GACjB,EAAM,GAAO,GACb,MAAM,GACN,KAAK,SAAW,GAChB,KAAK,SAAW,GAChB,KAAK,IAAY,GACjB,KAAK,IAAY,GACjB,KAAK,IAAU,GACf,KAAK,IAAc,GACnB,KAAK,IAAU,GACf,KAAK,IAAS,EACd,KAAK,IAAO,MAAO,GAAI,IAAO,SAAW,EAAI,GAAK,KAClD,KAAK,IAAS,EAAI,OAAS,OAAY,IAAQ,EAAI,KACnD,KAAK,IAAQ,MAAO,GAAI,OAAU,SAAW,EAAI,MAAQ,KACzD,KAAK,IAAc,MAAO,GAAI,WAAc,UAC1C,EAAI,UAAY,GAGlB,GAAM,GAAc,KAAK,MAAU,KAAO,KAAO,IACjD,KAAK,IAAgB,EAAI,QAAU,OACnC,KAAK,IAAU,KAAK,IAAgB,EAAc,EAAI,MAElD,KAAK,MAAS,MAChB,KAAK,MAGT,KAAM,EAAI,GACR,GAAI,IAAO,SACT,GAAI,KAAK,IACP,OACF,KAAK,IAAY,GAEnB,MAAO,OAAM,KAAK,EAAI,MAIpB,MAAQ,MAAO,MAAK,OACpB,QAAU,MAAO,MAAK,KAEzB,IAAW,GACV,KAAK,MACL,KAAK,IAAY,GACjB,KAAK,KAAK,QAAS,IAGpB,MACC,GAAG,KAAK,KAAK,IAAQ,KAAK,IAAS,KAAK,IACtC,CAAC,EAAI,IAAO,KAAK,IAAS,EAAI,KAGjC,IAAU,EAAI,GACb,AAAI,KAAK,KACL,KAAK,MAAY,MACjB,GAAM,EAAG,OAAS,SACpB,MAAK,IAAU,IACf,KAAK,OACA,AAAI,EACT,KAAK,IAAU,GAEf,MAAK,IAAO,EACZ,KAAK,KAAK,OAAQ,GAClB,KAAK,OAIT,IAAK,EAAK,GACR,MAAI,IACF,KAAK,MAAM,EAAK,GAElB,KAAK,IAAU,GAGX,CAAC,KAAK,KAAa,CAAC,KAAK,IAAQ,QACjC,MAAO,MAAK,KAAS,UACvB,KAAK,IAAU,KAAM,GAChB,KAGT,MAAO,EAAK,GAIV,MAHI,OAAO,IAAQ,UACjB,GAAM,OAAO,KAAK,EAAK,IAErB,KAAK,IACP,MAAK,KAAK,QAAS,GAAI,OAAM,wBACtB,IAGL,KAAK,MAAS,MAAQ,KAAK,KAAa,KAAK,IAAQ,OACvD,MAAK,IAAQ,KAAK,GAClB,KAAK,IAAc,GACZ,IAGT,MAAK,IAAY,GACjB,KAAK,IAAQ,GACN,KAGR,IAAS,GACR,GAAG,MAAM,KAAK,IAAM,EAAK,EAAG,EAAI,OAAQ,KAAK,IAAO,CAAC,EAAI,IACvD,KAAK,IAAU,EAAI,KAGtB,IAAW,EAAI,GACd,AAAI,EACF,KAAK,IAAU,GAEX,MAAK,MAAU,MACjB,MAAK,KAAS,GAChB,AAAI,KAAK,IAAQ,OACf,KAAK,MAEL,MAAK,IAAY,GAEjB,AAAI,KAAK,KAAW,CAAC,KAAK,IACxB,MAAK,IAAa,GAClB,KAAK,MACL,KAAK,KAAK,WACD,KAAK,KACd,MAAK,IAAc,GACnB,KAAK,KAAK,aAMjB,MACC,GAAI,KAAK,IAAQ,SAAW,EAC1B,AAAI,KAAK,KACP,KAAK,IAAU,KAAM,WACd,KAAK,IAAQ,SAAW,EACjC,KAAK,IAAQ,KAAK,IAAQ,YAE1B,GAAM,GAAQ,KAAK,IACnB,KAAK,IAAU,GACf,GAAO,KAAK,IAAM,EAAO,KAAK,IAC5B,CAAC,EAAI,IAAO,KAAK,IAAU,EAAI,MAIpC,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,KACZ,GAAG,MAAM,EAAI,GAAM,EAAK,KAAK,KAAK,QAAS,GAAM,KAAK,KAAK,aAhXjE,gBAqX8B,KAC3B,MACC,GAAI,GAGJ,GAAI,KAAK,KAAiB,KAAK,MAAY,KACzC,IACE,EAAK,GAAG,SAAS,KAAK,IAAQ,KAAK,IAAS,KAAK,WAC1C,GACP,GAAI,EAAG,OAAS,SACd,YAAK,IAAU,IACR,KAAK,MAEZ,KAAM,OAGV,GAAK,GAAG,SAAS,KAAK,IAAQ,KAAK,IAAS,KAAK,KAEnD,KAAK,IAAS,KAAM,IAGrB,MACC,GAAI,KAAK,KAAe,MAAO,MAAK,KAAS,UAC3C,GAAM,GAAK,KAAK,IAChB,KAAK,IAAO,KACZ,GAAG,UAAU,GACb,KAAK,KAAK,WAIb,IAAS,GAER,GAAI,GAAQ,GACZ,IACE,KAAK,IAAU,KACb,GAAG,UAAU,KAAK,IAAM,EAAK,EAAG,EAAI,OAAQ,KAAK,MACnD,EAAQ,WAER,GAAI,EACF,IAAM,KAAK,YAAmB,QAKtC,GAAQ,WAAa,GACrB,GAAQ,eAAiB,GAEzB,GAAQ,YAAc,GACtB,GAAQ,gBAAkB,KCra1B,gCAsBA,GAAM,IAAiB,KACjB,GAAiB,KACjB,GAAa,kBACb,GAAkB,KAClB,GAAmB,KAAO,KAC1B,GAAgB,KAChB,GAAc,KACd,GAAe,KAEf,GAAa,OAAO,KAAK,CAAC,GAAM,MAChC,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAY,OAAO,aACnB,GAAY,OAAO,aACnB,GAAe,OAAO,gBACtB,GAAK,OAAO,kBACZ,GAAM,OAAO,wBACb,GAAO,OAAO,QACd,GAAW,OAAO,YAClB,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAQ,OAAO,SACf,GAAe,OAAO,gBACtB,GAAkB,OAAO,mBACzB,GAAc,OAAO,eACrB,GAAc,OAAO,eACrB,GAAgB,OAAO,iBACvB,GAAY,OAAO,aACnB,GAAe,OAAO,gBACtB,GAAW,OAAO,YAClB,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAO,OAAO,UACd,GAAkB,OAAO,iBACzB,GAAiB,OAAO,gBACxB,GAAU,OAAO,UAEjB,GAAO,GAAK,GAElB,GAAO,QAAU,GAAO,aAAqB,IAC3C,YAAa,GACX,EAAM,GAAO,GACb,MAAM,GAEN,KAAK,KAAO,EAAI,MAAQ,GAIxB,KAAK,IAAmB,KAGxB,KAAK,GAAG,GAAM,IACZ,AAAI,MAAK,MAAW,SAAW,KAAK,MAAqB,KAGvD,KAAK,KAAK,kBAAmB,iCAIjC,AAAI,EAAI,OACN,KAAK,GAAG,GAAM,EAAI,QAElB,KAAK,GAAG,GAAM,IACZ,KAAK,KAAK,aACV,KAAK,KAAK,UACV,KAAK,KAAK,OACV,KAAK,KAAK,WAId,KAAK,OAAS,CAAC,CAAC,EAAI,OACpB,KAAK,iBAAmB,EAAI,kBAAoB,GAChD,KAAK,OAAS,MAAO,GAAI,QAAW,WAAa,EAAI,OAAS,GAG9D,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,KAAK,IAAS,GAAI,IAClB,KAAK,IAAU,KACf,KAAK,IAAa,KAClB,KAAK,IAAc,KACnB,KAAK,IAAS,QACd,KAAK,IAAQ,GACb,KAAK,IAAM,KACX,KAAK,IAAO,KACZ,KAAK,IAAS,GACd,KAAK,IAAS,KACd,KAAK,IAAW,GAChB,KAAK,IAAkB,GACvB,KAAK,IAAW,GACZ,MAAO,GAAI,QAAW,YACxB,KAAK,GAAG,OAAQ,EAAI,QAClB,MAAO,GAAI,SAAY,YACzB,KAAK,GAAG,QAAS,EAAI,UAGxB,IAAgB,EAAO,GACtB,AAAI,KAAK,MAAqB,MAC5B,MAAK,IAAmB,IAC1B,GAAI,GACJ,IACE,EAAS,GAAI,IAAO,EAAO,EAAU,KAAK,IAAK,KAAK,WAC7C,GACP,MAAO,MAAK,KAAK,oBAAqB,GAGxC,GAAI,EAAO,UACT,AAAI,KAAK,IACP,MAAK,IAAW,GAEZ,KAAK,MAAW,SAClB,MAAK,IAAS,UAChB,KAAK,IAAM,QAEX,MAAK,IAAkB,GACvB,KAAK,IAAM,sBAGb,KAAK,IAAkB,GACnB,CAAC,EAAO,WACV,KAAK,KAAK,oBAAqB,mBAAoB,CAAC,mBAC7C,CAAC,EAAO,KACf,KAAK,KAAK,oBAAqB,mBAAoB,CAAC,gBAEpD,GAAM,GAAO,EAAO,KACpB,GAAI,oBAAoB,KAAK,IAAS,CAAC,EAAO,SAC5C,KAAK,KAAK,oBAAqB,oBAAqB,CAAC,mBAC9C,CAAC,oBAAoB,KAAK,IAAS,EAAO,SACjD,KAAK,KAAK,oBAAqB,qBAAsB,CAAC,gBAEtD,GAAM,GAAQ,KAAK,IAAc,GAAI,IAAM,EAAQ,KAAK,IAAK,KAAK,KAIlE,GAAI,CAAC,KAAK,IACR,GAAI,EAAM,QAER,GAAM,GAAQ,KACZ,AAAK,EAAM,SACT,MAAK,IAAmB,KAE5B,EAAM,GAAG,MAAO,OAEhB,MAAK,IAAmB,GAG5B,AAAI,EAAM,KACR,AAAI,EAAM,KAAO,KAAK,iBACpB,GAAM,OAAS,GACf,KAAK,IAAM,eAAgB,GAC3B,KAAK,IAAS,SACd,EAAM,UACG,EAAM,KAAO,GACtB,MAAK,IAAQ,GACb,EAAM,GAAG,OAAQ,GAAK,KAAK,KAAS,GACpC,KAAK,IAAS,QAGhB,MAAK,IAAM,KACX,EAAM,OAAS,EAAM,QAAU,CAAC,KAAK,OAAO,EAAM,KAAM,GAExD,AAAI,EAAM,OAER,MAAK,IAAM,eAAgB,GAC3B,KAAK,IAAS,EAAM,OAAS,SAAW,SACxC,EAAM,UAEN,CAAI,EAAM,OACR,KAAK,IAAS,OAEd,MAAK,IAAS,SACd,EAAM,OAGR,AAAK,KAAK,IAIR,KAAK,IAAO,KAAK,GAHjB,MAAK,IAAO,KAAK,GACjB,KAAK,YAUlB,IAAe,GACd,GAAI,GAAK,GAET,MAAK,GAGE,AAAI,MAAM,QAAQ,GACvB,KAAK,KAAK,MAAM,KAAM,GAEtB,MAAK,IAAa,EAClB,KAAK,KAAK,QAAS,GACd,EAAM,YACT,GAAM,GAAG,MAAO,GAAK,KAAK,OAC1B,EAAK,KATP,MAAK,IAAa,KAClB,EAAK,IAYA,GAGR,MACC,EAAG,OAAU,KAAK,IAAc,KAAK,IAAO,UAE5C,GAAI,CAAC,KAAK,IAAO,QAQf,GAAM,GAAK,KAAK,IAEhB,AADiB,CAAC,GAAM,EAAG,SAAW,EAAG,OAAS,EAAG,OAE9C,KAAK,KACR,KAAK,KAAK,SAEZ,EAAG,KAAK,QAAS,GAAK,KAAK,KAAK,YAIrC,IAAc,EAAO,GAEpB,GAAM,GAAQ,KAAK,IACb,EAAK,EAAM,YACX,EAAK,GAAM,EAAM,QAAU,IAAa,EAAK,EAC/C,EAAM,MAAM,EAAU,EAAW,GAErC,SAAM,MAAM,GAEP,EAAM,aACT,MAAK,IAAS,SACd,KAAK,IAAc,KACnB,EAAM,OAGD,EAAE,QAGV,IAAc,EAAO,GACpB,GAAM,GAAQ,KAAK,IACb,EAAM,KAAK,IAAa,EAAO,GAGrC,MAAK,MAAK,KACR,KAAK,IAAU,GAEV,GAGR,IAAO,EAAI,EAAM,GAChB,AAAI,CAAC,KAAK,IAAO,QAAU,CAAC,KAAK,IAC/B,KAAK,KAAK,EAAI,EAAM,GAEpB,KAAK,IAAO,KAAK,CAAC,EAAI,EAAM,KAG/B,IAAW,GAEV,OADA,KAAK,IAAM,OAAQ,KAAK,KAChB,EAAM,UACP,qBACA,oBACH,KAAK,IAAM,GAAI,MAAM,KAAK,IAAO,KAAK,IAAK,IAC3C,UAEG,uBACH,KAAK,IAAO,GAAI,MAAM,KAAK,IAAO,KAAK,IAAM,IAC7C,UAEG,0BACA,iBACH,KAAK,IAAM,KAAK,KAAO,OAAO,OAAO,MACrC,KAAK,IAAI,KAAO,KAAK,IAAM,QAAQ,OAAQ,IAC3C,UAEG,0BACH,KAAK,IAAM,KAAK,KAAO,OAAO,OAAO,MACrC,KAAK,IAAI,SAAW,KAAK,IAAM,QAAQ,OAAQ,IAC/C,cAGO,KAAM,IAAI,OAAM,iBAAmB,EAAM,OAItD,MAAO,GACL,KAAK,IAAW,GAChB,KAAK,KAAK,QAAS,GAEnB,KAAK,KAAK,YAAa,EAAO,CAAE,YAAa,KAG/C,MAAO,GACL,GAAI,KAAK,IACP,OAGF,GAAI,KAAK,MAAW,MAAQ,GAK1B,GAJI,KAAK,KACP,GAAQ,OAAO,OAAO,CAAC,KAAK,IAAS,IACrC,KAAK,IAAU,MAEb,EAAM,OAAS,GAAW,OAC5B,YAAK,IAAU,EACR,GAET,OAAS,GAAI,EAAG,KAAK,MAAW,MAAQ,EAAI,GAAW,OAAQ,IAC7D,AAAI,EAAM,KAAO,GAAW,IAC1B,MAAK,IAAS,IAElB,GAAI,KAAK,MAAW,MAClB,GAAM,GAAQ,KAAK,IACnB,KAAK,IAAS,GACd,KAAK,IAAS,GAAI,IAAK,MACvB,KAAK,IAAO,GAAG,OAAQ,GAAS,KAAK,IAAc,IACnD,KAAK,IAAO,GAAG,QAAS,GAAM,KAAK,MAAM,IACzC,KAAK,IAAO,GAAG,MAAO,IACpB,KAAK,IAAS,GACd,KAAK,QAEP,KAAK,IAAW,GAChB,GAAM,GAAM,KAAK,IAAO,EAAQ,MAAQ,SAAS,GACjD,YAAK,IAAW,GACT,GAIX,KAAK,IAAW,GAChB,AAAI,KAAK,IACP,KAAK,IAAO,MAAM,GAElB,KAAK,IAAc,GACrB,KAAK,IAAW,GAGhB,GAAM,GACJ,KAAK,IAAO,OAAS,GACrB,KAAK,IAAa,KAAK,IAAW,QAClC,GAGF,MAAI,CAAC,GAAO,CAAC,KAAK,IAAO,QACvB,KAAK,IAAW,KAAK,QAAS,GAAK,KAAK,KAAK,UAExC,GAGR,IAAe,GACd,AAAI,GAAK,CAAC,KAAK,KACb,MAAK,IAAU,KAAK,IAAU,OAAO,OAAO,CAAC,KAAK,IAAS,IAAM,IAGpE,MACC,GAAI,KAAK,KACL,CAAC,KAAK,KACN,CAAC,KAAK,KACN,CAAC,KAAK,KACR,KAAK,IAAc,GACnB,GAAM,GAAQ,KAAK,IACnB,GAAI,GAAS,EAAM,aAEjB,GAAM,GAAO,KAAK,IAAU,KAAK,IAAQ,OAAS,EAClD,KAAK,KAAK,kBAAmB,2BAC3B,EAAM,gCAAgC,eAAmB,CAAC,UACxD,KAAK,KACP,EAAM,MAAM,KAAK,KACnB,EAAM,MAER,KAAK,IAAM,MAId,IAAe,GACd,GAAI,KAAK,IACP,KAAK,IAAc,WACZ,CAAC,GAAS,CAAC,KAAK,IACvB,KAAK,WAGL,GADA,KAAK,IAAa,GACd,KAAK,KACP,KAAK,IAAc,GACnB,GAAM,GAAI,KAAK,IACf,KAAK,IAAU,KACf,KAAK,IAAiB,OAEtB,MAAK,IAAiB,GAExB,KAAO,KAAK,KACR,KAAK,IAAQ,QAAU,KACvB,CAAC,KAAK,KACN,CAAC,KAAK,MACR,GAAM,GAAI,KAAK,IACf,KAAK,IAAU,KACf,KAAK,IAAiB,GAExB,KAAK,IAAa,GAGpB,AAAI,EAAC,KAAK,KAAW,KAAK,MACxB,KAAK,OAGR,IAAkB,GAGjB,GAAI,GAAW,EACT,EAAS,EAAM,OACrB,KAAO,EAAW,KAAO,GAAU,CAAC,KAAK,KAAY,CAAC,KAAK,KACzD,OAAQ,KAAK,SACN,YACA,SACH,KAAK,IAAe,EAAO,GAC3B,GAAY,IACZ,UAEG,aACA,OACH,GAAY,KAAK,IAAa,EAAO,GACrC,UAEG,OACH,GAAY,KAAK,IAAa,EAAO,GACrC,cAIA,KAAM,IAAI,OAAM,kBAAoB,KAAK,KAI/C,AAAI,EAAW,GACb,CAAI,KAAK,IACP,KAAK,IAAU,OAAO,OAAO,CAAC,EAAM,MAAM,GAAW,KAAK,MAE1D,KAAK,IAAU,EAAM,MAAM,IAIjC,IAAK,GACH,AAAK,KAAK,KACR,CAAI,KAAK,IACP,KAAK,IAAO,IAAI,GAEhB,MAAK,IAAS,GACd,KAAK,MAAM,UC5dnB,gCAMA,GAAM,IAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAc,KACd,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,AAAI,MAAO,IAAS,WAClB,GAAK,EAAM,EAAQ,KAAM,EAAO,IACzB,MAAM,QAAQ,IACrB,GAAQ,EAAM,EAAO,IAEnB,MAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAEtB,AAAK,EAGH,EAAQ,MAAM,KAAK,GAFnB,EAAQ,GAIV,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAI,GAAM,QACR,GAAY,EAAK,GAEd,EAAI,UACP,GAAgB,GAEX,EAAI,MAAQ,EAAI,KAAO,GAAa,GACvC,EAAI,KAAO,GAAS,EAAK,GACzB,GAAK,IAGX,GAAM,IAAkB,IACtB,GAAM,GAAU,EAAI,QACpB,EAAI,QAAU,EAAU,IACtB,EAAQ,GACR,EAAE,UACA,GAAK,EAAE,UAKP,GAAc,CAAC,EAAK,KACxB,GAAM,GAAM,GAAI,KAAI,EAAM,IAAI,GAAK,CAAC,EAAE,QAAQ,OAAQ,IAAK,MACrD,EAAS,EAAI,OAEb,EAAS,CAAC,EAAM,KACpB,GAAM,GAAO,GAAK,GAAK,MAAM,GAAM,MAAQ,IACrC,EAAM,IAAS,EAAO,GACxB,EAAI,IAAI,GAAQ,EAAI,IAAI,GACxB,EAAO,GAAK,QAAQ,GAAO,GAE/B,SAAI,IAAI,EAAM,GACP,GAGT,EAAI,OAAS,EACT,CAAC,EAAM,IAAU,EAAO,EAAM,IAAU,EAAO,EAAK,QAAQ,OAAQ,KACpE,GAAQ,EAAO,EAAK,QAAQ,OAAQ,MAGpC,GAAe,IACnB,GAAM,GAAI,GAAK,GACT,EAAO,EAAI,KACb,EAAQ,GACR,EACJ,IACE,GAAM,GAAO,GAAG,SAAS,GACnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAChD,GAAI,EAAK,KAAO,EACd,EAAE,IAAI,GAAG,aAAa,SAEtB,GAAI,GAAM,EACJ,EAAM,OAAO,YAAY,GAE/B,IADA,EAAK,GAAG,SAAS,EAAM,KAChB,EAAM,EAAK,OAChB,GAAM,GAAY,GAAG,SAAS,EAAI,EAAK,EAAG,EAAU,GACpD,GAAO,EACP,EAAE,MAAM,EAAI,MAAM,EAAG,IAEvB,EAAE,MAEJ,EAAQ,WAER,GAAI,GAAS,EACX,IACE,GAAG,UAAU,SACN,OAKT,GAAW,CAAC,EAAK,KACrB,GAAM,GAAQ,GAAI,IAAO,GACnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAE1C,EAAO,EAAI,KACX,EAAI,GAAI,SAAQ,CAAC,EAAS,KAC9B,EAAM,GAAG,QAAS,GAClB,EAAM,GAAG,MAAO,GAEhB,GAAG,KAAK,EAAM,CAAC,EAAI,KACjB,GAAI,EACF,EAAO,QAEP,GAAM,GAAS,GAAI,IAAI,WAAW,EAAM,CACtC,SAAU,EACV,KAAM,EAAK,OAEb,EAAO,GAAG,QAAS,GACnB,EAAO,KAAK,QAIlB,MAAO,GAAK,EAAE,KAAK,EAAI,GAAM,GAGzB,GAAO,GAAO,GAAI,IAAO,KClI/B,gCAGA,GAAM,IAAc,KAEd,GAAe,KACf,GAAc,KACd,GAAY,KACZ,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAO7B,GANI,MAAO,IAAU,YACnB,GAAK,GAEH,MAAM,QAAQ,IAChB,GAAQ,EAAM,EAAO,IAEnB,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,EAAQ,MAAM,KAAK,GAEnB,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAO,GAAI,MAAQ,EAAI,KAAO,GAAe,EAAK,GAC9C,EAAI,KAAO,GAAW,EAAK,EAAO,GAClC,EAAI,KAAO,GAAW,EAAK,GAC3B,GAAO,EAAK,IAGlB,GAAM,IAAiB,CAAC,EAAK,KAC3B,GAAM,GAAI,GAAI,IAAK,KAAK,GAClB,EAAS,GAAI,IAAI,gBAAgB,EAAI,KAAM,CAC/C,KAAM,EAAI,MAAQ,MAEpB,EAAE,KAAK,GACP,GAAa,EAAG,IAGZ,GAAa,CAAC,EAAK,EAAO,KAC9B,GAAM,GAAI,GAAI,IAAK,GACb,EAAS,GAAI,IAAI,YAAY,EAAI,KAAM,CAC3C,KAAM,EAAI,MAAQ,MAEpB,EAAE,KAAK,GAEP,GAAM,GAAU,GAAI,SAAQ,CAAC,EAAK,KAChC,EAAO,GAAG,QAAS,GACnB,EAAO,GAAG,QAAS,GACnB,EAAE,GAAG,QAAS,KAGhB,UAAc,EAAG,GAEV,EAAK,EAAQ,KAAK,EAAI,GAAM,GAG/B,GAAe,CAAC,EAAG,KACvB,EAAM,QAAQ,IACZ,AAAI,EAAK,OAAO,KAAO,IACrB,GAAE,CACA,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,KAAM,GACN,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KAG1B,EAAE,IAAI,KAEV,EAAE,OAGE,GAAgB,CAAC,EAAG,KACxB,KAAO,EAAM,SACX,GAAM,GAAO,EAAM,QACnB,GAAI,EAAK,OAAO,KAAO,IACrB,MAAO,IAAE,CACP,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KACvB,KAAK,GAAK,GAAc,EAAG,IAE9B,EAAE,IAAI,GAEV,EAAE,OAGE,GAAa,CAAC,EAAK,KACvB,GAAM,GAAI,GAAI,IAAK,KAAK,GACxB,UAAa,EAAG,GACT,GAGH,GAAS,CAAC,EAAK,KACnB,GAAM,GAAI,GAAI,IAAK,GACnB,UAAc,EAAG,GACV,KCtGT,gCAGA,GAAM,IAAc,KACd,GAAe,KACf,GAAa,cACb,GAAc,KACd,GAAY,KACZ,GAAe,gBAQf,GAAiB,KAEvB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,GAAM,GAAM,GAAI,GAEhB,GAAI,CAAC,EAAI,KACP,KAAM,IAAI,WAAU,oBAEtB,GAAI,EAAI,KACN,KAAM,IAAI,WAAU,wCAEtB,GAAI,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,SAAQ,MAAM,KAAK,GAEZ,EAAI,KAAO,GAAY,EAAK,GAC/B,GAAQ,EAAK,EAAO,IAG1B,GAAM,IAAc,CAAC,EAAK,KACxB,GAAM,GAAI,GAAI,IAAK,KAAK,GAEpB,EAAQ,GACR,EACA,EAEJ,IACE,IACE,EAAK,GAAG,SAAS,EAAI,KAAM,YACpB,GACP,GAAI,EAAG,OAAS,SACd,EAAK,GAAG,SAAS,EAAI,KAAM,UAE3B,MAAM,GAGV,GAAM,GAAK,GAAG,UAAU,GAClB,EAAU,OAAO,MAAM,KAE7B,EAAU,IAAK,EAAW,EAAG,EAAW,EAAG,KAAM,GAAY,KAC3D,OAAS,GAAS,EAAG,EAAQ,EAAG,EAAS,IAAK,GAAU,GAKtD,GAJA,EAAQ,GAAG,SACT,EAAI,EAAS,EAAQ,EAAQ,OAAS,EAAQ,EAAW,GAGvD,IAAa,GAAK,EAAQ,KAAO,IAAQ,EAAQ,KAAO,IAC1D,KAAM,IAAI,OAAM,wCAElB,GAAI,CAAC,EACH,QAGJ,GAAM,GAAI,GAAI,IAAO,GACrB,GAAI,CAAC,EAAE,WACL,MACF,GAAM,GAAiB,IAAM,KAAK,KAAK,EAAE,KAAO,KAChD,GAAI,EAAW,EAAiB,IAAM,EAAG,KACvC,MAGF,GAAY,EACR,EAAI,YACN,EAAI,WAAW,IAAI,EAAE,KAAM,EAAE,OAEjC,EAAQ,GAER,GAAW,EAAK,EAAG,EAAU,EAAI,WAEjC,GAAI,EACF,IACE,GAAG,UAAU,SACN,OAKT,GAAa,CAAC,EAAK,EAAG,EAAU,EAAI,KACxC,GAAM,GAAS,GAAI,IAAI,gBAAgB,EAAI,KAAM,CAC/C,GAAI,EACJ,MAAO,IAET,EAAE,KAAK,GACP,GAAa,EAAG,IAGZ,GAAU,CAAC,EAAK,EAAO,KAC3B,EAAQ,MAAM,KAAK,GACnB,GAAM,GAAI,GAAI,IAAK,GAEb,EAAS,CAAC,EAAI,EAAM,KACxB,GAAM,GAAK,CAAC,EAAI,KACd,AAAI,EACF,GAAG,MAAM,EAAI,GAAK,EAAI,IAEtB,EAAI,KAAM,IAGV,EAAW,EACf,GAAI,IAAS,EACX,MAAO,GAAG,KAAM,GAElB,GAAI,GAAS,EACP,EAAU,OAAO,MAAM,KACvB,EAAS,CAAC,EAAI,KAClB,GAAI,EACF,MAAO,GAAG,GAEZ,GADA,GAAU,EACN,EAAS,KAAO,EAClB,MAAO,IAAG,KACR,EAAI,EAAS,EAAQ,EAAQ,OAAS,EACtC,EAAW,EAAQ,GAIvB,GAAI,IAAa,GAAK,EAAQ,KAAO,IAAQ,EAAQ,KAAO,IAC1D,MAAO,GAAG,GAAI,OAAM,yCAGtB,GAAI,EAAS,IACX,MAAO,GAAG,KAAM,GAElB,GAAM,GAAI,GAAI,IAAO,GACrB,GAAI,CAAC,EAAE,WACL,MAAO,GAAG,KAAM,GAElB,GAAM,GAAiB,IAAM,KAAK,KAAK,EAAE,KAAO,KAKhD,GAJI,EAAW,EAAiB,IAAM,GAGtC,IAAY,EAAiB,IACzB,GAAY,GACd,MAAO,GAAG,KAAM,GAElB,AAAI,EAAI,YACN,EAAI,WAAW,IAAI,EAAE,KAAM,EAAE,OAC/B,EAAS,EACT,GAAG,KAAK,EAAI,EAAS,EAAG,IAAK,EAAU,IAEzC,GAAG,KAAK,EAAI,EAAS,EAAG,IAAK,EAAU,IAGnC,EAAU,GAAI,SAAQ,CAAC,EAAS,KACpC,EAAE,GAAG,QAAS,GACd,GAAI,GAAO,KACL,EAAS,CAAC,EAAI,KAClB,GAAI,GAAM,EAAG,OAAS,UAAY,IAAS,KACzC,SAAO,KACA,GAAG,KAAK,EAAI,KAAM,EAAM,GAGjC,GAAI,EACF,MAAO,GAAO,GAEhB,GAAG,MAAM,EAAI,CAAC,EAAI,KAChB,GAAI,EACF,MAAO,GAAO,GAChB,EAAO,EAAI,EAAG,KAAM,CAAC,EAAI,KACvB,GAAI,EACF,MAAO,GAAO,GAChB,GAAM,GAAS,GAAI,IAAI,YAAY,EAAI,KAAM,CAC3C,GAAI,EACJ,MAAO,IAET,EAAE,KAAK,GACP,EAAO,GAAG,QAAS,GACnB,EAAO,GAAG,QAAS,GACnB,GAAc,EAAG,QAIvB,GAAG,KAAK,EAAI,KAAM,EAAM,KAG1B,MAAO,GAAK,EAAQ,KAAK,EAAI,GAAM,GAG/B,GAAe,CAAC,EAAG,KACvB,EAAM,QAAQ,IACZ,AAAI,EAAK,OAAO,KAAO,IACrB,GAAE,CACA,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,KAAM,GACN,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KAG1B,EAAE,IAAI,KAEV,EAAE,OAGE,GAAgB,CAAC,EAAG,KACxB,KAAO,EAAM,SACX,GAAM,GAAO,EAAM,QACnB,GAAI,EAAK,OAAO,KAAO,IACrB,MAAO,IAAE,CACP,KAAM,GAAK,QAAQ,EAAE,IAAK,EAAK,OAAO,IACtC,SAAU,GACV,QAAS,GAAS,EAAE,IAAI,KACvB,KAAK,GAAK,GAAc,EAAG,IAE9B,EAAE,IAAI,GAEV,EAAE,SC5NJ,gCAIA,GAAM,IAAc,KACd,GAAY,KAGlB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,GAAM,GAAM,GAAI,GAEhB,GAAI,CAAC,EAAI,KACP,KAAM,IAAI,WAAU,oBAEtB,GAAI,EAAI,KACN,KAAM,IAAI,WAAU,wCAEtB,GAAI,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,CAAC,EAAM,OAC5C,KAAM,IAAI,WAAU,qCAEtB,SAAQ,MAAM,KAAK,GAEnB,GAAY,GACL,GAAE,EAAK,EAAO,IAGvB,GAAM,IAAc,IAClB,GAAM,GAAS,EAAI,OAEnB,AAAK,EAAI,YACP,GAAI,WAAa,GAAI,MAEvB,EAAI,OAAS,EAAS,CAAC,EAAM,IAC3B,EAAO,EAAM,IAAS,CAAE,GAAI,WAAW,IAAI,GAAQ,EAAK,OACtD,CAAC,EAAM,IAAS,CAAE,GAAI,WAAW,IAAI,GAAQ,EAAK,UClCxD,sBAAM,CAAE,cAAsB,gBACxB,GAAa,cACb,GAAU,IACd,GAAI,CAAC,EACH,EAAO,CAAE,KAAM,IAAO,eACf,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,IAAO,SAAO,WACtB,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,EAAM,eACd,MAAO,IAAS,SACvB,EAAO,CAAE,KAAM,SAAS,EAAM,GAAI,WAElC,MAAM,IAAI,WAAU,4BAEtB,SAAK,MAAQ,EAAK,OAAS,EAAK,GAAG,OAAS,GAAG,MAC/C,EAAK,WAAa,GAAU,EAAK,OACjC,EAAK,KAAO,EAAK,MAAQ,EAAK,GAAG,MAAQ,GAAG,KAC5C,EAAK,UAAY,GAAU,EAAK,MAChC,EAAK,SAAW,EAAK,UAAY,EAAK,GAAG,UAAY,GAAG,SACxD,EAAK,UAAY,EAAK,WAAa,EAAK,GAAG,WAAa,GAAG,UACpD,GAET,GAAO,QAAU,KCtBjB,sBAAM,IAAW,QAAQ,IAAI,6BAA+B,QAAQ,SAC9D,CAAE,WAAS,UAAkB,gBAC7B,GAAU,IACd,GAAI,KAAK,KAAK,GAEZ,KAAM,QAAO,OACX,GAAI,WAAU,4CACd,CACE,OACA,KAAM,0BAMZ,GADA,EAAO,GAAQ,GACX,KAAa,SACf,GAAM,GAAc,YACd,CAAC,QAAQ,GAAM,GACrB,GAAI,EAAY,KAAK,EAAK,OAAO,EAAK,SACpC,KAAM,QAAO,OAAO,GAAI,OAAM,+BAAgC,CAC5D,OACA,KAAM,WAKZ,MAAO,IAET,GAAO,QAAU,KC5BjB,sBAAM,CAAC,YAAmB,gBAEpB,GAAW,CAAC,EAAM,EAAQ,EAAO,SAEjC,IAAS,EACJ,QAAQ,UAEV,EAAK,UAAU,GAAQ,KAC5B,GAAM,EAAG,cAAgB,EAAO,OAChC,GAAM,EAAG,OAAS,SACd,GAAS,EAAM,GAAQ,GAAS,GAChC,QAIF,GAAe,CAAC,EAAM,EAAQ,EAAO,UACzC,GAAI,IAAS,EAGb,IACE,MAAO,GAAK,SAAS,GAAQ,cAAgB,EAAO,aAC7C,GACP,MAAO,GAAG,OAAS,SACf,GAAa,EAAM,GAAQ,GAAS,GACpC,SAIR,GAAO,QAAU,CAAC,YAAU,mBC5B5B,sBAAM,CAAC,YAAmB,gBAEpB,GAAe,CAAC,EAAM,EAAM,KAChC,EAAK,UAAY,GACjB,GAAM,GAAS,GAAQ,GACvB,MAAI,KAAW,EACN,EAAK,WAAW,EAAM,GAAM,MAAM,IAGvC,GAAI,EAAG,OAAS,SACd,KAAM,KAIL,EAAK,WAAW,EAAM,GAAM,KAAK,IAAM,GAAQ,EAAM,IAC1D,GAAI,EAAG,OAAS,SACd,MAAO,IAAa,EAAQ,GACzB,KAAK,GAAQ,GAAa,EAAM,EAAM,IAC3C,GAAI,EAAG,OAAS,UAAY,EAAG,OAAS,QACtC,KAAM,GACR,MAAO,GAAK,UAAU,GAAM,KAAK,IAC/B,GAAI,EAAG,cACL,MAAO,GAEP,KAAM,IACP,KAAQ,KAAM,QAIf,GAAmB,CAAC,EAAM,EAAM,KACpC,GAAM,GAAS,GAAQ,GAGvB,GAFA,EAAK,UAAY,GAEb,IAAW,EACb,IACE,MAAO,GAAK,UAAU,EAAM,SACrB,GAGP,GAAI,EAAG,OAAS,SACd,KAAM,GAEN,OAIN,IACE,SAAK,UAAU,EAAM,GACd,GAAQ,QACR,GACP,GAAI,EAAG,OAAS,SACd,MAAO,IAAiB,EAAM,EAAM,GAAiB,EAAQ,EAAM,IACrE,GAAI,EAAG,OAAS,UAAY,EAAG,OAAS,QACtC,KAAM,GACR,IACE,GAAI,CAAC,EAAK,SAAS,GAAM,cACvB,KAAM,SACD,GACP,KAAM,MAKZ,GAAO,QAAU,CAAC,gBAAc,uBC/DhC,sBAAM,CAAC,YAAmB,gBACpB,CAAC,YAAU,iBAAwB,KACnC,CAAC,gBAAc,qBAA4B,KAE3C,GAAe,CAAC,EAAM,IAC1B,GAAK,UAAY,GAEb,AADW,GAAQ,KACR,EACN,EAAK,WAAW,EAAM,GAExB,GAAS,EAAM,GAAM,KAAK,GAC/B,EAAK,WAAW,EAAM,GAAM,KAAK,IAAM,GACtC,MAAM,IACL,GAAI,EAAG,OAAS,SACd,MAAO,IAAa,EAAM,GAE1B,KAAM,OAIR,GAAmB,CAAC,EAAM,KAG9B,GAFA,EAAK,UAAY,GAEb,AADW,GAAQ,KACR,EACb,MAAO,GAAK,UAAU,EAAM,GAE9B,GAAM,GAAO,GAAa,EAAM,GAChC,IACE,SAAK,UAAU,EAAM,GACd,QACA,GACP,GAAI,EAAG,OAAS,SACd,MAAO,IAAiB,EAAM,GAE9B,KAAM,KAIZ,GAAO,QAAU,CAAC,gBAAc,uBCtChC,sBAAM,IAAa,cAEb,GAAU,QAAQ,IAAI,iCAAmC,QAAQ,QACjE,GAAU,GAAQ,QAAQ,KAAM,IAAI,MAAM,KAC1C,GAAY,CAAC,GAAQ,GAAK,IAAM,CAAC,GAAQ,IAAO,IAAM,CAAC,GAAQ,IAAM,GAErE,GAAY,AAAC,GAA0B,GAAQ,EAAK,QAAU,GAAG,MAAxC,IAAM,GAC/B,GAAgB,AAAC,GAA0B,GAAQ,EAAK,YAAc,GAAG,UAA5C,IAAM,GAEzC,GAAO,QAAU,CAAC,aAAW,oBCT7B,sBAAM,IAAkB,KAClB,GAAkB,KAElB,CAAC,gBAAc,qBAA4B,KAC3C,CAAC,gBAAc,qBAA4B,KAC3C,CAAC,aAAW,kBAAyB,KAGrC,GAAS,CAAC,EAAM,IACpB,GAAO,GAAQ,GACf,EAAO,GAAQ,GACR,GAAU,GACb,GAAa,EAAM,GACnB,GAAa,EAAM,IAGnB,GAAa,CAAC,EAAM,IACxB,GAAO,GAAQ,GACf,EAAO,GAAQ,GACR,GAAc,GACjB,GAAiB,EAAM,GACvB,GAAiB,EAAM,IAG7B,GAAO,KAAO,GACd,GAAO,OAAS,CAAC,EAAM,IAAS,GAAa,GAAQ,GAAO,GAAQ,IACpE,GAAO,OAAS,CAAC,EAAM,IAAS,GAAa,GAAQ,GAAO,GAAQ,IACpE,GAAO,WAAa,CAAC,EAAM,IAAS,GAAiB,GAAQ,GAAO,GAAQ,IAC5E,GAAO,WAAa,CAAC,EAAM,IAAS,GAAiB,GAAQ,GAAO,GAAQ,IAE5E,GAAO,QAAU,KC9BjB,gCACA,GAAM,IAAa,cACb,GAAe,gBAGf,GAAS,GAAG,OAAS,SAAW,QAEhC,GAAa,GAAG,WAAa,aAAe,YAG5C,GAAoB,GAAG,QAC3B,CAAC,QAAQ,QAAQ,MAAM,eACvB,CAAC,QAAQ,QAAQ,MAAM,cAEnB,GAAa,CAAC,EAAM,EAAK,KAC7B,IACE,MAAO,IAAG,IAAY,EAAM,EAAK,SAC1B,GACP,GAAI,EAAG,OAAS,SACd,KAAM,KAKN,GAAY,CAAC,EAAM,EAAK,KAC5B,IACE,MAAO,IAAG,UAAU,EAAM,EAAK,SACxB,GACP,GAAI,EAAG,OAAS,SACd,KAAM,KAKN,GACJ,GAAoB,CAAC,EAAM,EAAK,EAAK,IAAO,IAI1C,AAAI,CAAC,GAAM,EAAG,OAAS,SACrB,EAAG,GAEH,GAAG,MAAM,EAAM,EAAK,EAAK,IAE3B,CAAC,EAAG,EAAI,EAAK,IAAO,EAGlB,GACJ,GAAoB,CAAC,EAAM,EAAK,KAC9B,IACE,MAAO,IAAW,EAAM,EAAK,SACtB,GACP,GAAI,EAAG,OAAS,SACd,KAAM,GACR,GAAU,EAAM,EAAK,KAGvB,CAAC,EAAM,EAAK,IAAQ,GAAW,EAAM,EAAK,GAGxC,GAAc,QAAQ,QACxB,GAAU,CAAC,EAAM,EAAS,IAAO,GAAG,QAAQ,EAAM,EAAS,GAC3D,GAAc,CAAC,EAAM,IAAY,GAAG,YAAY,EAAM,GAE1D,AAAI,QAAQ,KAAK,KACf,IAAU,CAAC,EAAM,EAAS,IAAO,GAAG,QAAQ,EAAM,IAEpD,GAAM,IAAQ,CAAC,EAAO,EAAK,EAAK,KAC9B,GAAG,IAAQ,EAAO,EAAK,EAAK,GAAa,EAAO,EAAK,EAAK,IAExD,EAAG,GAAM,EAAG,OAAS,SAAW,EAAK,UAInC,GAAY,CAAC,EAAG,EAAO,EAAK,EAAK,KACrC,GAAI,MAAO,IAAU,SACnB,MAAO,IAAG,MAAM,GAAK,QAAQ,EAAG,GAAQ,CAAC,EAAI,KAE3C,GAAI,EACF,MAAO,GAAG,EAAG,OAAS,SAAW,EAAK,MACxC,EAAM,KAAO,EACb,GAAU,EAAG,EAAO,EAAK,EAAK,KAGlC,GAAI,EAAM,cACR,GAAO,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,EAAK,IAC5C,GAAI,EACF,MAAO,GAAG,GACZ,GAAM,GAAQ,GAAK,QAAQ,EAAG,EAAM,MACpC,GAAM,EAAO,EAAK,EAAK,UAGzB,GAAM,GAAQ,GAAK,QAAQ,EAAG,EAAM,MACpC,GAAM,EAAO,EAAK,EAAK,KAKrB,GAAS,CAAC,EAAG,EAAK,EAAK,KAC3B,GAAQ,EAAG,CAAE,cAAe,IAAQ,CAAC,EAAI,KAGvC,GAAI,GACF,GAAI,EAAG,OAAS,SACd,MAAO,KACJ,GAAI,EAAG,OAAS,WAAa,EAAG,OAAS,UAC5C,MAAO,GAAG,GAEd,GAAI,GAAM,CAAC,EAAS,OAClB,MAAO,IAAM,EAAG,EAAK,EAAK,GAE5B,GAAI,GAAM,EAAS,OACf,EAAW,KACT,EAAO,IACX,GAAI,IAEJ,GAAI,EACF,MAAO,GAAG,EAAW,GACvB,GAAI,EAAG,GAAQ,EACb,MAAO,IAAM,EAAG,EAAK,EAAK,KAG9B,EAAS,QAAQ,GAAS,GAAU,EAAG,EAAO,EAAK,EAAK,OAItD,GAAgB,CAAC,EAAG,EAAO,EAAK,KACpC,GAAI,MAAO,IAAU,SACnB,IACE,GAAM,GAAQ,GAAG,UAAU,GAAK,QAAQ,EAAG,IAC3C,EAAM,KAAO,EACb,EAAQ,QACD,GACP,GAAI,EAAG,OAAS,SACd,OAEA,KAAM,GAIZ,AAAI,EAAM,eACR,GAAW,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,GAE/C,GAAiB,GAAK,QAAQ,EAAG,EAAM,MAAO,EAAK,IAG/C,GAAa,CAAC,EAAG,EAAK,KAC1B,GAAI,GACJ,IACE,EAAW,GAAY,EAAG,CAAE,cAAe,WACpC,GACP,GAAI,EAAG,OAAS,SACd,OACG,GAAI,EAAG,OAAS,WAAa,EAAG,OAAS,UAC5C,MAAO,IAAiB,EAAG,EAAK,GAEhC,KAAM,GAGV,MAAI,IAAY,EAAS,QACvB,EAAS,QAAQ,GAAS,GAAc,EAAG,EAAO,EAAK,IAElD,GAAiB,EAAG,EAAK,IAGlC,GAAO,QAAU,GACjB,GAAO,KAAO,KCtKd,gCAMA,GAAM,IAAiB,KACjB,GAAa,cACb,GAAe,gBACf,GAAiB,KATvB,gBAW2B,OACzB,YAAa,EAAS,GACpB,MAAM,wCACN,KAAK,KAAO,EACZ,KAAK,QAAU,KAGb,QACF,MAAO,gBAnBX,gBAuBuB,OACrB,YAAa,EAAM,GACjB,MAAM,EAAO,qBAAwB,EAAO,KAC5C,KAAK,KAAO,EACZ,KAAK,KAAO,KAGV,QACF,MAAO,aAIX,GAAO,QAAU,CAAC,EAAK,EAAK,KAG1B,GAAM,GAAQ,EAAI,MACZ,EAAO,EAAI,KAAO,IAClB,EAAa,GAAO,IAAW,EAE/B,EAAM,EAAI,IACV,EAAM,EAAI,IACV,EAAU,MAAO,IAAQ,UAC7B,MAAO,IAAQ,UACd,KAAQ,EAAI,YAAc,IAAQ,EAAI,YAEnC,EAAW,EAAI,SACf,EAAS,EAAI,OACb,EAAQ,EAAI,MACZ,EAAM,EAAI,IAEV,EAAO,CAAC,EAAI,KAChB,AAAI,EACF,EAAG,GAEH,GAAM,IAAI,EAAK,IACf,AAAI,GAAW,EACb,GAAO,EAAS,EAAK,EAAK,GAAM,EAAK,IAClC,AAAI,EACP,GAAG,MAAM,EAAK,EAAM,GAEpB,MAIN,GAAI,GAAS,EAAM,IAAI,KAAS,GAC9B,MAAO,KAET,GAAI,IAAQ,EACV,MAAO,IAAG,KAAK,EAAK,CAAC,EAAI,KACvB,AAAI,IAAM,CAAC,EAAG,gBACZ,GAAK,GAAI,IAAS,EAAK,GAAM,EAAG,MAAQ,YAC1C,EAAK,KAIT,GAAI,EACF,MAAO,IAAO,EAAK,CAAC,SAAO,KAAK,GAAQ,EAAK,KAAM,GAAO,GAG5D,GAAM,GAAQ,AADF,GAAK,SAAS,EAAK,GACb,MAAM,SACxB,GAAO,EAAK,EAAO,EAAM,EAAO,EAAQ,EAAK,KAAM,IAGrD,GAAM,IAAS,CAAC,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,KAC9D,GAAI,CAAC,EAAM,OACT,MAAO,GAAG,KAAM,GAClB,GAAM,GAAI,EAAM,QACV,EAAO,EAAO,IAAM,EAC1B,GAAI,EAAM,IAAI,GACZ,MAAO,IAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,GAChE,GAAG,MAAM,EAAM,EAAM,GAAQ,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,KAGzE,GAAU,CAAC,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,IAAO,IACtE,GAAI,GACF,GAAI,EAAG,MAAQ,GAAK,QAAQ,EAAG,QAAU,GACpC,GAAG,OAAS,WAAa,EAAG,OAAS,UACxC,MAAO,GAAG,GAAI,IAAS,EAAK,EAAG,OAEjC,GAAG,MAAM,EAAM,CAAC,EAAQ,KACtB,GAAI,EACF,EAAG,WACI,EAAG,cACV,GAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,WAChD,EACP,GAAG,OAAO,EAAM,IACd,GAAI,EACF,MAAO,GAAG,GACZ,GAAG,MAAM,EAAM,EAAM,GAAQ,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,WAE1E,GAAI,EAAG,iBACZ,MAAO,GAAG,GAAI,IAAa,EAAM,EAAO,IAAM,EAAM,KAAK,OAEzD,EAAG,UAGP,GAAU,GAAW,EACrB,GAAO,EAAM,EAAO,EAAM,EAAO,EAAQ,EAAK,EAAS,IAI3D,GAAO,QAAQ,KAAO,CAAC,EAAK,KAG1B,GAAM,GAAQ,EAAI,MACZ,EAAO,EAAI,KAAO,IAClB,EAAa,GAAO,IAAW,EAE/B,EAAM,EAAI,IACV,EAAM,EAAI,IACV,EAAU,MAAO,IAAQ,UAC7B,MAAO,IAAQ,UACd,KAAQ,EAAI,YAAc,IAAQ,EAAI,YAEnC,EAAW,EAAI,SACf,EAAS,EAAI,OACb,EAAQ,EAAI,MACZ,EAAM,EAAI,IAEV,EAAO,AAAC,IACZ,EAAM,IAAI,EAAK,IACX,GAAW,GACb,GAAO,KAAK,EAAS,EAAK,GACxB,GACF,GAAG,UAAU,EAAK,IAGtB,GAAI,GAAS,EAAM,IAAI,KAAS,GAC9B,MAAO,KAET,GAAI,IAAQ,GACV,GAAI,GAAK,GACL,EAAO,UACX,IACE,EAAK,GAAG,SAAS,GAAK,oBACf,GACP,EAAO,EAAG,aAEV,GAAI,CAAC,EACH,KAAM,IAAI,IAAS,EAAK,GAE5B,IACA,OAGF,GAAI,EACF,MAAO,GAAK,GAAO,KAAK,EAAK,IAG/B,GAAM,GAAQ,AADF,GAAK,SAAS,EAAK,GACb,MAAM,SACpB,EAAU,KACd,OAAS,GAAI,EAAM,QAAS,EAAO,EACjC,GAAM,IAAQ,IAAM,GACpB,EAAI,EAAM,QACV,GAAI,GAAM,IAAI,GAGd,IACE,GAAG,UAAU,EAAM,GACnB,EAAU,GAAW,EACrB,EAAM,IAAI,EAAM,UACT,GACP,GAAI,EAAG,MAAQ,GAAK,QAAQ,EAAG,QAAU,GACpC,GAAG,OAAS,WAAa,EAAG,OAAS,UACxC,MAAO,IAAI,IAAS,EAAK,EAAG,MAE9B,GAAM,GAAK,GAAG,UAAU,GACxB,GAAI,EAAG,eACL,EAAM,IAAI,EAAM,IAChB,iBACS,GACT,GAAG,WAAW,GACd,GAAG,UAAU,EAAM,GACnB,EAAU,GAAW,EACrB,EAAM,IAAI,EAAM,IAChB,iBACS,EAAG,iBACZ,MAAO,IAAI,IAAa,EAAM,EAAO,IAAM,EAAM,KAAK,MAI5D,MAAO,GAAK,MC5Md,mBAQA,GAAM,IAAiB,kBAEvB,GAAO,QAAU,KAIf,GAAM,GAAS,GAAI,KAGb,EAAe,GAAI,KAGnB,CAAE,QAAiB,gBACnB,EAAU,GACd,EAAK,GAAM,MAAM,SAAS,MAAM,EAAG,IAAI,OAAO,CAAC,EAAK,IAClD,EAAI,OAAS,EAAI,OAAO,EAAK,EAAI,EAAI,OAAS,GAAI,IAAS,CAAC,GAAO,IAGjE,EAAU,GAAI,KAId,EAAY,IAChB,GAAM,GAAM,EAAa,IAAI,GAE7B,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,gDAClB,MAAO,CACL,MAAO,EAAI,MAAM,IAAI,GAAQ,EAAO,IAAI,IACxC,KAAM,CAAC,GAAG,EAAI,MAAM,IAAI,GAAQ,EAAO,IAAI,MAMzC,EAAQ,IACZ,GAAM,CAAC,QAAO,QAAQ,EAAU,GAChC,MAAO,GAAM,MAAM,GAAK,EAAE,KAAO,IAC/B,EAAK,MAAM,GAAK,EAAE,YAAc,MAAO,EAAE,GAAG,IAAI,KAI9C,EAAM,GACN,EAAQ,IAAI,IAAO,CAAC,EAAM,GACrB,GACT,GAAQ,IAAI,GACZ,EAAG,IAAM,EAAM,IACR,IAGH,EAAQ,IACZ,GAAI,CAAC,EAAQ,IAAI,GACf,MAAO,GAET,GAAM,CAAE,QAAO,QAAS,EAAa,IAAI,GACnC,EAAO,GAAI,KAEjB,SAAM,QAAQ,IACZ,GAAM,GAAI,EAAO,IAAI,GACrB,GAAO,MAAM,EAAE,GAAI,GACnB,AAAI,EAAE,SAAW,EACf,EAAO,OAAO,GAEd,GAAE,QACF,AAAI,MAAO,GAAE,IAAO,WAClB,EAAK,IAAI,EAAE,IAEX,EAAE,GAAG,QAAQ,GAAM,EAAK,IAAI,OAIlC,EAAK,QAAQ,IACX,GAAM,GAAI,EAAO,IAAI,GACrB,GAAO,EAAE,YAAc,MACvB,AAAI,EAAE,GAAG,OAAS,GAAK,EAAE,SAAW,EAClC,EAAO,OAAO,GACX,AAAI,EAAE,GAAG,OAAS,EACrB,GAAE,QAGF,EAAK,IAAI,EAAE,KAEX,EAAE,GAAG,OAAO,KAEhB,EAAQ,OAAO,GAEf,EAAK,QAAQ,GAAM,EAAI,IAChB,IA4BT,MAAO,CAAE,QAAO,QAzBA,CAAC,EAAO,KACtB,GAAM,GAAO,GAAI,KACf,EAAM,IAAI,GAAQ,EAAQ,IAAO,OAAO,CAAC,EAAG,IAAM,EAAE,OAAO,KAE7D,SAAa,IAAI,EAAI,CAAC,OAAM,UAC5B,EAAM,QAAQ,IACZ,GAAM,GAAI,EAAO,IAAI,GACrB,AAAK,EAGH,EAAE,KAAK,GAFP,EAAO,IAAI,EAAM,CAAC,MAItB,EAAK,QAAQ,IACX,GAAM,GAAI,EAAO,IAAI,GACrB,AAAK,EAEA,AAAI,EAAE,EAAE,OAAS,YAAc,KAClC,EAAE,EAAE,OAAS,GAAG,IAAI,GAEpB,EAAE,KAAK,GAAI,KAAI,CAAC,KAJhB,EAAO,IAAI,EAAK,CAAC,GAAI,KAAI,CAAC,QAOvB,EAAI,QCxHf,mBAQA,GAAM,IAAW,QAAQ,IAAI,mBAAqB,QAAQ,SACpD,GAAY,KAAa,QACzB,GAAK,OAAO,qBAA+B,cAG3C,CAAE,WAAS,WAAS,YAAU,mBAAkB,GAAM,GAAG,UAEzD,GAAc,IAAa,CAAC,CAAC,GAC7B,GAAY,IAAM,KAClB,GAAW,GAAkB,GAAU,GAAU,GACvD,GAAO,QAAU,AAAC,GACd,GAAQ,EAAO,GAAY,GAAW,IADV,IAAM,MClBtC,gCAQA,GAAM,IAAiB,kBACjB,GAAiB,KACjB,EAAa,cACb,GAAc,KACd,GAAe,gBACf,GAAgB,KAChB,GAAa,KACb,GAA2B,KAE3B,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAa,OAAO,cACpB,GAAS,OAAO,UAChB,GAAO,OAAO,QACd,GAAY,OAAO,aACnB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAW,OAAO,YAClB,GAAc,OAAO,eACrB,GAAY,OAAO,aACnB,GAAQ,OAAO,SACf,GAAU,OAAO,WACjB,GAAU,OAAO,WACjB,GAAO,OAAO,QACd,GAAS,OAAO,UAChB,GAAQ,OAAO,SACf,GAAa,OAAO,cACpB,GAAO,OAAO,QACd,GAAU,OAAO,WACjB,GAAM,OAAO,OACb,GAAM,OAAO,OACb,GAAiB,kBACjB,GAAkB,KAGlB,GAAc,KAClB,KAAM,IAAI,OAAM,uCAmBZ,GAAa,CAAC,EAAM,KACxB,GAAI,QAAQ,WAAa,QACvB,MAAO,GAAG,OAAO,EAAM,GAEzB,GAAM,GAAO,EAAO,WAAa,GAAO,YAAY,IAAI,SAAS,OACjE,EAAG,OAAO,EAAM,EAAM,IACpB,GAAI,EACF,MAAO,GAAG,GACZ,EAAG,OAAO,EAAM,MAKd,GAAiB,IACrB,GAAI,QAAQ,WAAa,QACvB,MAAO,GAAG,WAAW,GAEvB,GAAM,GAAO,EAAO,WAAa,GAAO,YAAY,IAAI,SAAS,OACjE,EAAG,WAAW,EAAM,GACpB,EAAG,WAAW,IAIV,GAAS,CAAC,EAAG,EAAG,IACpB,IAAM,IAAM,EAAI,EACd,IAAM,IAAM,EAAI,EAChB,EA1FJ,gBA4FqB,IACnB,YAAa,GAuBX,GAtBK,GACH,GAAM,IAER,EAAI,OAAS,IACX,KAAK,IAAS,GACd,KAAK,OAGP,MAAM,GAEN,KAAK,aAAe,KAEpB,KAAK,UAAY,MAAO,GAAI,WAAc,WAAa,EAAI,UAAY,KAEvE,KAAK,SAAW,GAChB,KAAK,SAAW,GAEhB,KAAK,IAAW,EAChB,KAAK,IAAS,GAEd,KAAK,SAAW,EAAI,UAAY,GAAI,KAEhC,MAAO,GAAI,KAAQ,UAAY,MAAO,GAAI,KAAQ,UAEpD,GAAI,MAAO,GAAI,KAAQ,UAAY,MAAO,GAAI,KAAQ,SACpD,KAAM,IAAI,WAAU,+CACtB,GAAI,EAAI,cACN,KAAM,IAAI,WACR,kEAEJ,KAAK,IAAM,EAAI,IACf,KAAK,IAAM,EAAI,IACf,KAAK,SAAW,OAEhB,MAAK,IAAM,KACX,KAAK,IAAM,KACX,KAAK,SAAW,GAIlB,AAAI,EAAI,gBAAkB,QAAa,MAAO,GAAI,KAAQ,SACxD,KAAK,cAAgB,QAAQ,QAAU,QAAQ,WAAa,EAE5D,KAAK,cAAgB,CAAC,CAAC,EAAI,cAE7B,KAAK,WAAc,MAAK,eAAiB,KAAK,WAAa,QAAQ,OACjE,QAAQ,SAAW,KACrB,KAAK,WAAc,MAAK,eAAiB,KAAK,WAAa,QAAQ,OACjE,QAAQ,SAAW,KAIrB,KAAK,WAAa,EAAI,aAAe,GAGrC,KAAK,MAAQ,CAAC,CAAC,EAAI,OAAS,QAAQ,WAAa,QAGjD,KAAK,MAAQ,CAAC,CAAC,EAAI,MAGnB,KAAK,KAAO,CAAC,CAAC,EAAI,KAGlB,KAAK,QAAU,CAAC,CAAC,EAAI,QAKrB,KAAK,cAAgB,CAAC,CAAC,EAAI,cAI3B,KAAK,OAAS,CAAC,CAAC,EAAI,OAEpB,KAAK,IAAM,GAAK,QAAQ,EAAI,KAAO,QAAQ,OAC3C,KAAK,MAAQ,CAAC,EAAI,OAAS,EAE3B,KAAK,aAAe,EAAI,QAAU,EAAI,QAAQ,QAC9C,KAAK,MAAQ,MAAO,GAAI,OAAU,SAAW,EAAI,MAAQ,KAAK,aAG9D,KAAK,MAAQ,EAAI,OAAU,IAAU,CAAC,KAAK,MAC3C,KAAK,MAAQ,EAAI,OAAU,IAAU,CAAC,KAAK,MAE3C,KAAK,GAAG,QAAS,GAAS,KAAK,IAAS,IAM1C,KAAM,EAAM,EAAK,EAAO,IACtB,MAAI,KAAS,mBAAqB,IAAS,cACzC,GAAK,YAAc,IACd,MAAM,KAAK,EAAM,EAAK,IAG9B,MACC,AAAI,KAAK,KAAU,KAAK,MAAa,GACnC,MAAK,KAAK,aACV,KAAK,KAAK,UACV,KAAK,KAAK,OACV,KAAK,KAAK,WAIb,IAAY,GACX,GAAI,KAAK,OACP,GAAM,GAAQ,EAAM,KAAK,MAAM,SAC/B,GAAI,EAAM,OAAS,KAAK,MACtB,MAAO,GAGT,GAFA,EAAM,KAAO,EAAM,MAAM,KAAK,OAAO,KAAK,KAEtC,EAAM,OAAS,QACjB,GAAM,GAAY,EAAM,SAAS,MAAM,SACvC,AAAI,EAAU,QAAU,KAAK,OAC3B,GAAM,SAAW,EAAU,MAAM,KAAK,OAAO,KAAK,OAIxD,GAAI,CAAC,KAAK,eACR,GAAM,GAAI,EAAM,KAChB,GAAI,EAAE,MAAM,0BACV,YAAK,KAAK,kBAAmB,qBAAsB,CACjD,QACA,KAAM,IAED,GAKT,GAAI,GAAK,MAAM,WAAW,IACxB,GAAM,GAAS,GAAK,MAAM,MAAM,GAChC,EAAM,KAAO,EAAE,OAAO,EAAO,KAAK,QAClC,GAAM,GAAI,EAAO,KACjB,KAAK,KAAK,iBAAkB,aAAa,uBAAwB,CAC/D,QACA,KAAM,KAMZ,GAAI,KAAK,OACP,GAAM,GAAS,GAAK,MAAM,MAAM,EAAM,MACtC,EAAM,KAAO,EAAO,OAAS,GAAK,GAAG,OAAO,EAAM,MAC9C,EAAO,KAAO,GAAG,OAAO,EAAM,KAAK,OAAO,EAAO,KAAK,SAG5D,MAAI,IAAK,WAAW,EAAM,MACxB,EAAM,SAAW,EAAM,KAEvB,EAAM,SAAW,GAAK,QAAQ,KAAK,IAAK,EAAM,MAEzC,IAGR,IAAU,GACT,GAAI,CAAC,KAAK,IAAW,GACnB,MAAO,GAAM,SAIf,OAFA,GAAO,MAAM,MAAO,GAAM,SAAU,UAE5B,EAAM,UACP,gBACA,aACH,AAAI,EAAM,MACR,GAAM,KAAO,EAAM,KAAO,SAEzB,WACA,cACA,qBACA,WACA,eACH,MAAO,MAAK,IAAS,OAElB,sBACA,kBACA,eAEH,MAAO,MAAK,IAAa,KAI9B,IAAU,EAAI,GAIb,AAAI,EAAG,OAAS,WACd,KAAK,KAAK,QAAS,GAEnB,MAAK,KAAK,kBAAmB,EAAI,CAAC,UAClC,KAAK,MACL,EAAM,WAIT,IAAQ,EAAK,EAAM,GAClB,GAAM,EAAK,CACT,IAAK,KAAK,IACV,IAAK,KAAK,IACV,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,MAAO,KAAK,aACZ,SAAU,KAAK,cACf,OAAQ,KAAK,OACb,MAAO,KAAK,SACZ,IAAK,KAAK,IACV,KAAM,EACN,QAAS,KAAK,SACb,IAGJ,IAAU,GAGT,MAAO,MAAK,YACV,KAAK,eACJ,OAAO,GAAM,KAAQ,UAAY,EAAM,MAAQ,KAAK,YACnD,MAAO,GAAM,KAAQ,UAAY,EAAM,MAAQ,KAAK,aAErD,MAAO,MAAK,KAAQ,UAAY,KAAK,MAAQ,KAAK,YACjD,MAAO,MAAK,KAAQ,UAAY,KAAK,MAAQ,KAAK,YAGvD,IAAM,GACL,MAAO,IAAO,KAAK,IAAK,EAAM,IAAK,KAAK,aAGzC,IAAM,GACL,MAAO,IAAO,KAAK,IAAK,EAAM,IAAK,KAAK,aAGzC,IAAO,EAAO,GACb,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACnC,EAAS,GAAI,IAAI,YAAY,EAAM,SAAU,CACjD,MAAO,GAAQ,EAAM,MACrB,KAAM,EACN,UAAW,KAEb,EAAO,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IAE3C,GAAI,GAAU,EACR,EAAO,IACX,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAE3B,AAAI,EAAE,GAAY,GAChB,EAAG,MAAM,EAAO,GAAI,IAClB,IACA,EAAK,KAAK,IAAS,EAAI,GAAS,KAAK,SAK3C,EAAO,GAAG,SAAU,IAIlB,GAAM,GAAM,EAAM,SACZ,EAAK,EAAO,GAElB,GAAI,EAAM,OAAS,CAAC,KAAK,SACvB,IACA,GAAM,GAAQ,EAAM,OAAS,GAAI,MAC3B,EAAQ,EAAM,MACpB,EAAG,QAAQ,EAAI,EAAO,EAAO,GAC3B,EAAK,EAAG,OAAO,EAAK,EAAO,EAAO,GAAO,EAAK,GAAO,IACnD,KAGN,GAAI,KAAK,IAAS,IAChB,IACA,GAAM,GAAM,KAAK,IAAK,GAChB,EAAM,KAAK,IAAK,GACtB,EAAG,OAAO,EAAI,EAAK,EAAK,GACtB,EAAK,EAAG,MAAM,EAAK,EAAK,EAAK,GAAO,EAAK,GAAO,IAC9C,KAGN,MAGF,GAAM,GAAK,KAAK,WAAY,KAAK,UAAU,IAAU,EACrD,AAAI,IAAO,GACT,GAAG,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IACvC,EAAM,KAAK,IAEb,EAAG,KAAK,IAGT,IAAY,EAAO,GAClB,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACzC,KAAK,IAAO,EAAM,SAAU,EAAM,IAChC,GAAI,EACF,WACO,KAAK,IAAS,EAAI,GAG3B,GAAI,GAAU,EACR,EAAO,IACX,AAAI,EAAE,GAAY,GAChB,KACA,KAAK,MACL,EAAM,WAIV,AAAI,EAAM,OAAS,CAAC,KAAK,SACvB,KACA,EAAG,OAAO,EAAM,SAAU,EAAM,OAAS,GAAI,MAAQ,EAAM,MAAO,IAGhE,KAAK,IAAS,IAChB,KACA,EAAG,MAAM,EAAM,SAAU,KAAK,IAAK,GAAQ,KAAK,IAAK,GAAQ,IAG/D,OAIH,IAAc,GACb,EAAM,YAAc,GACpB,KAAK,KAAK,wBACR,2BAA2B,EAAM,OAAQ,CAAC,UAC5C,EAAM,UAGP,IAAU,EAAO,GAChB,KAAK,IAAM,EAAO,EAAM,SAAU,UAAW,IAG9C,IAAW,EAAO,GACjB,KAAK,IAAM,EAAO,GAAK,QAAQ,KAAK,IAAK,EAAM,UAAW,OAAQ,IAGnE,MACC,KAAK,OAGN,MACC,KAAK,MACL,KAAK,OAGN,IAAO,GACN,KAAK,MACL,EAAM,UAMP,IAAa,EAAO,GACnB,MAAO,GAAM,OAAS,QACpB,CAAC,KAAK,QACN,EAAG,UACH,EAAG,OAAS,GACZ,QAAQ,WAAa,SAIxB,IAAU,GACT,KAAK,MACL,GAAM,GAAQ,CAAC,EAAM,MACrB,AAAI,EAAM,UACR,EAAM,KAAK,EAAM,UACnB,KAAK,aAAa,QAAQ,EAAO,GAAQ,KAAK,IAAU,EAAO,KAGhE,IAAW,EAAO,GACjB,KAAK,IAAO,GAAK,QAAQ,EAAM,UAAW,KAAK,MAAO,IACpD,GAAI,EACF,WACO,KAAK,IAAS,EAAI,GAE3B,EAAG,MAAM,EAAM,SAAU,CAAC,EAAI,KAC5B,AAAI,GAAO,MAAK,MAAQ,KAAK,OAAS,EAAG,MAAQ,EAAM,OACrD,MAAK,IAAM,GACX,KACK,AAAI,GAAM,KAAK,IAAY,EAAO,GACvC,KAAK,IAAQ,KAAM,EAAO,GAEvB,AAAI,EAAG,cACV,AAAI,EAAM,OAAS,YACjB,AAAI,CAAC,KAAK,SAAY,EAAC,EAAM,MAAS,GAAG,KAAO,QAAY,EAAM,MAChE,KAAK,IAAQ,KAAM,EAAO,GAE1B,EAAG,MAAM,EAAM,SAAU,EAAM,KAC7B,GAAM,KAAK,IAAQ,EAAI,EAAO,IAGlC,EAAG,MAAM,EAAM,SAAU,GAAM,KAAK,IAAQ,EAAI,EAAO,IAEzD,GAAW,EAAM,SAAU,GAAM,KAAK,IAAQ,EAAI,EAAO,SAKhE,IAAS,EAAI,EAAO,GACnB,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAE3B,OAAQ,EAAM,UACP,WACA,cACA,iBACH,MAAO,MAAK,IAAM,EAAO,OAEtB,OACH,MAAO,MAAK,IAAU,EAAO,OAE1B,eACH,MAAO,MAAK,IAAS,EAAO,OAEzB,gBACA,aACH,MAAO,MAAK,IAAW,EAAO,KAInC,IAAO,EAAO,EAAU,EAAM,GAE7B,EAAG,GAAM,EAAU,EAAM,SAAU,IACjC,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,IACA,KAAK,MACL,EAAM,aA5gBZ,gBAihByB,KACtB,IAAU,GACT,GAAM,GAAK,KAAK,IAAO,GAAK,QAAQ,EAAM,UAAW,KAAK,MAAO,IACjE,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,IACE,GAAM,GAAK,EAAG,UAAU,EAAM,UAC9B,GAAI,KAAK,MAAQ,KAAK,OAAS,EAAG,MAAQ,EAAM,MAC9C,MAAO,MAAK,IAAM,GACf,GAAI,KAAK,IAAY,EAAO,GAC/B,MAAO,MAAK,IAAQ,KAAM,EAAO,IAEjC,IACE,MAAI,GAAG,cACL,AAAI,EAAM,OAAS,YACb,CAAC,KAAK,SAAW,EAAM,MAAS,GAAG,KAAO,QAAY,EAAM,MAC9D,EAAG,UAAU,EAAM,SAAU,EAAM,MAErC,EAAG,UAAU,EAAM,UAErB,GAAe,EAAM,UAChB,KAAK,IAAQ,KAAM,EAAO,UAC1B,GACP,MAAO,MAAK,IAAS,EAAI,UAGtB,GACP,MAAO,MAAK,IAAQ,KAAM,EAAO,MAIpC,IAAO,EAAO,GACb,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MAEnC,EAAO,IACX,GAAI,GACJ,IACE,EAAG,UAAU,SACN,GACP,EAAa,EAEf,AAAI,IAAM,IACR,KAAK,IAAS,GAAM,EAAY,IAGhC,EACJ,IACE,EAAK,EAAG,SAAS,EAAM,SAAU,GAAQ,EAAM,MAAO,SAC/C,GACP,MAAO,GAAK,GAEd,GAAM,GAAK,KAAK,WAAY,KAAK,UAAU,IAAU,EACrD,AAAI,IAAO,GACT,GAAG,GAAG,QAAS,GAAM,KAAK,IAAS,EAAI,IACvC,EAAM,KAAK,IAGb,EAAG,GAAG,OAAQ,IACZ,IACE,EAAG,UAAU,EAAI,EAAO,EAAG,EAAM,cAC1B,GACP,EAAK,MAIT,EAAG,GAAG,MAAO,IACX,GAAI,GAAK,KAGT,GAAI,EAAM,OAAS,CAAC,KAAK,SACvB,GAAM,GAAQ,EAAM,OAAS,GAAI,MAC3B,EAAQ,EAAM,MACpB,IACE,EAAG,YAAY,EAAI,EAAO,SACnB,GACP,IACE,EAAG,WAAW,EAAM,SAAU,EAAO,SAC9B,GACP,EAAK,IAKX,GAAI,KAAK,IAAS,IAChB,GAAM,GAAM,KAAK,IAAK,GAChB,EAAM,KAAK,IAAK,GAEtB,IACE,EAAG,WAAW,EAAI,EAAK,SAChB,GACP,IACE,EAAG,UAAU,EAAM,SAAU,EAAK,SAC3B,GACP,EAAK,GAAM,IAKjB,EAAK,MAIR,IAAY,EAAO,GAClB,GAAM,GAAO,EAAM,KAAO,MAAU,KAAK,MACnC,EAAK,KAAK,IAAO,EAAM,SAAU,GACvC,GAAI,EACF,MAAO,MAAK,IAAS,EAAI,GAC3B,GAAI,EAAM,OAAS,CAAC,KAAK,QACvB,IACE,EAAG,WAAW,EAAM,SAAU,EAAM,OAAS,GAAI,MAAQ,EAAM,aACxD,IAEX,GAAI,KAAK,IAAS,GAChB,IACE,EAAG,UAAU,EAAM,SAAU,KAAK,IAAK,GAAQ,KAAK,IAAK,UAClD,IAEX,EAAM,UAGP,IAAQ,EAAK,GACZ,IACE,MAAO,IAAM,KAAK,EAAK,CACrB,IAAK,KAAK,IACV,IAAK,KAAK,IACV,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,MAAO,KAAK,aACZ,SAAU,KAAK,cACf,OAAQ,KAAK,OACb,MAAO,KAAK,SACZ,IAAK,KAAK,IACV,KAAM,UAED,GACP,MAAO,KAIV,IAAO,EAAO,EAAU,EAAM,GAC7B,IACE,EAAG,EAAO,QAAQ,EAAU,EAAM,UAClC,EAAM,eACC,GACP,MAAO,MAAK,IAAS,EAAI,MAK/B,GAAO,KAAO,GACd,GAAO,QAAU,KCvqBjB,gCAGA,GAAM,IAAc,KACd,GAAiB,KACjB,GAAa,cACb,GAAc,KACd,GAAe,gBAErB,GAAO,QAAU,CAAC,EAAM,EAAO,KAC7B,AAAI,MAAO,IAAS,WAClB,GAAK,EAAM,EAAQ,KAAM,EAAO,IACzB,MAAM,QAAQ,IACrB,GAAQ,EAAM,EAAO,IAEnB,MAAO,IAAU,YACnB,GAAK,EAAO,EAAQ,MAEtB,AAAK,EAGH,EAAQ,MAAM,KAAK,GAFnB,EAAQ,GAIV,GAAM,GAAM,GAAI,GAEhB,GAAI,EAAI,MAAQ,MAAO,IAAO,WAC5B,KAAM,IAAI,WAAU,iDAEtB,GAAI,CAAC,EAAI,MAAQ,MAAO,IAAO,WAC7B,KAAM,IAAI,WAAU,4CAEtB,MAAI,GAAM,QACR,GAAY,EAAK,GAEZ,EAAI,MAAQ,EAAI,KAAO,GAAgB,GAC1C,EAAI,KAAO,GAAY,EAAK,GAC5B,EAAI,KAAO,GAAY,GACvB,GAAQ,IAKd,GAAM,IAAc,CAAC,EAAK,KACxB,GAAM,GAAM,GAAI,KAAI,EAAM,IAAI,GAAK,CAAC,EAAE,QAAQ,OAAQ,IAAK,MACrD,EAAS,EAAI,OAEb,EAAS,CAAC,EAAM,KACpB,GAAM,GAAO,GAAK,GAAK,MAAM,GAAM,MAAQ,IACrC,EAAM,IAAS,EAAO,GACxB,EAAI,IAAI,GAAQ,EAAI,IAAI,GACxB,EAAO,GAAK,QAAQ,GAAO,GAE/B,SAAI,IAAI,EAAM,GACP,GAGT,EAAI,OAAS,EACT,CAAC,EAAM,IAAU,EAAO,EAAM,IAAU,EAAO,EAAK,QAAQ,OAAQ,KACpE,GAAQ,EAAO,EAAK,QAAQ,OAAQ,MAGpC,GAAkB,IACtB,GAAM,GAAI,GAAI,IAAO,KAAK,GAEpB,EAAO,EAAI,KACX,EAAO,GAAG,SAAS,GAGnB,EAAW,EAAI,aAAe,GAAK,KAAO,KAKhD,AAJe,GAAI,IAAI,eAAe,EAAM,CAC1C,SAAU,EACV,KAAM,EAAK,OAEN,KAAK,IAGR,GAAc,CAAC,EAAK,KACxB,GAAM,GAAI,GAAI,IAAO,GACf,EAAW,EAAI,aAAe,GAAK,KAAO,KAE1C,EAAO,EAAI,KACX,EAAI,GAAI,SAAQ,CAAC,EAAS,KAC9B,EAAE,GAAG,QAAS,GACd,EAAE,GAAG,QAAS,GAId,GAAG,KAAK,EAAM,CAAC,EAAI,KACjB,GAAI,EACF,EAAO,QAEP,GAAM,GAAS,GAAI,IAAI,WAAW,EAAM,CACtC,SAAU,EACV,KAAM,EAAK,OAEb,EAAO,GAAG,QAAS,GACnB,EAAO,KAAK,QAIlB,MAAO,GAAK,EAAE,KAAK,EAAI,GAAM,GAGzB,GAAc,GAAO,GAAI,IAAO,KAAK,GAErC,GAAU,GAAO,GAAI,IAAO,KCzGlC,2BAGA,GAAQ,EAAI,GAAQ,OAAiB,KACrC,GAAQ,EAAI,GAAQ,QAAkB,KACtC,GAAQ,EAAI,GAAQ,KAAe,KACnC,GAAQ,EAAI,GAAQ,OAAiB,KACrC,GAAQ,EAAI,GAAQ,QAAkB,KAGtC,GAAQ,KAAe,KACvB,GAAQ,OAAiB,KACzB,GAAQ,MAAgB,KACxB,GAAQ,UAAoB,KAC5B,GAAQ,WAAqB,KAC7B,GAAQ,OAAiB,KACzB,GAAQ,IAAc,KACtB,GAAQ,MAAgB,OCjBxB,cAqBA,GAAI,IAAqB,gBACrB,GAAY,QAAQ,WAAa,QACjC,GAAa,cAIb,GAAQ,QAAQ,IAAI,YAAc,KAAK,KAAK,QAAQ,IAAI,YAE5D,cAGE,GAAI,GACJ,GAAI,IACF,GAAI,GAAY,GAAI,OACpB,EAAW,MAEX,GAAW,EAEb,MAAO,GAEP,WAAuB,GACrB,AAAI,GACF,GAAU,QAAU,EAAI,QACxB,EAAM,EACN,EAAgB,IAIpB,WAAyB,GACvB,GAAI,GACF,GAAI,QAAQ,iBACV,KAAM,GACH,GAAI,CAAC,QAAQ,eAChB,GAAI,GAAM,wBAA2B,GAAI,OAAS,EAAI,SACtD,AAAI,QAAQ,iBACV,QAAQ,MAAM,GAEd,QAAQ,MAAM,MAMxB,YAAuB,GACrB,MAAO,OAAO,IAAO,WAAa,EAAK,KAGzC,GAAI,IAAY,GAAW,UAI3B,AAAI,GACE,GAAa,sBAEb,GAAa,oBAFb,OAMN,AAAI,GACE,GAAc,yDAEd,GAAc,SAFd,OAKN,GAAQ,aAAe,SAAsB,EAAG,GAI9C,GAFA,EAAI,GAAW,QAAQ,GAEnB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GACvD,MAAO,GAAM,GAGf,GAAI,GAAW,EACX,EAAY,GACZ,EAAY,GAGZ,EAEA,EAEA,EAEA,EAEJ,IAEA,aAEE,GAAI,GAAI,GAAY,KAAK,GACzB,EAAM,EAAE,GAAG,OACX,EAAU,EAAE,GACZ,EAAO,EAAE,GACT,EAAW,GAGP,IAAa,CAAC,EAAU,IAC1B,IAAG,UAAU,GACb,EAAU,GAAQ,IAOtB,KAAO,EAAM,EAAE,SAEb,GAAW,UAAY,EACvB,GAAI,GAAS,GAAW,KAAK,GAO7B,GANA,EAAW,EACX,GAAW,EAAO,GAClB,EAAO,EAAW,EAAO,GACzB,EAAM,GAAW,UAGb,IAAU,IAAU,GAAS,EAAM,KAAU,IAIjD,GAAI,GACJ,GAAI,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GAEvD,EAAe,EAAM,QAErB,GAAI,GAAO,GAAG,UAAU,GACxB,GAAI,CAAC,EAAK,kBACR,EAAU,GAAQ,GACd,GAAO,GAAM,GAAQ,GACzB,SAKF,GAAI,GAAa,KACjB,GAAI,CAAC,IACH,GAAI,GAAK,EAAK,IAAI,SAAS,IAAM,IAAM,EAAK,IAAI,SAAS,IACzD,AAAI,EAAU,eAAe,IAC3B,GAAa,EAAU,IAG3B,AAAI,IAAe,MACjB,IAAG,SAAS,GACZ,EAAa,GAAG,aAAa,IAE/B,EAAe,GAAW,QAAQ,EAAU,GAExC,GAAO,GAAM,GAAQ,GACpB,IAAW,GAAU,GAAM,GAIlC,EAAI,GAAW,QAAQ,EAAc,EAAE,MAAM,IAC7C,KAGF,MAAI,IAAO,GAAM,GAAY,GAEtB,GAIT,GAAQ,SAAW,SAAkB,EAAG,EAAO,GAS7C,GARI,MAAO,IAAO,YAChB,GAAK,GAAc,GACnB,EAAQ,MAIV,EAAI,GAAW,QAAQ,GAEnB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GACvD,MAAO,SAAQ,SAAS,EAAG,KAAK,KAAM,KAAM,EAAM,KAGpD,GAAI,GAAW,EACX,EAAY,GACZ,EAAY,GAGZ,EAEA,EAEA,EAEA,EAEJ,IAEA,aAEE,GAAI,GAAI,GAAY,KAAK,GACzB,EAAM,EAAE,GAAG,OACX,EAAU,EAAE,GACZ,EAAO,EAAE,GACT,EAAW,GAGX,AAAI,IAAa,CAAC,EAAU,GAC1B,GAAG,MAAM,EAAM,SAAS,GACtB,GAAI,EAAK,MAAO,GAAG,GACnB,EAAU,GAAQ,GAClB,MAGF,QAAQ,SAAS,GAMrB,aAEE,GAAI,GAAO,EAAE,OACX,MAAI,IAAO,GAAM,GAAY,GACtB,EAAG,KAAM,GAIlB,GAAW,UAAY,EACvB,GAAI,GAAS,GAAW,KAAK,GAO7B,MANA,GAAW,EACX,GAAW,EAAO,GAClB,EAAO,EAAW,EAAO,GACzB,EAAM,GAAW,UAGb,EAAU,IAAU,GAAS,EAAM,KAAU,EACxC,QAAQ,SAAS,GAGtB,GAAS,OAAO,UAAU,eAAe,KAAK,EAAO,GAEhD,EAAgB,EAAM,IAGxB,GAAG,MAAM,EAAM,GAGxB,WAAiB,EAAK,GACpB,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAI,CAAC,EAAK,iBACR,SAAU,GAAQ,GACd,GAAO,GAAM,GAAQ,GAClB,QAAQ,SAAS,GAM1B,GAAI,CAAC,IACH,GAAI,GAAK,EAAK,IAAI,SAAS,IAAM,IAAM,EAAK,IAAI,SAAS,IACzD,GAAI,EAAU,eAAe,GAC3B,MAAO,GAAU,KAAM,EAAU,GAAK,GAG1C,GAAG,KAAK,EAAM,SAAS,GACrB,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAG,SAAS,EAAM,SAAS,EAAK,GAC9B,AAAK,IAAW,GAAU,GAAM,GAChC,EAAU,EAAK,OAKrB,WAAmB,EAAK,EAAQ,GAC9B,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAI,GAAe,GAAW,QAAQ,EAAU,GAChD,AAAI,GAAO,GAAM,GAAQ,GACzB,EAAgB,GAGlB,WAAyB,GAEvB,EAAI,GAAW,QAAQ,EAAc,EAAE,MAAM,IAC7C,QC5SJ,sBAAO,QAAU,GACjB,GAAS,SAAW,GACpB,GAAS,KAAO,GAChB,GAAS,aAAe,GACxB,GAAS,YAAc,GACvB,GAAS,cAAgB,GAEzB,GAAI,IAAa,cACb,GAAe,GAAG,SAClB,GAAmB,GAAG,aAEtB,GAAU,QAAQ,QAClB,GAAK,YAAY,KAAK,IACtB,GAAc,KAElB,YAAmB,GACjB,MAAO,IAAM,EAAG,UAAY,YAC1B,GAAG,OAAS,SACZ,EAAG,OAAS,UACZ,EAAG,OAAS,gBAIhB,YAAmB,EAAG,EAAO,GAC3B,GAAI,GACF,MAAO,IAAa,EAAG,EAAO,GAGhC,AAAI,MAAO,IAAU,YACnB,GAAK,EACL,EAAQ,MAEV,GAAa,EAAG,EAAO,SAAU,EAAI,GACnC,AAAI,GAAS,GACX,GAAI,SAAS,EAAG,EAAO,GAEvB,EAAG,EAAI,KAKb,YAAuB,EAAG,GACxB,GAAI,GACF,MAAO,IAAiB,EAAG,GAG7B,IACE,MAAO,IAAiB,EAAG,SACpB,GACP,GAAI,GAAS,GACX,MAAO,IAAI,aAAa,EAAG,GAE3B,KAAM,IAKZ,cACE,GAAG,SAAW,GACd,GAAG,aAAe,GAGpB,cACE,GAAG,SAAW,GACd,GAAG,aAAe,MChEpB,sBAAO,QAAU,SAAU,EAAI,GAE3B,OADI,GAAM,GACD,EAAI,EAAG,EAAI,EAAG,OAAQ,KAC3B,GAAI,GAAI,EAAG,EAAG,GAAI,GAClB,AAAI,GAAQ,GAAI,EAAI,KAAK,MAAM,EAAK,GAC/B,EAAI,KAAK,GAElB,MAAO,IAGX,GAAI,IAAU,MAAM,SAAW,SAAU,GACrC,MAAO,QAAO,UAAU,SAAS,KAAK,KAAQ,oBCXlD,gCACA,GAAO,QAAU,GACjB,YAAkB,EAAG,EAAG,GACtB,AAAI,YAAa,SAAQ,GAAI,GAAW,EAAG,IACvC,YAAa,SAAQ,GAAI,GAAW,EAAG,IAE3C,GAAI,GAAI,GAAM,EAAG,EAAG,GAEpB,MAAO,IAAK,CACV,MAAO,EAAE,GACT,IAAK,EAAE,GACP,IAAK,EAAI,MAAM,EAAG,EAAE,IACpB,KAAM,EAAI,MAAM,EAAE,GAAK,EAAE,OAAQ,EAAE,IACnC,KAAM,EAAI,MAAM,EAAE,GAAK,EAAE,SAI7B,YAAoB,EAAK,GACvB,GAAI,GAAI,EAAI,MAAM,GAClB,MAAO,GAAI,EAAE,GAAK,KAGpB,GAAS,MAAQ,GACjB,YAAe,EAAG,EAAG,GACnB,GAAI,GAAM,EAAK,EAAM,EAAO,EACxB,EAAK,EAAI,QAAQ,GACjB,EAAK,EAAI,QAAQ,EAAG,EAAK,GACzB,EAAI,EAER,GAAI,GAAM,GAAK,EAAK,GAIlB,IAHA,EAAO,GACP,EAAO,EAAI,OAEJ,GAAK,GAAK,CAAC,GAChB,AAAI,GAAK,EACP,GAAK,KAAK,GACV,EAAK,EAAI,QAAQ,EAAG,EAAI,IACnB,AAAI,EAAK,QAAU,EACxB,EAAS,CAAE,EAAK,MAAO,GAEvB,GAAM,EAAK,MACP,EAAM,GACR,GAAO,EACP,EAAQ,GAGV,EAAK,EAAI,QAAQ,EAAG,EAAI,IAG1B,EAAI,EAAK,GAAM,GAAM,EAAI,EAAK,EAGhC,AAAI,EAAK,QACP,GAAS,CAAE,EAAM,IAIrB,MAAO,MCzDT,sBAAI,IAAoB,KACpB,GAAmB,KAEvB,GAAO,QAAU,GAEjB,GAAI,IAAW,UAAU,KAAK,SAAS,KACnC,GAAU,SAAS,KAAK,SAAS,KACjC,GAAW,UAAU,KAAK,SAAS,KACnC,GAAW,UAAU,KAAK,SAAS,KACnC,GAAY,WAAW,KAAK,SAAS,KAEzC,YAAiB,GACf,MAAO,UAAS,EAAK,KAAO,EACxB,SAAS,EAAK,IACd,EAAI,WAAW,GAGrB,YAAsB,GACpB,MAAO,GAAI,MAAM,QAAQ,KAAK,IACnB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAClB,MAAM,OAAO,KAAK,IAG/B,YAAwB,GACtB,MAAO,GAAI,MAAM,IAAU,KAAK,MACrB,MAAM,IAAS,KAAK,KACpB,MAAM,IAAU,KAAK,KACrB,MAAM,IAAU,KAAK,KACrB,MAAM,IAAW,KAAK,KAOnC,YAAyB,GACvB,GAAI,CAAC,EACH,MAAO,CAAC,IAEV,GAAI,GAAQ,GACR,EAAI,GAAS,IAAK,IAAK,GAE3B,GAAI,CAAC,EACH,MAAO,GAAI,MAAM,KAEnB,GAAI,GAAM,EAAE,IACR,EAAO,EAAE,KACT,EAAO,EAAE,KACT,EAAI,EAAI,MAAM,KAElB,EAAE,EAAE,OAAO,IAAM,IAAM,EAAO,IAC9B,GAAI,GAAY,GAAgB,GAChC,MAAI,GAAK,QACP,GAAE,EAAE,OAAO,IAAM,EAAU,QAC3B,EAAE,KAAK,MAAM,EAAG,IAGlB,EAAM,KAAK,MAAM,EAAO,GAEjB,EAGT,YAAmB,GACjB,MAAK,GASD,GAAI,OAAO,EAAG,KAAO,MACvB,GAAM,SAAW,EAAI,OAAO,IAGvB,GAAO,GAAa,GAAM,IAAM,IAAI,KAZlC,GAmBX,YAAiB,GACf,MAAO,IAAM,EAAM,IAErB,YAAkB,GAChB,MAAO,SAAS,KAAK,GAGvB,YAAa,EAAG,GACd,MAAO,IAAK,EAEd,YAAa,EAAG,GACd,MAAO,IAAK,EAGd,YAAgB,EAAK,GACnB,GAAI,GAAa,GAEb,EAAI,GAAS,IAAK,IAAK,GAC3B,GAAI,CAAC,GAAK,MAAM,KAAK,EAAE,KAAM,MAAO,CAAC,GAErC,GAAI,GAAoB,iCAAiC,KAAK,EAAE,MAC5D,EAAkB,uCAAuC,KAAK,EAAE,MAChE,EAAa,GAAqB,EAClC,EAAY,EAAE,KAAK,QAAQ,MAAQ,EACvC,GAAI,CAAC,GAAc,CAAC,EAElB,MAAI,GAAE,KAAK,MAAM,SACf,GAAM,EAAE,IAAM,IAAM,EAAE,KAAO,GAAW,EAAE,KACnC,GAAO,IAET,CAAC,GAGV,GAAI,GACJ,GAAI,EACF,EAAI,EAAE,KAAK,MAAM,gBAEjB,EAAI,GAAgB,EAAE,MAClB,EAAE,SAAW,GAEf,GAAI,GAAO,EAAE,GAAI,IAAO,IAAI,IACxB,EAAE,SAAW,IACf,GAAI,GAAO,EAAE,KAAK,OACd,GAAO,EAAE,KAAM,IACf,CAAC,IACL,MAAO,GAAK,IAAI,SAAS,GACvB,MAAO,GAAE,IAAM,EAAE,GAAK,IAU9B,GAAI,GAAM,EAAE,IACR,EAAO,EAAE,KAAK,OACd,GAAO,EAAE,KAAM,IACf,CAAC,IAED,EAEJ,GAAI,GACF,GAAI,GAAI,GAAQ,EAAE,IACd,EAAI,GAAQ,EAAE,IACd,EAAQ,KAAK,IAAI,EAAE,GAAG,OAAQ,EAAE,GAAG,QACnC,EAAO,EAAE,QAAU,EACnB,KAAK,IAAI,GAAQ,EAAE,KACnB,EACA,EAAO,GACP,EAAU,EAAI,EAClB,AAAI,GACF,IAAQ,GACR,EAAO,IAET,GAAI,GAAM,EAAE,KAAK,IAEjB,EAAI,GAEJ,OAAS,GAAI,EAAG,EAAK,EAAG,GAAI,GAAK,GAC/B,GAAI,GACJ,GAAI,EACF,EAAI,OAAO,aAAa,GACpB,IAAM,MACR,GAAI,YAEN,EAAI,OAAO,GACP,GACF,GAAI,GAAO,EAAQ,EAAE,OACrB,GAAI,EAAO,GACT,GAAI,GAAI,GAAI,OAAM,EAAO,GAAG,KAAK,KACjC,AAAI,EAAI,EACN,EAAI,IAAM,EAAI,EAAE,MAAM,GAEtB,EAAI,EAAI,GAIhB,EAAE,KAAK,QAGT,GAAI,GAAU,EAAG,SAAS,GAAM,MAAO,IAAO,EAAI,MAGpD,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,KAC/B,GAAI,GAAY,EAAM,EAAE,GAAK,EAAK,GAClC,AAAI,EAAC,GAAS,GAAc,IAC1B,EAAW,KAAK,GAItB,MAAO,MCtMT,sBAAO,QAAU,GACjB,GAAU,UAAY,GAEtB,GAAI,IAAO,CAAE,IAAK,KAClB,IACE,GAAe,sBACR,IAET,GAAI,IAAW,GAAU,SAAW,GAAU,SAAW,GACrD,GAAiB,KAEjB,GAAU,CACZ,IAAK,CAAE,KAAM,YAAa,MAAO,aACjC,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAC3B,IAAK,CAAE,KAAM,MAAO,MAAO,MAKzB,GAAQ,OAGR,GAAO,GAAQ,KAKf,GAAa,0CAIb,GAAe,0BAGf,GAAa,GAAQ,mBAGzB,YAAkB,GAChB,MAAO,GAAE,MAAM,IAAI,OAAO,SAAU,EAAK,GACvC,SAAI,GAAK,GACF,GACN,IAIL,GAAI,IAAa,MAEjB,GAAU,OAAS,GACnB,YAAiB,EAAS,GACxB,SAAU,GAAW,GACd,SAAU,EAAG,EAAG,GACrB,MAAO,IAAU,EAAG,EAAS,IAIjC,YAAc,EAAG,GACf,EAAI,GAAK,GACT,EAAI,GAAK,GACT,GAAI,GAAI,GACR,cAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEX,OAAO,KAAK,GAAG,QAAQ,SAAU,GAC/B,EAAE,GAAK,EAAE,KAEJ,EAGT,GAAU,SAAW,SAAU,GAC7B,GAAI,CAAC,GAAO,CAAC,OAAO,KAAK,GAAK,OAAQ,MAAO,IAE7C,GAAI,GAAO,GAEP,EAAI,SAAoB,EAAG,EAAS,GACtC,MAAO,GAAK,UAAU,EAAG,EAAS,GAAI,EAAK,KAG7C,SAAE,UAAY,SAAoB,EAAS,GACzC,MAAO,IAAI,GAAK,UAAU,EAAS,GAAI,EAAK,KAGvC,GAGT,GAAU,SAAW,SAAU,GAC7B,MAAI,CAAC,GAAO,CAAC,OAAO,KAAK,GAAK,OAAe,GACtC,GAAU,SAAS,GAAK,WAGjC,YAAoB,EAAG,EAAS,GAC9B,GAAI,MAAO,IAAY,SACrB,KAAM,IAAI,WAAU,gCAMtB,MAHK,IAAS,GAAU,IAGpB,CAAC,EAAQ,WAAa,EAAQ,OAAO,KAAO,IACvC,GAIL,EAAQ,SAAW,GAAW,IAAM,GAEjC,GAAI,IAAU,EAAS,GAAS,MAAM,GAG/C,YAAoB,EAAS,GAC3B,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAU,EAAS,GAGhC,GAAI,MAAO,IAAY,SACrB,KAAM,IAAI,WAAU,gCAGtB,AAAK,GAAS,GAAU,IACxB,EAAU,EAAQ,OAGd,GAAK,MAAQ,KACf,GAAU,EAAQ,MAAM,GAAK,KAAK,KAAK,MAGzC,KAAK,QAAU,EACf,KAAK,IAAM,GACX,KAAK,QAAU,EACf,KAAK,OAAS,KACd,KAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,MAAQ,GAGb,KAAK,OAGP,GAAU,UAAU,MAAQ,aAE5B,GAAU,UAAU,KAAO,GAC3B,cAEE,GAAI,MAAK,OAET,GAAI,GAAU,KAAK,QACf,EAAU,KAAK,QAGnB,GAAI,CAAC,EAAQ,WAAa,EAAQ,OAAO,KAAO,KAC9C,KAAK,QAAU,GACf,OAEF,GAAI,CAAC,GACH,KAAK,MAAQ,GACb,OAIF,KAAK,cAGL,GAAI,GAAM,KAAK,QAAU,KAAK,cAE9B,AAAI,EAAQ,OAAO,MAAK,MAAQ,QAAQ,OAExC,KAAK,MAAM,KAAK,QAAS,GAOzB,EAAM,KAAK,UAAY,EAAI,IAAI,SAAU,GACvC,MAAO,GAAE,MAAM,MAGjB,KAAK,MAAM,KAAK,QAAS,GAGzB,EAAM,EAAI,IAAI,SAAU,EAAG,EAAI,GAC7B,MAAO,GAAE,IAAI,KAAK,MAAO,OACxB,MAEH,KAAK,MAAM,KAAK,QAAS,GAGzB,EAAM,EAAI,OAAO,SAAU,GACzB,MAAO,GAAE,QAAQ,MAAW,KAG9B,KAAK,MAAM,KAAK,QAAS,GAEzB,KAAK,IAAM,GAGb,GAAU,UAAU,YAAc,GAClC,cACE,GAAI,GAAU,KAAK,QACf,EAAS,GACT,EAAU,KAAK,QACf,EAAe,EAEnB,GAAI,GAAQ,UAEZ,OAAS,GAAI,EAAG,EAAI,EAAQ,OACxB,EAAI,GAAK,EAAQ,OAAO,KAAO,IAC/B,IACF,EAAS,CAAC,EACV,IAGF,AAAI,GAAc,MAAK,QAAU,EAAQ,OAAO,IAChD,KAAK,OAAS,GAahB,GAAU,YAAc,SAAU,EAAS,GACzC,MAAO,IAAY,EAAS,IAG9B,GAAU,UAAU,YAAc,GAElC,YAAsB,EAAS,GAY7B,GAXK,GACH,CAAI,eAAgB,IAClB,EAAU,KAAK,QAEf,EAAU,IAId,EAAU,MAAO,IAAY,YACzB,KAAK,QAAU,EAEf,MAAO,IAAY,YACrB,KAAM,IAAI,WAAU,qBAGtB,MAAI,GAAQ,SACV,CAAC,EAAQ,MAAM,UAER,CAAC,GAGH,GAAO,GAchB,GAAU,UAAU,MAAQ,GAC5B,GAAI,IAAW,GACf,YAAgB,EAAS,GACvB,GAAI,EAAQ,OAAS,KAAO,GAC1B,KAAM,IAAI,WAAU,uBAGtB,GAAI,GAAU,KAAK,QAGnB,GAAI,CAAC,EAAQ,YAAc,IAAY,KAAM,MAAO,IACpD,GAAI,IAAY,GAAI,MAAO,GAE3B,GAAI,GAAK,GACL,EAAW,CAAC,CAAC,EAAQ,OACrB,EAAW,GAEX,EAAmB,GACnB,EAAgB,GAChB,EACA,EAAU,GACV,EAAe,GACf,EAAa,GAGb,EAAe,EAAQ,OAAO,KAAO,IAAM,GAE7C,EAAQ,IAAM,iCACd,UACE,EAAO,KAEX,aACE,GAAI,GAGF,OAAQ,OACD,IACH,GAAM,GACN,EAAW,GACb,UACK,IACH,GAAM,GACN,EAAW,GACb,cAEE,GAAM,KAAO,EACf,MAEF,EAAK,MAAM,uBAAwB,EAAW,GAC9C,EAAY,IAIhB,OAAS,GAAI,EAAG,EAAM,EAAQ,OAAQ,EACjC,EAAI,GAAS,GAAI,EAAQ,OAAO,IACjC,KAIF,GAHA,KAAK,MAAM,cAAgB,EAAS,EAAG,EAAI,GAGvC,GAAY,GAAW,IACzB,GAAM,KAAO,EACb,EAAW,GACX,SAGF,OAAQ,OACD,IAGH,MAAO,OAEJ,KACH,IACA,EAAW,GACb,aAIK,QACA,QACA,QACA,QACA,IAKH,GAJA,KAAK,MAAM,4BAA8B,EAAS,EAAG,EAAI,GAIrD,GACF,KAAK,MAAM,cACP,IAAM,KAAO,IAAM,EAAa,GAAG,GAAI,KAC3C,GAAM,EACN,SAMF,EAAK,MAAM,yBAA0B,GACrC,IACA,EAAY,EAIR,EAAQ,OAAO,IACrB,aAEK,IACH,GAAI,GACF,GAAM,IACN,SAGF,GAAI,CAAC,GACH,GAAM,MACN,SAGF,EAAiB,KAAK,CACpB,KAAM,EACN,MAAO,EAAI,EACX,QAAS,EAAG,OACZ,KAAM,GAAQ,GAAW,KACzB,MAAO,GAAQ,GAAW,QAG5B,GAAM,IAAc,IAAM,YAAc,MACxC,KAAK,MAAM,eAAgB,EAAW,GACtC,EAAY,GACd,aAEK,IACH,GAAI,GAAW,CAAC,EAAiB,QAC/B,GAAM,MACN,SAGF,IACA,EAAW,GACX,GAAI,GAAK,EAAiB,MAG1B,GAAM,EAAG,MACL,EAAG,OAAS,KACd,EAAc,KAAK,GAErB,EAAG,MAAQ,EAAG,OAChB,aAEK,IACH,GAAI,GAAW,CAAC,EAAiB,QAAU,GACzC,GAAM,MACN,EAAW,GACX,SAGF,IACA,GAAM,IACR,aAGK,IAIH,GAFA,IAEI,GACF,GAAM,KAAO,EACb,SAGF,EAAU,GACV,EAAa,EACb,EAAe,EAAG,OAClB,GAAM,EACR,aAEK,IAKH,GAAI,IAAM,EAAa,GAAK,CAAC,GAC3B,GAAM,KAAO,EACb,EAAW,GACX,SAKF,GAAI,GAQF,GAAI,GAAK,EAAQ,UAAU,EAAa,EAAG,GAC3C,IACE,OAAO,IAAM,EAAK,WACX,IAEP,GAAI,GAAK,KAAK,MAAM,EAAI,IACxB,EAAK,EAAG,OAAO,EAAG,GAAgB,MAAQ,EAAG,GAAK,MAClD,EAAW,GAAY,EAAG,GAC1B,EAAU,GACV,UAKJ,EAAW,GACX,EAAU,GACV,GAAM,EACR,iBAIE,IAEA,AAAI,EAEF,EAAW,GACF,GAAW,IACjB,CAAE,KAAM,KAAO,IAClB,IAAM,MAGR,GAAM,GAwBZ,IAjBI,GAKF,GAAK,EAAQ,OAAO,EAAa,GACjC,EAAK,KAAK,MAAM,EAAI,IACpB,EAAK,EAAG,OAAO,EAAG,GAAgB,MAAQ,EAAG,GAC7C,EAAW,GAAY,EAAG,IASvB,EAAK,EAAiB,MAAO,EAAI,EAAK,EAAiB,OAC1D,GAAI,GAAO,EAAG,MAAM,EAAG,QAAU,EAAG,KAAK,QACzC,KAAK,MAAM,eAAgB,EAAI,GAE/B,EAAO,EAAK,QAAQ,4BAA6B,SAAU,GAAG,GAAI,IAChE,MAAK,KAEH,IAAK,MASA,GAAK,GAAK,GAAK,MAGxB,KAAK,MAAM;AAAA,OAAkB,EAAM,EAAM,EAAI,GAC7C,GAAI,GAAI,EAAG,OAAS,IAAM,GACtB,EAAG,OAAS,IAAM,GAClB,KAAO,EAAG,KAEd,EAAW,GACX,EAAK,EAAG,MAAM,EAAG,EAAG,SAAW,EAAI,MAAQ,EAI7C,IACI,GAEF,IAAM,QAKR,GAAI,GAAkB,GACtB,OAAQ,EAAG,OAAO,QACX,QACA,QACA,IAAK,EAAkB,GAQ9B,OAAS,GAAI,EAAc,OAAS,EAAG,EAAI,GAAI,KAC7C,GAAI,GAAK,EAAc,GAEnB,EAAW,EAAG,MAAM,EAAG,EAAG,SAC1B,EAAU,EAAG,MAAM,EAAG,QAAS,EAAG,MAAQ,GAC1C,EAAS,EAAG,MAAM,EAAG,MAAQ,EAAG,EAAG,OACnC,EAAU,EAAG,MAAM,EAAG,OAE1B,GAAU,EAKV,GAAI,IAAmB,EAAS,MAAM,KAAK,OAAS,EAChD,EAAa,EACjB,IAAK,EAAI,EAAG,EAAI,GAAkB,IAChC,EAAa,EAAW,QAAQ,WAAY,IAE9C,EAAU,EAEV,GAAI,IAAS,GACb,AAAI,IAAY,IAAM,IAAU,IAC9B,IAAS,KAEX,GAAI,IAAQ,EAAW,EAAU,EAAU,GAAS,EACpD,EAAK,GAeP,GATI,IAAO,IAAM,GACf,GAAK,QAAU,GAGb,GACF,GAAK,EAAe,GAIlB,IAAU,GACZ,MAAO,CAAC,EAAI,GAMd,GAAI,CAAC,EACH,MAAO,IAAa,GAGtB,GAAI,IAAQ,EAAQ,OAAS,IAAM,GACnC,IACE,GAAI,IAAS,GAAI,QAAO,IAAM,EAAK,IAAK,UACjC,IAKP,MAAO,IAAI,QAAO,MAGpB,UAAO,MAAQ,EACf,GAAO,KAAO,EAEP,GAGT,GAAU,OAAS,SAAU,EAAS,GACpC,MAAO,IAAI,IAAU,EAAS,GAAW,IAAI,UAG/C,GAAU,UAAU,OAAS,GAC7B,cACE,GAAI,KAAK,QAAU,KAAK,SAAW,GAAO,MAAO,MAAK,OAQtD,GAAI,GAAM,KAAK,IAEf,GAAI,CAAC,EAAI,OACP,YAAK,OAAS,GACP,KAAK,OAEd,GAAI,GAAU,KAAK,QAEf,EAAU,EAAQ,WAAa,GAC/B,EAAQ,IAAM,GACd,GACA,EAAQ,EAAQ,OAAS,IAAM,GAE/B,EAAK,EAAI,IAAI,SAAU,GACzB,MAAO,GAAQ,IAAI,SAAU,GAC3B,MAAQ,KAAM,GAAY,EACvB,MAAO,IAAM,SAAY,GAAa,GACvC,EAAE,OACH,KAAK,SACP,KAAK,KAIR,EAAK,OAAS,EAAK,KAGf,KAAK,QAAQ,GAAK,OAAS,EAAK,QAEpC,IACE,KAAK,OAAS,GAAI,QAAO,EAAI,SACtB,GACP,KAAK,OAAS,GAEhB,MAAO,MAAK,OAGd,GAAU,MAAQ,SAAU,EAAM,EAAS,GACzC,EAAU,GAAW,GACrB,GAAI,GAAK,GAAI,IAAU,EAAS,GAChC,SAAO,EAAK,OAAO,SAAU,GAC3B,MAAO,GAAG,MAAM,KAEd,EAAG,QAAQ,QAAU,CAAC,EAAK,QAC7B,EAAK,KAAK,GAEL,GAGT,GAAU,UAAU,MAAQ,GAC5B,YAAgB,EAAG,GAIjB,GAHA,KAAK,MAAM,QAAS,EAAG,KAAK,SAGxB,KAAK,QAAS,MAAO,GACzB,GAAI,KAAK,MAAO,MAAO,KAAM,GAE7B,GAAI,IAAM,KAAO,EAAS,MAAO,GAEjC,GAAI,GAAU,KAAK,QAGnB,AAAI,GAAK,MAAQ,KACf,GAAI,EAAE,MAAM,GAAK,KAAK,KAAK,MAI7B,EAAI,EAAE,MAAM,IACZ,KAAK,MAAM,KAAK,QAAS,QAAS,GAOlC,GAAI,GAAM,KAAK,IACf,KAAK,MAAM,KAAK,QAAS,MAAO,GAGhC,GAAI,GACA,EACJ,IAAK,EAAI,EAAE,OAAS,EAAG,GAAK,GAC1B,GAAW,EAAE,GACT,IAFyB,IAE7B,CAGF,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,KAC1B,GAAI,GAAU,EAAI,GACd,EAAO,EACX,AAAI,EAAQ,WAAa,EAAQ,SAAW,GAC1C,GAAO,CAAC,IAEV,GAAI,GAAM,KAAK,SAAS,EAAM,EAAS,GACvC,GAAI,EACF,MAAI,GAAQ,WAAmB,GACxB,CAAC,KAAK,OAMjB,MAAI,GAAQ,WAAmB,GACxB,KAAK,OAQd,GAAU,UAAU,SAAW,SAAU,EAAM,EAAS,GACtD,GAAI,GAAU,KAAK,QAEnB,KAAK,MAAM,WACT,CAAE,KAAQ,KAAM,KAAM,EAAM,QAAS,IAEvC,KAAK,MAAM,WAAY,EAAK,OAAQ,EAAQ,QAE5C,OAAS,GAAK,EACV,EAAK,EACL,EAAK,EAAK,OACV,EAAK,EAAQ,OACV,EAAK,GAAQ,EAAK,EACnB,IAAM,KACV,KAAK,MAAM,iBACX,GAAI,GAAI,EAAQ,GACZ,EAAI,EAAK,GAMb,GAJA,KAAK,MAAM,EAAS,EAAG,GAInB,IAAM,GAAO,MAAO,GAExB,GAAI,IAAM,IACR,KAAK,MAAM,WAAY,CAAC,EAAS,EAAG,IAwBpC,GAAI,GAAK,EACL,EAAK,EAAK,EACd,GAAI,IAAO,GAQT,IAPA,KAAK,MAAM,iBAOJ,EAAK,EAAI,IACd,GAAI,EAAK,KAAQ,KAAO,EAAK,KAAQ,MAClC,CAAC,EAAQ,KAAO,EAAK,GAAI,OAAO,KAAO,IAAM,MAAO,GAEzD,MAAO,GAIT,KAAO,EAAK,IACV,GAAI,GAAY,EAAK,GAKrB,GAHA,KAAK,MAAM;AAAA,gBAAoB,EAAM,EAAI,EAAS,EAAI,GAGlD,KAAK,SAAS,EAAK,MAAM,GAAK,EAAQ,MAAM,GAAK,GACnD,YAAK,MAAM,wBAAyB,EAAI,EAAI,GAErC,GAIP,GAAI,IAAc,KAAO,IAAc,MACpC,CAAC,EAAQ,KAAO,EAAU,OAAO,KAAO,KACzC,KAAK,MAAM,gBAAiB,EAAM,EAAI,EAAS,GAC/C,MAIF,KAAK,MAAM,4CACX,IAOJ,MAAI,MAEF,MAAK,MAAM;AAAA,wBAA4B,EAAM,EAAI,EAAS,GACtD,IAAO,IAQf,GAAI,GAaJ,GAZA,AAAI,MAAO,IAAM,SACf,CAAI,EAAQ,OACV,EAAM,EAAE,gBAAkB,EAAE,cAE5B,EAAM,IAAM,EAEd,KAAK,MAAM,eAAgB,EAAG,EAAG,IAEjC,GAAM,EAAE,MAAM,GACd,KAAK,MAAM,gBAAiB,EAAG,EAAG,IAGhC,CAAC,EAAK,MAAO,GAenB,GAAI,IAAO,GAAM,IAAO,EAGtB,MAAO,GACF,GAAI,IAAO,EAIhB,MAAO,GACF,GAAI,IAAO,GAKhB,GAAI,GAAgB,IAAO,EAAK,GAAO,EAAK,KAAQ,GACpD,MAAO,GAIT,KAAM,IAAI,OAAM,SAIlB,YAAuB,GACrB,MAAO,GAAE,QAAQ,SAAU,MAG7B,YAAuB,GACrB,MAAO,GAAE,QAAQ,2BAA4B,WCz5B/C,mBAAI,MAAO,QAAO,QAAW,WAE3B,GAAO,QAAU,SAAkB,EAAM,GACvC,AAAI,GACF,GAAK,OAAS,EACd,EAAK,UAAY,OAAO,OAAO,EAAU,UAAW,CAClD,YAAa,CACX,MAAO,EACP,WAAY,GACZ,SAAU,GACV,aAAc,QAOtB,GAAO,QAAU,SAAkB,EAAM,GACvC,GAAI,GACF,EAAK,OAAS,EACd,GAAI,GAAW,aACf,EAAS,UAAY,EAAU,UAC/B,EAAK,UAAY,GAAI,GACrB,EAAK,UAAU,YAAc,MCvBnC,uBAGE,GAFI,GAAe,gBAEf,MAAO,IAAK,UAAa,WAAY,KAAM,GAC/C,GAAO,QAAU,GAAK,eACf,GAEP,GAAO,QAAkB,KANrB,SCDN,gCAEA,YAAe,GACd,MAAO,GAAK,OAAO,KAAO,IAG3B,YAAe,GAEd,GAAI,GAAgB,qEAChB,EAAS,EAAc,KAAK,GAC5B,EAAS,EAAO,IAAM,GACtB,EAAQ,QAAQ,GAAU,EAAO,OAAO,KAAO,KAGnD,MAAO,SAAQ,EAAO,IAAM,GAG7B,GAAO,QAAU,QAAQ,WAAa,QAAU,GAAQ,GACxD,GAAO,QAAQ,MAAQ,GACvB,GAAO,QAAQ,MAAQ,KCnBvB,iBAAQ,UAAY,GACpB,GAAQ,WAAa,GACrB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,QAAU,GAClB,GAAQ,OAAS,GACjB,GAAQ,KAAO,GACf,GAAQ,UAAY,GACpB,GAAQ,gBAAkB,GAE1B,YAAkB,EAAK,GACrB,MAAO,QAAO,UAAU,eAAe,KAAK,EAAK,GAGnD,GAAI,IAAe,gBACf,GAAoB,KACpB,GAAqB,KACrB,GAAY,GAAU,UAE1B,YAAqB,EAAG,GACtB,MAAO,GAAE,cAAc,cAAc,EAAE,eAGzC,YAAoB,EAAG,GACrB,MAAO,GAAE,cAAc,GAGzB,YAAuB,EAAM,GAC3B,EAAK,OAAS,EAAQ,QAAU,GAE3B,MAAM,QAAQ,EAAK,SACtB,GAAK,OAAS,CAAC,EAAK,SAElB,EAAK,OAAO,QACd,GAAK,OAAS,EAAK,OAAO,IAAI,KAKlC,YAAoB,GAClB,GAAI,GAAW,KACf,GAAI,EAAQ,MAAM,MAAQ,OACxB,GAAI,GAAW,EAAQ,QAAQ,aAAc,IAC7C,EAAW,GAAI,IAAU,EAAU,CAAE,IAAK,KAG5C,MAAO,CACL,QAAS,GAAI,IAAU,EAAS,CAAE,IAAK,KACvC,SAAU,GAId,YAAkB,EAAM,EAAS,GAK/B,GAJK,GACH,GAAU,IAGR,EAAQ,WAAa,AAAO,EAAQ,QAAQ,OAAvB,IACvB,GAAI,EAAQ,WACV,KAAM,IAAI,OAAM,mCAElB,EAAU,MAAQ,EAGpB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,QAAU,EACf,EAAK,OAAS,EAAQ,SAAW,GACjC,EAAK,SAAW,CAAC,CAAC,EAAQ,SAC1B,EAAK,cAAgB,EAAQ,eAAiB,OAAO,OAAO,MAC5D,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,IAAM,CAAC,CAAC,EAAQ,IACrB,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,MAAQ,CAAC,CAAC,EAAQ,MACnB,EAAK,OACP,GAAK,KAAO,IACd,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,SAAW,CAAC,CAAC,EAAQ,SAC1B,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,OAAS,CAAC,CAAC,EAAQ,OACxB,EAAK,KAAO,CAAC,CAAC,EAAQ,KACtB,EAAK,UAAY,CAAC,CAAC,EAAQ,UAC3B,EAAK,SAAW,CAAC,CAAC,EAAQ,SAE1B,EAAK,UAAY,EAAQ,WAAa,SACtC,EAAK,MAAQ,EAAQ,OAAS,OAAO,OAAO,MAC5C,EAAK,UAAY,EAAQ,WAAa,OAAO,OAAO,MACpD,EAAK,SAAW,EAAQ,UAAY,OAAO,OAAO,MAElD,GAAa,EAAM,GAEnB,EAAK,WAAa,GAClB,GAAI,GAAM,QAAQ,MAClB,AAAK,GAAQ,EAAS,OAGpB,GAAK,IAAM,GAAK,QAAQ,EAAQ,KAChC,EAAK,WAAa,EAAK,MAAQ,GAH/B,EAAK,IAAM,EAMb,EAAK,KAAO,EAAQ,MAAQ,GAAK,QAAQ,EAAK,IAAK,KACnD,EAAK,KAAO,GAAK,QAAQ,EAAK,MAC1B,QAAQ,WAAa,SACvB,GAAK,KAAO,EAAK,KAAK,QAAQ,MAAO,MAIvC,EAAK,OAAS,GAAW,EAAK,KAAO,EAAK,IAAM,GAAQ,EAAM,EAAK,KAC/D,QAAQ,WAAa,SACvB,GAAK,OAAS,EAAK,OAAO,QAAQ,MAAO,MAC3C,EAAK,QAAU,CAAC,CAAC,EAAQ,QAIzB,EAAQ,SAAW,GACnB,EAAQ,UAAY,GAEpB,EAAK,UAAY,GAAI,IAAU,EAAS,GACxC,EAAK,QAAU,EAAK,UAAU,QAGhC,YAAiB,GAIf,OAHI,GAAM,EAAK,SACX,EAAM,EAAM,GAAK,OAAO,OAAO,MAE1B,EAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,EAAI,EAAG,KAC9C,GAAI,GAAU,EAAK,QAAQ,GAC3B,GAAI,CAAC,GAAW,OAAO,KAAK,GAAS,SAAW,GAC9C,GAAI,EAAK,QAEP,GAAI,GAAU,EAAK,UAAU,QAAQ,GACrC,AAAI,EACF,EAAI,KAAK,GAET,EAAI,GAAW,SAInB,GAAI,GAAI,OAAO,KAAK,GACpB,AAAI,EACF,EAAI,KAAK,MAAM,EAAK,GAEpB,EAAE,QAAQ,SAAU,GAClB,EAAI,GAAK,MAYjB,GAPK,GACH,GAAM,OAAO,KAAK,IAEf,EAAK,QACR,GAAM,EAAI,KAAK,EAAK,OAAS,GAAa,KAGxC,EAAK,MACP,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,EAAI,GAAK,EAAK,MAAM,EAAI,IAE1B,AAAI,EAAK,OACP,GAAM,EAAI,OAAO,SAAU,GACzB,GAAI,GAAS,CAAE,MAAM,KAAK,GACtB,EAAI,EAAK,MAAM,IAAM,EAAK,MAAM,GAAQ,EAAM,IAClD,MAAI,IAAU,GACZ,GAAS,IAAM,OAAS,CAAC,MAAM,QAAQ,IAClC,KAKb,AAAI,EAAK,OAAO,QACd,GAAM,EAAI,OAAO,SAAS,GACxB,MAAO,CAAC,GAAU,EAAM,MAG5B,EAAK,MAAQ,EAGf,YAAe,EAAM,GACnB,GAAI,GAAM,GAAQ,EAAM,GACpB,EAAI,EAAK,MAAM,GACf,EAAI,EACR,GAAI,GACF,GAAI,GAAQ,IAAM,OAAS,MAAM,QAAQ,GACrC,EAAQ,EAAE,MAAM,MAAQ,IAO5B,GALA,AAAI,GAAS,CAAC,EACZ,GAAK,IACE,CAAC,GAAS,GACjB,GAAI,EAAE,MAAM,EAAG,KAEb,IAAM,GACR,GAAI,GAAO,GAAQ,EAAM,GACzB,EAAK,UAAU,GAAQ,EAAK,UAAU,GACtC,EAAK,MAAM,GAAQ,EAAK,MAAM,IAIlC,MAAO,GAIT,YAAkB,EAAM,GACtB,GAAI,GAAM,EACV,MAAI,GAAE,OAAO,KAAO,IAClB,EAAM,GAAK,KAAK,EAAK,KAAM,GACtB,AAAI,GAAW,IAAM,IAAM,GAChC,EAAM,EACD,AAAI,EAAK,WACd,EAAM,GAAK,QAAQ,EAAK,IAAK,GAE7B,EAAM,GAAK,QAAQ,GAGjB,QAAQ,WAAa,SACvB,GAAM,EAAI,QAAQ,MAAO,MAEpB,EAMT,YAAoB,EAAM,GACxB,MAAK,GAAK,OAAO,OAGV,EAAK,OAAO,KAAK,SAAS,GAC/B,MAAO,GAAK,QAAQ,MAAM,IAAS,CAAC,CAAE,GAAK,UAAY,EAAK,SAAS,MAAM,MAHpE,GAOX,YAA0B,EAAM,GAC9B,MAAK,GAAK,OAAO,OAGV,EAAK,OAAO,KAAK,SAAS,GAC/B,MAAO,CAAC,CAAE,GAAK,UAAY,EAAK,SAAS,MAAM,MAHxC,MC1OX,sBAAO,QAAU,GACjB,GAAS,SAAW,GAEpB,GAAI,IAAa,cACb,GAAa,KACb,GAAoB,KACpB,GAAY,GAAU,UACtB,GAAO,AAAQ,KAAa,KAC5B,GAAe,gBACf,GAAe,gBACf,GAAiB,kBACjB,GAAqB,KACrB,GAAiB,KACjB,GAAY,GAAO,UACnB,GAAa,GAAO,WACpB,GAAU,GAAO,QACjB,GAAU,GAAO,QACjB,GAAkB,GAAO,gBACzB,GAAY,GAAO,UAEvB,YAAmB,EAAS,GAC1B,GAAI,MAAO,IAAY,YAAc,UAAU,SAAW,EACxD,KAAM,IAAI,WAAU;AAAA,sDAGtB,MAAO,IAAI,IAAS,EAAS,GAAS,MAGxC,YAAmB,EAAS,GAC1B,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,wBAElB,GAAI,MAAO,IAAY,YAAc,UAAU,SAAW,EACxD,KAAM,IAAI,WAAU;AAAA,sDAGtB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAS,EAAS,GAI/B,GAFA,GAAQ,KAAM,EAAS,GAEnB,KAAK,UACP,MAAO,MAET,GAAI,GAAI,KAAK,UAAU,IAAI,OAC3B,KAAK,QAAU,GAAI,OAAM,GACzB,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,KAAK,SAAS,KAAK,UAAU,IAAI,GAAI,EAAG,IAE1C,KAAK,UAGP,GAAS,UAAU,QAAU,WAE3B,GADA,GAAO,eAAgB,KACnB,KAAK,UACP,GAAI,GAAO,KACX,KAAK,QAAQ,QAAQ,SAAU,EAAU,GACvC,GAAI,GAAM,EAAK,QAAQ,GAAS,OAAO,OAAO,MAC9C,OAAS,KAAK,GACZ,IACE,EAAI,EAAK,SAAS,GAClB,GAAI,GAAO,GAAG,aAAa,EAAG,EAAK,eACnC,EAAI,GAAQ,SACL,GACP,GAAI,EAAG,UAAY,OACjB,EAAI,EAAK,SAAS,IAAM,OAExB,MAAM,MAKhB,GAAO,OAAO,OAIhB,GAAS,UAAU,SAAW,SAAU,EAAS,EAAO,GACtD,GAAO,eAAgB,KAIvB,OADI,GAAI,EACD,MAAO,GAAQ,IAAO,UAC3B,IAKF,GAAI,GACJ,OAAQ,OAED,GAAQ,OACX,KAAK,eAAe,EAAQ,KAAK,KAAM,GACvC,WAEG,GAGH,EAAS,KACT,cAMA,EAAS,EAAQ,MAAM,EAAG,GAAG,KAAK,KAClC,MAGJ,GAAI,GAAS,EAAQ,MAAM,GAGvB,EACJ,AAAI,IAAW,KACb,EAAO,IACA,KAAW,IAAW,GAAW,EAAQ,KAAK,QACjD,EAAC,GAAU,CAAC,GAAW,KACzB,GAAS,IAAM,GACjB,EAAO,GAIT,GAAI,GAAM,KAAK,SAAS,GAGxB,GAAI,IAAgB,KAAM,IAG1B,GAAI,GAAa,EAAO,KAAO,GAAU,SACzC,AAAI,EACF,KAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAExD,KAAK,gBAAgB,EAAQ,EAAM,EAAK,EAAQ,EAAO,KAI3D,GAAS,UAAU,gBAAkB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAC/E,GAAI,GAAU,KAAK,SAAS,EAAK,GAGjC,GAAI,EAAC,GAWL,OANI,GAAK,EAAO,GACZ,EAAS,CAAC,CAAC,KAAK,UAAU,OAC1B,EAAU,EAAG,MACb,EAAQ,KAAK,KAAO,EAAQ,OAAO,KAAO,IAE1C,EAAiB,GACZ,EAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,GAAI,EAAE,OAAO,KAAO,KAAO,GACzB,GAAI,GACJ,AAAI,GAAU,CAAC,EACb,EAAI,CAAC,EAAE,MAAM,GAEb,EAAI,EAAE,MAAM,GAEV,GACF,EAAe,KAAK,IAI1B,GAAI,GAAM,EAAe,OAEzB,GAAI,IAAQ,GAQZ,GAAI,EAAO,SAAW,GAAK,CAAC,KAAK,MAAQ,CAAC,KAAK,MAC7C,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAEtC,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACvB,AAAI,GACF,CAAI,EAAO,MAAM,MAAQ,IACvB,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAGb,EAAE,OAAO,KAAO,KAAO,CAAC,KAAK,SAC/B,GAAI,GAAK,KAAK,KAAK,KAAM,IAE3B,KAAK,WAAW,EAAO,GAGzB,OAKF,EAAO,QACP,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACnB,EACJ,AAAI,EACF,EAAa,CAAC,EAAQ,GAEtB,EAAa,CAAC,GAChB,KAAK,SAAS,EAAW,OAAO,GAAS,EAAO,OAKpD,GAAS,UAAU,WAAa,SAAU,EAAO,GAC/C,GAAI,IAAU,KAAM,IAGpB,GAAI,GAAM,KAAK,SAAS,GASxB,GAPI,KAAK,MACP,GAAI,KAAK,MAAM,IAEb,KAAK,UACP,GAAI,GAGF,MAAK,QAAQ,GAAO,IAGxB,GAAI,KAAK,OACP,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,IAAM,OAAS,MAAM,QAAQ,GAC/B,OAGJ,KAAK,QAAQ,GAAO,GAAK,GAErB,KAAK,MACP,KAAK,MAAM,MAIf,GAAS,UAAU,mBAAqB,SAAU,GAGhD,GAAI,KAAK,OACP,MAAO,MAAK,SAAS,EAAK,IAE5B,GAAI,GACA,EACA,EACJ,IACE,EAAQ,GAAG,UAAU,SACd,GACP,GAAI,EAAG,OAAS,SAEd,MAAO,MAIX,GAAI,GAAQ,GAAS,EAAM,iBAC3B,YAAK,SAAS,GAAO,EAIrB,AAAI,CAAC,GAAS,GAAS,CAAC,EAAM,cAC5B,KAAK,MAAM,GAAO,OAElB,EAAU,KAAK,SAAS,EAAK,IAExB,GAGT,GAAS,UAAU,SAAW,SAAU,EAAK,GAC3C,GAAI,GAEJ,GAAI,GAAc,CAAC,GAAQ,KAAK,SAAU,GACxC,MAAO,MAAK,mBAAmB,GAEjC,GAAI,GAAQ,KAAK,MAAO,IACtB,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,CAAC,GAAK,IAAM,OACd,MAAO,MAET,GAAI,MAAM,QAAQ,GAChB,MAAO,GAGX,IACE,MAAO,MAAK,gBAAgB,EAAK,GAAG,YAAY,UACzC,GACP,YAAK,cAAc,EAAK,GACjB,OAIX,GAAS,UAAU,gBAAkB,SAAU,EAAK,GAIlD,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,KACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,AAAI,IAAQ,IACV,EAAI,EAAM,EAEV,EAAI,EAAM,IAAM,EAClB,KAAK,MAAM,GAAK,GAIpB,YAAK,MAAM,GAAO,EAGX,GAGT,GAAS,UAAU,cAAgB,SAAU,EAAG,GAE9C,OAAQ,EAAG,UACJ,cACA,UACH,GAAI,GAAM,KAAK,SAAS,GAExB,GADA,KAAK,MAAM,GAAO,OACd,IAAQ,KAAK,QACf,GAAI,GAAQ,GAAI,OAAM,EAAG,KAAO,gBAAkB,KAAK,KACvD,QAAM,KAAO,KAAK,IAClB,EAAM,KAAO,EAAG,KACV,EAER,UAEG,aACA,YACA,mBACA,UACH,KAAK,MAAM,KAAK,SAAS,IAAM,GAC/B,cAIA,GADA,KAAK,MAAM,KAAK,SAAS,IAAM,GAC3B,KAAK,OACP,KAAM,GACR,AAAK,KAAK,QACR,QAAQ,MAAM,aAAc,GAC9B,QAIN,GAAS,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,GAEhF,GAAI,GAAU,KAAK,SAAS,EAAK,GAIjC,GAAI,EAAC,GAKL,GAAI,GAAwB,EAAO,MAAM,GACrC,EAAS,EAAS,CAAE,GAAW,GAC/B,EAAa,EAAO,OAAO,GAG/B,KAAK,SAAS,EAAY,EAAO,IAEjC,GAAI,GAAM,EAAQ,OACd,EAAQ,KAAK,SAAS,GAG1B,GAAI,KAAS,GAGb,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAQ,GAChB,GAAI,IAAE,OAAO,KAAO,KAAO,CAAC,KAAK,MAIjC,GAAI,GAAU,EAAO,OAAO,EAAQ,GAAI,GACxC,KAAK,SAAS,EAAS,EAAO,IAE9B,GAAI,GAAQ,EAAO,OAAO,EAAQ,GAAI,GACtC,KAAK,SAAS,EAAO,EAAO,QAIhC,GAAS,UAAU,eAAiB,SAAU,EAAQ,GAGpD,GAAI,GAAS,KAAK,MAAM,GAMxB,GAJK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAGlC,EAAC,GAGL,GAAI,GAAU,GAAW,IAAW,CAAC,KAAK,SACxC,GAAI,GAAQ,UAAU,KAAK,GAC3B,AAAI,EAAO,OAAO,KAAO,IACvB,EAAS,GAAK,KAAK,KAAK,KAAM,GAE9B,GAAS,GAAK,QAAQ,KAAK,KAAM,GAC7B,GACF,IAAU,MAIhB,AAAI,QAAQ,WAAa,SACvB,GAAS,EAAO,QAAQ,MAAO,MAGjC,KAAK,WAAW,EAAO,KAIzB,GAAS,UAAU,MAAQ,SAAU,GACnC,GAAI,GAAM,KAAK,SAAS,GACpB,EAAU,EAAE,MAAM,MAAQ,IAE9B,GAAI,EAAE,OAAS,KAAK,UAClB,MAAO,GAET,GAAI,CAAC,KAAK,MAAQ,GAAQ,KAAK,MAAO,IACpC,GAAI,GAAI,KAAK,MAAM,GAMnB,GAJI,MAAM,QAAQ,IAChB,GAAI,OAGF,CAAC,GAAW,IAAM,MACpB,MAAO,GAET,GAAI,GAAW,IAAM,OACnB,MAAO,GAMX,GAAI,GACA,EAAO,KAAK,UAAU,GAC1B,GAAI,CAAC,GACH,GAAI,GACJ,IACE,EAAQ,GAAG,UAAU,SACd,GACP,GAAI,GAAO,GAAG,OAAS,UAAY,EAAG,OAAS,WAC7C,YAAK,UAAU,GAAO,GACf,GAIX,GAAI,GAAS,EAAM,iBACjB,IACE,EAAO,GAAG,SAAS,SACZ,GACP,EAAO,MAGT,GAAO,EAIX,KAAK,UAAU,GAAO,EAEtB,GAAI,GAAI,GAMR,MALI,IACF,GAAI,EAAK,cAAgB,MAAQ,QAEnC,KAAK,MAAM,GAAO,KAAK,MAAM,IAAQ,EAEjC,GAAW,IAAM,OACZ,GAEF,GAGT,GAAS,UAAU,MAAQ,SAAU,GACnC,MAAO,IAAO,KAAK,KAAM,IAG3B,GAAS,UAAU,SAAW,SAAU,GACtC,MAAO,IAAO,QAAQ,KAAM,MCpe9B,mBAKA,GAAO,QAAU,GACjB,YAAiB,EAAI,GACnB,GAAI,GAAM,EAAI,MAAO,IAAO,GAAI,GAEhC,GAAI,MAAO,IAAO,WAChB,KAAM,IAAI,WAAU,yBAEtB,cAAO,KAAK,GAAI,QAAQ,SAAU,GAChC,EAAQ,GAAK,EAAG,KAGX,EAEP,aAEE,OADI,GAAO,GAAI,OAAM,UAAU,QACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,UAAU,GAEtB,GAAI,GAAM,EAAG,MAAM,KAAM,GACrB,EAAK,EAAK,EAAK,OAAO,GAC1B,MAAI,OAAO,IAAQ,YAAc,IAAQ,GACvC,OAAO,KAAK,GAAI,QAAQ,SAAU,GAChC,EAAI,GAAK,EAAG,KAGT,MC9BX,sBAAI,IAAiB,KACrB,GAAO,QAAU,GAAO,IACxB,GAAO,QAAQ,OAAS,GAAO,IAE/B,GAAK,MAAQ,GAAK,WAChB,OAAO,eAAe,SAAS,UAAW,OAAQ,CAChD,MAAO,WACL,MAAO,IAAK,OAEd,aAAc,KAGhB,OAAO,eAAe,SAAS,UAAW,aAAc,CACtD,MAAO,WACL,MAAO,IAAW,OAEpB,aAAc,OAIlB,YAAe,GACb,GAAI,GAAI,WACN,MAAI,GAAE,OAAe,EAAE,MACvB,GAAE,OAAS,GACJ,EAAE,MAAQ,EAAG,MAAM,KAAM,aAElC,SAAE,OAAS,GACJ,EAGT,YAAqB,GACnB,GAAI,GAAI,WACN,GAAI,EAAE,OACJ,KAAM,IAAI,OAAM,EAAE,WACpB,SAAE,OAAS,GACJ,EAAE,MAAQ,EAAG,MAAM,KAAM,YAE9B,EAAO,EAAG,MAAQ,+BACtB,SAAE,UAAY,EAAO,sCACrB,EAAE,OAAS,GACJ,KCxCT,sBAAI,IAAiB,KACjB,GAAO,OAAO,OAAO,MACrB,GAAe,KAEnB,GAAO,QAAU,GAAO,IAExB,YAAmB,EAAK,GACtB,MAAI,IAAK,GACP,IAAK,GAAK,KAAK,GACR,MAEP,IAAK,GAAO,CAAC,GACN,GAAQ,IAInB,YAAkB,GAChB,MAAO,IAAK,aACV,GAAI,GAAM,GAAK,GACX,EAAM,EAAI,OACV,EAAO,GAAM,WAQjB,IACE,OAAS,GAAI,EAAG,EAAI,EAAK,IACvB,EAAI,GAAG,MAAM,KAAM,WAGrB,AAAI,EAAI,OAAS,EAGf,GAAI,OAAO,EAAG,GACd,QAAQ,SAAS,WACf,EAAI,MAAM,KAAM,MAGlB,MAAO,IAAK,MAMpB,YAAgB,GAId,OAHI,GAAS,EAAK,OACd,EAAQ,GAEH,EAAI,EAAG,EAAI,EAAQ,IAAK,EAAM,GAAK,EAAK,GACjD,MAAO,MCpDT,mBAwCA,GAAO,QAAU,GAEjB,GAAI,IAAa,cACb,GAAa,KACb,GAAoB,KACpB,GAAY,GAAU,UACtB,GAAmB,KACnB,GAAK,AAAQ,kBAAU,aACvB,GAAe,gBACf,GAAiB,kBACjB,GAAqB,KACrB,GAAmB,KACnB,GAAiB,KACjB,GAAY,GAAO,UACnB,GAAa,GAAO,WACpB,GAAU,GAAO,QACjB,GAAU,GAAO,QACjB,GAAmB,KACnB,GAAe,gBACf,GAAkB,GAAO,gBACzB,GAAY,GAAO,UAEnB,GAAe,KAEnB,YAAe,EAAS,EAAS,GAI/B,GAHI,MAAO,IAAY,YAAY,GAAK,EAAS,EAAU,IACtD,GAAS,GAAU,IAEpB,EAAQ,MACV,GAAI,EACF,KAAM,IAAI,WAAU,kCACtB,MAAO,IAAS,EAAS,GAG3B,MAAO,IAAI,GAAK,EAAS,EAAS,GAGpC,GAAK,KAAO,GACZ,GAAI,IAAW,GAAK,SAAW,GAAS,SAGxC,GAAK,KAAO,GAEZ,YAAiB,EAAQ,GACvB,GAAI,IAAQ,MAAQ,MAAO,IAAQ,SACjC,MAAO,GAKT,OAFI,GAAO,OAAO,KAAK,GACnB,EAAI,EAAK,OACN,KACL,EAAO,EAAK,IAAM,EAAI,EAAK,IAE7B,MAAO,GAGT,GAAK,SAAW,SAAU,EAAS,GACjC,GAAI,GAAU,GAAO,GAAI,GACzB,EAAQ,UAAY,GAEpB,GAAI,GAAI,GAAI,GAAK,EAAS,GACtB,EAAM,EAAE,UAAU,IAEtB,GAAI,CAAC,EACH,MAAO,GAET,GAAI,EAAI,OAAS,EACf,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAI,GAAG,OAAQ,IACjC,GAAI,MAAO,GAAI,GAAG,IAAO,SACvB,MAAO,GAGX,MAAO,IAGT,GAAK,KAAO,EACZ,GAAS,EAAM,IACf,WAAe,EAAS,EAAS,GAM/B,GALI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,MAGR,GAAW,EAAQ,MACrB,GAAI,EACF,KAAM,IAAI,WAAU,kCACtB,MAAO,IAAI,IAAS,EAAS,GAG/B,GAAI,CAAE,gBAAgB,IACpB,MAAO,IAAI,GAAK,EAAS,EAAS,GAEpC,GAAQ,KAAM,EAAS,GACvB,KAAK,aAAe,GAGpB,GAAI,GAAI,KAAK,UAAU,IAAI,OAM3B,KAAK,QAAU,GAAI,OAAM,GAErB,MAAO,IAAO,YAChB,GAAK,GAAK,GACV,KAAK,GAAG,QAAS,GACjB,KAAK,GAAG,MAAO,SAAU,GACvB,EAAG,KAAM,MAIb,GAAI,GAAO,KAOX,GANA,KAAK,YAAc,EAEnB,KAAK,WAAa,GAClB,KAAK,cAAgB,GACrB,KAAK,OAAS,GAEV,KAAK,UACP,MAAO,MAET,GAAI,IAAM,EACR,MAAO,KAGT,OADI,GAAO,GACF,EAAI,EAAG,EAAI,EAAG,IACrB,KAAK,SAAS,KAAK,UAAU,IAAI,GAAI,EAAG,GAAO,GAEjD,EAAO,GAEP,aACE,EAAE,EAAK,YACH,EAAK,aAAe,GACtB,CAAI,EACF,QAAQ,SAAS,WACf,EAAK,YAGP,EAAK,YAMb,EAAK,UAAU,QAAU,WAEvB,GADA,GAAO,eAAgB,IACnB,MAAK,SAGT,GAAI,KAAK,UAAY,CAAC,KAAK,aACzB,MAAO,MAAK,YAEd,GAAO,OAAO,MACd,KAAK,KAAK,MAAO,KAAK,SAGxB,EAAK,UAAU,UAAY,WACzB,GAAI,KAAK,aACP,OAEF,KAAK,aAAe,GAEpB,GAAI,GAAI,KAAK,QAAQ,OACrB,GAAI,IAAM,EACR,MAAO,MAAK,UAGd,OADI,GAAO,KACF,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IACvC,KAAK,aAAa,EAAG,GAEvB,aACE,AAAI,EAAE,GAAM,GACV,EAAK,YAIX,EAAK,UAAU,aAAe,SAAU,EAAO,GAC7C,GAAI,GAAW,KAAK,QAAQ,GAC5B,GAAI,CAAC,EACH,MAAO,KAET,GAAI,GAAQ,OAAO,KAAK,GACpB,EAAO,KACP,EAAI,EAAM,OAEd,GAAI,IAAM,EACR,MAAO,KAET,GAAI,GAAM,KAAK,QAAQ,GAAS,OAAO,OAAO,MAC9C,EAAM,QAAQ,SAAU,EAAG,GAIzB,EAAI,EAAK,SAAS,GAClB,GAAG,SAAS,EAAG,EAAK,cAAe,SAAU,EAAI,GAC/C,AAAK,EAEA,AAAI,EAAG,UAAY,OACtB,EAAI,GAAK,GAET,EAAK,KAAK,QAAS,GAJnB,EAAI,GAAQ,GAMV,EAAE,GAAM,GACV,GAAK,QAAQ,GAAS,EACtB,UAMR,EAAK,UAAU,MAAQ,SAAU,GAC/B,MAAO,IAAO,KAAK,KAAM,IAG3B,EAAK,UAAU,SAAW,SAAU,GAClC,MAAO,IAAO,QAAQ,KAAM,IAG9B,EAAK,UAAU,MAAQ,WACrB,KAAK,QAAU,GACf,KAAK,KAAK,UAGZ,EAAK,UAAU,MAAQ,WACrB,AAAK,KAAK,QACR,MAAK,OAAS,GACd,KAAK,KAAK,WAId,EAAK,UAAU,OAAS,WACtB,GAAI,KAAK,QAGP,GAFA,KAAK,KAAK,UACV,KAAK,OAAS,GACV,KAAK,WAAW,QAClB,GAAI,GAAK,KAAK,WAAW,MAAM,GAC/B,KAAK,WAAW,OAAS,EACzB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,KAC7B,GAAI,GAAI,EAAG,GACX,KAAK,WAAW,EAAE,GAAI,EAAE,KAG5B,GAAI,KAAK,cAAc,QACrB,GAAI,GAAK,KAAK,cAAc,MAAM,GAClC,KAAK,cAAc,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,KAC7B,GAAI,GAAI,EAAG,GACX,KAAK,cACL,KAAK,SAAS,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,QAM1C,EAAK,UAAU,SAAW,SAAU,EAAS,EAAO,EAAY,GAI9D,GAHA,GAAO,eAAgB,IACvB,GAAO,MAAO,IAAO,YAEjB,MAAK,SAIT,GADA,KAAK,cACD,KAAK,QACP,KAAK,cAAc,KAAK,CAAC,EAAS,EAAO,EAAY,IACrD,OAOF,OADI,GAAI,EACD,MAAO,GAAQ,IAAO,UAC3B,IAKF,GAAI,GACJ,OAAQ,OAED,GAAQ,OACX,KAAK,eAAe,EAAQ,KAAK,KAAM,EAAO,GAC9C,WAEG,GAGH,EAAS,KACT,cAMA,EAAS,EAAQ,MAAM,EAAG,GAAG,KAAK,KAClC,MAGJ,GAAI,GAAS,EAAQ,MAAM,GAGvB,EACJ,AAAI,IAAW,KACb,EAAO,IACA,KAAW,IAAW,GAAW,EAAQ,KAAK,QACjD,EAAC,GAAU,CAAC,GAAW,KACzB,GAAS,IAAM,GACjB,EAAO,GAIT,GAAI,GAAM,KAAK,SAAS,GAGxB,GAAI,GAAgB,KAAM,GACxB,MAAO,KAET,GAAI,GAAa,EAAO,KAAO,GAAU,SACzC,AAAI,EACF,KAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GAEpE,KAAK,gBAAgB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,KAGvE,EAAK,UAAU,gBAAkB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GACvF,GAAI,GAAO,KACX,KAAK,SAAS,EAAK,EAAY,SAAU,EAAI,GAC3C,MAAO,GAAK,iBAAiB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,MAIxF,EAAK,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,GAGjG,GAAI,CAAC,EACH,MAAO,KAUT,OANI,GAAK,EAAO,GACZ,EAAS,CAAC,CAAC,KAAK,UAAU,OAC1B,EAAU,EAAG,MACb,EAAQ,KAAK,KAAO,EAAQ,OAAO,KAAO,IAE1C,EAAiB,GACZ,EAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,GAAI,EAAE,OAAO,KAAO,KAAO,GACzB,GAAI,GACJ,AAAI,GAAU,CAAC,EACb,EAAI,CAAC,EAAE,MAAM,GAEb,EAAI,EAAE,MAAM,GAEV,GACF,EAAe,KAAK,IAM1B,GAAI,GAAM,EAAe,OAEzB,GAAI,IAAQ,EACV,MAAO,KAOT,GAAI,EAAO,SAAW,GAAK,CAAC,KAAK,MAAQ,CAAC,KAAK,MAC7C,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAEtC,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACvB,AAAI,GACF,CAAI,IAAW,IACb,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAGb,EAAE,OAAO,KAAO,KAAO,CAAC,KAAK,SAC/B,GAAI,GAAK,KAAK,KAAK,KAAM,IAE3B,KAAK,WAAW,EAAO,GAGzB,MAAO,KAKT,EAAO,QACP,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAe,GACnB,EACJ,AAAI,GACF,CAAI,IAAW,IACb,EAAI,EAAS,IAAM,EAEnB,EAAI,EAAS,GAEjB,KAAK,SAAS,CAAC,GAAG,OAAO,GAAS,EAAO,EAAY,GAEvD,KAGF,EAAK,UAAU,WAAa,SAAU,EAAO,GAC3C,GAAI,MAAK,SAGL,IAAU,KAAM,IAGpB,GAAI,KAAK,QACP,KAAK,WAAW,KAAK,CAAC,EAAO,IAC7B,OAGF,GAAI,GAAM,GAAW,GAAK,EAAI,KAAK,SAAS,GAQ5C,GANI,KAAK,MACP,GAAI,KAAK,MAAM,IAEb,KAAK,UACP,GAAI,GAEF,MAAK,QAAQ,GAAO,IAGxB,GAAI,KAAK,OACP,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,IAAM,OAAS,MAAM,QAAQ,GAC/B,OAGJ,KAAK,QAAQ,GAAO,GAAK,GAEzB,GAAI,GAAK,KAAK,UAAU,GACxB,AAAI,GACF,KAAK,KAAK,OAAQ,EAAG,GAEvB,KAAK,KAAK,QAAS,MAGrB,EAAK,UAAU,mBAAqB,SAAU,EAAK,GACjD,GAAI,KAAK,QACP,OAIF,GAAI,KAAK,OACP,MAAO,MAAK,SAAS,EAAK,GAAO,GAEnC,GAAI,GAAW,UAAY,EACvB,EAAO,KACP,EAAU,GAAS,EAAU,GAEjC,AAAI,GACF,GAAG,MAAM,EAAK,GAEhB,WAAmB,EAAI,GACrB,GAAI,GAAM,EAAG,OAAS,SACpB,MAAO,KAET,GAAI,GAAQ,GAAS,EAAM,iBAC3B,EAAK,SAAS,GAAO,EAIrB,AAAI,CAAC,GAAS,GAAS,CAAC,EAAM,cAC5B,GAAK,MAAM,GAAO,OAClB,KAEA,EAAK,SAAS,EAAK,GAAO,KAIhC,EAAK,UAAU,SAAW,SAAU,EAAK,EAAY,GACnD,GAAI,MAAK,SAGT,GAAK,GAAS,YAAY,EAAI,KAAK,EAAY,GAC3C,EAAC,IAIL,GAAI,GAAc,CAAC,GAAQ,KAAK,SAAU,GACxC,MAAO,MAAK,mBAAmB,EAAK,GAEtC,GAAI,GAAQ,KAAK,MAAO,IACtB,GAAI,GAAI,KAAK,MAAM,GACnB,GAAI,CAAC,GAAK,IAAM,OACd,MAAO,KAET,GAAI,MAAM,QAAQ,GAChB,MAAO,GAAG,KAAM,GAGpB,GAAI,GAAO,KACX,GAAG,QAAQ,EAAK,GAAU,KAAM,EAAK,MAGvC,YAAoB,EAAM,EAAK,GAC7B,MAAO,UAAU,EAAI,GACnB,AAAI,EACF,EAAK,cAAc,EAAK,EAAI,GAE5B,EAAK,gBAAgB,EAAK,EAAS,IAIzC,EAAK,UAAU,gBAAkB,SAAU,EAAK,EAAS,GACvD,GAAI,MAAK,SAMT,GAAI,CAAC,KAAK,MAAQ,CAAC,KAAK,KACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAChB,AAAI,IAAQ,IACV,EAAI,EAAM,EAEV,EAAI,EAAM,IAAM,EAClB,KAAK,MAAM,GAAK,GAIpB,YAAK,MAAM,GAAO,EACX,EAAG,KAAM,KAGlB,EAAK,UAAU,cAAgB,SAAU,EAAG,EAAI,GAC9C,GAAI,MAAK,SAIT,OAAQ,EAAG,UACJ,cACA,UACH,GAAI,GAAM,KAAK,SAAS,GAExB,GADA,KAAK,MAAM,GAAO,OACd,IAAQ,KAAK,QACf,GAAI,GAAQ,GAAI,OAAM,EAAG,KAAO,gBAAkB,KAAK,KACvD,EAAM,KAAO,KAAK,IAClB,EAAM,KAAO,EAAG,KAChB,KAAK,KAAK,QAAS,GACnB,KAAK,QAEP,UAEG,aACA,YACA,mBACA,UACH,KAAK,MAAM,KAAK,SAAS,IAAM,GAC/B,cAGA,KAAK,MAAM,KAAK,SAAS,IAAM,GAC3B,KAAK,QACP,MAAK,KAAK,QAAS,GAGnB,KAAK,SAEF,KAAK,QACR,QAAQ,MAAM,aAAc,GAC9B,MAGJ,MAAO,OAGT,EAAK,UAAU,iBAAmB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,GACxF,GAAI,GAAO,KACX,KAAK,SAAS,EAAK,EAAY,SAAU,EAAI,GAC3C,EAAK,kBAAkB,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,MAKlF,EAAK,UAAU,kBAAoB,SAAU,EAAQ,EAAM,EAAK,EAAQ,EAAO,EAAY,EAAS,GAKlG,GAAI,CAAC,EACH,MAAO,KAIT,GAAI,GAAwB,EAAO,MAAM,GACrC,EAAS,EAAS,CAAE,GAAW,GAC/B,EAAa,EAAO,OAAO,GAG/B,KAAK,SAAS,EAAY,EAAO,GAAO,GAExC,GAAI,GAAQ,KAAK,SAAS,GACtB,EAAM,EAAQ,OAGlB,GAAI,GAAS,EACX,MAAO,KAET,OAAS,GAAI,EAAG,EAAI,EAAK,KACvB,GAAI,GAAI,EAAQ,GAChB,GAAI,IAAE,OAAO,KAAO,KAAO,CAAC,KAAK,MAIjC,GAAI,GAAU,EAAO,OAAO,EAAQ,GAAI,GACxC,KAAK,SAAS,EAAS,EAAO,GAAM,GAEpC,GAAI,GAAQ,EAAO,OAAO,EAAQ,GAAI,GACtC,KAAK,SAAS,EAAO,EAAO,GAAM,IAGpC,KAGF,EAAK,UAAU,eAAiB,SAAU,EAAQ,EAAO,GAGvD,GAAI,GAAO,KACX,KAAK,MAAM,EAAQ,SAAU,EAAI,GAC/B,EAAK,gBAAgB,EAAQ,EAAO,EAAI,EAAQ,MAGpD,EAAK,UAAU,gBAAkB,SAAU,EAAQ,EAAO,EAAI,EAAQ,GAQpE,GAJK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAS,OAAO,OAAO,OAGlC,CAAC,EACH,MAAO,KAET,GAAI,GAAU,GAAW,IAAW,CAAC,KAAK,SACxC,GAAI,GAAQ,UAAU,KAAK,GAC3B,AAAI,EAAO,OAAO,KAAO,IACvB,EAAS,GAAK,KAAK,KAAK,KAAM,GAE9B,GAAS,GAAK,QAAQ,KAAK,KAAM,GAC7B,GACF,IAAU,MAIhB,AAAI,QAAQ,WAAa,SACvB,GAAS,EAAO,QAAQ,MAAO,MAGjC,KAAK,WAAW,EAAO,GACvB,KAIF,EAAK,UAAU,MAAQ,SAAU,EAAG,GAClC,GAAI,GAAM,KAAK,SAAS,GACpB,EAAU,EAAE,MAAM,MAAQ,IAE9B,GAAI,EAAE,OAAS,KAAK,UAClB,MAAO,KAET,GAAI,CAAC,KAAK,MAAQ,GAAQ,KAAK,MAAO,IACpC,GAAI,GAAI,KAAK,MAAM,GAMnB,GAJI,MAAM,QAAQ,IAChB,GAAI,OAGF,CAAC,GAAW,IAAM,MACpB,MAAO,GAAG,KAAM,GAElB,GAAI,GAAW,IAAM,OACnB,MAAO,KAMX,GAAI,GACA,EAAO,KAAK,UAAU,GAC1B,GAAI,IAAS,QACX,GAAI,IAAS,GACX,MAAO,GAAG,KAAM,GAEhB,GAAI,GAAO,EAAK,cAAgB,MAAQ,OACxC,MAAI,IAAW,IAAS,OACf,IAEA,EAAG,KAAM,EAAM,GAI5B,GAAI,GAAO,KACP,EAAS,GAAS,SAAW,EAAK,GACtC,AAAI,GACF,GAAG,MAAM,EAAK,GAEhB,WAAmB,EAAI,GACrB,GAAI,GAAS,EAAM,iBAGjB,MAAO,IAAG,KAAK,EAAK,SAAU,EAAI,GAChC,AAAI,EACF,EAAK,OAAO,EAAG,EAAK,KAAM,EAAO,GAEjC,EAAK,OAAO,EAAG,EAAK,EAAI,EAAM,KAGlC,EAAK,OAAO,EAAG,EAAK,EAAI,EAAO,KAKrC,EAAK,UAAU,OAAS,SAAU,EAAG,EAAK,EAAI,EAAM,GAClD,GAAI,GAAO,GAAG,OAAS,UAAY,EAAG,OAAS,WAC7C,YAAK,UAAU,GAAO,GACf,IAGT,GAAI,GAAU,EAAE,MAAM,MAAQ,IAG9B,GAFA,KAAK,UAAU,GAAO,EAElB,EAAI,MAAM,MAAQ,KAAO,GAAQ,CAAC,EAAK,cACzC,MAAO,GAAG,KAAM,GAAO,GAEzB,GAAI,GAAI,GAKR,MAJI,IACF,GAAI,EAAK,cAAgB,MAAQ,QACnC,KAAK,MAAM,GAAO,KAAK,MAAM,IAAQ,EAEjC,GAAW,IAAM,OACZ,IAEF,EAAG,KAAM,EAAG,MCpxBrB,sBAAM,IAAiB,kBACjB,GAAe,gBACf,GAAa,cACf,GACJ,IACE,GAAe,WACR,IAIT,GAAM,IAAkB,CACtB,OAAQ,GACR,OAAQ,IAIN,GAAU,EAER,GAAa,QAAQ,WAAa,QAElC,GAAW,IAoBf,GAXA,AARgB,CACd,SACA,QACA,OACA,QACA,QACA,WAEM,QAAQ,IACd,EAAQ,GAAK,EAAQ,IAAM,GAAG,GAC9B,EAAI,EAAI,OACR,EAAQ,GAAK,EAAQ,IAAM,GAAG,KAGhC,EAAQ,aAAe,EAAQ,cAAgB,EAC/C,EAAQ,WAAa,EAAQ,YAAc,IACvC,EAAQ,OAAS,IACnB,GAAQ,YAAc,IAEpB,EAAQ,cAAgB,IAAQ,KAAS,OAC3C,KAAM,OAAM,8EAEd,EAAQ,YAAc,EAAQ,aAAe,GAC7C,EAAQ,KAAO,EAAQ,MAAQ,IAG3B,GAAS,CAAC,EAAG,EAAS,KAC1B,AAAI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,IAGZ,GAAO,EAAG,wBACV,GAAO,MAAM,MAAO,GAAG,SAAU,mCACjC,GAAO,MAAM,MAAO,GAAI,WAAY,sCACpC,GAAO,EAAS,6CAChB,GAAO,MAAM,MAAO,GAAS,SAAU,oCAEvC,GAAS,GAET,GAAI,GAAY,EACZ,EAAW,KACX,EAAI,EAEF,EAAO,AAAC,IACZ,EAAW,GAAY,EACnB,EAAE,GAAM,GACV,EAAG,IAGD,EAAY,CAAC,EAAI,KACrB,GAAI,EACF,MAAO,GAAG,GAGZ,GADA,EAAI,EAAQ,OACR,IAAM,EACR,MAAO,KAET,EAAQ,QAAQ,IACd,GAAM,GAAK,AAAC,IACV,GAAI,GACF,GAAK,GAAG,OAAS,SAAW,EAAG,OAAS,aAAe,EAAG,OAAS,UAC/D,EAAY,EAAQ,aACtB,WAEO,WAAW,IAAM,GAAQ,EAAG,EAAS,GAAK,EAAY,KAI/D,GAAI,EAAG,OAAS,UAAY,GAAU,EAAQ,WAC5C,MAAO,YAAW,IAAM,GAAQ,EAAG,EAAS,GAAK,MAInD,AAAI,EAAG,OAAS,UAAU,GAAK,MAGjC,GAAU,EACV,EAAK,IAEP,GAAQ,EAAG,EAAS,MAIxB,GAAI,EAAQ,aAAe,CAAC,GAAK,SAAS,GACxC,MAAO,GAAU,KAAM,CAAC,IAE1B,EAAQ,MAAM,EAAG,CAAC,EAAI,KACpB,GAAI,CAAC,EACH,MAAO,GAAU,KAAM,CAAC,IAE1B,GAAK,EAAG,EAAQ,KAAM,MAgBpB,GAAU,CAAC,EAAG,EAAS,KAC3B,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAIrB,EAAQ,MAAM,EAAG,CAAC,EAAI,KACpB,GAAI,GAAM,EAAG,OAAS,SACpB,MAAO,GAAG,MAMZ,GAHI,GAAM,EAAG,OAAS,SAAW,IAC/B,GAAY,EAAG,EAAS,EAAI,GAE1B,GAAM,EAAG,cACX,MAAO,IAAM,EAAG,EAAS,EAAI,GAE/B,EAAQ,OAAO,EAAG,IAChB,GAAI,GACF,GAAI,EAAG,OAAS,SACd,MAAO,GAAG,MACZ,GAAI,EAAG,OAAS,QACd,MAAQ,IACJ,GAAY,EAAG,EAAS,EAAI,GAC5B,GAAM,EAAG,EAAS,EAAI,GAC5B,GAAI,EAAG,OAAS,SACd,MAAO,IAAM,EAAG,EAAS,EAAI,GAEjC,MAAO,GAAG,QAKV,GAAc,CAAC,EAAG,EAAS,EAAI,KACnC,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAErB,EAAQ,MAAM,EAAG,IAAO,IACtB,AAAI,EACF,EAAG,EAAI,OAAS,SAAW,KAAO,GAElC,EAAQ,KAAK,EAAG,CAAC,EAAK,KACpB,AAAI,EACF,EAAG,EAAI,OAAS,SAAW,KAAO,GAC/B,AAAI,EAAM,cACb,GAAM,EAAG,EAAS,EAAI,GAEtB,EAAQ,OAAO,EAAG,QAKtB,GAAkB,CAAC,EAAG,EAAS,KACnC,GAAO,GACP,GAAO,GAEP,IACE,EAAQ,UAAU,EAAG,WACd,GACP,GAAI,EAAI,OAAS,SACf,OAEA,KAAM,GAGV,GAAI,GACJ,IACE,EAAQ,EAAQ,SAAS,SAClB,GACP,GAAI,EAAI,OAAS,SACf,OAEA,KAAM,GAGV,AAAI,EAAM,cACR,GAAU,EAAG,EAAS,GAEtB,EAAQ,WAAW,IAGjB,GAAQ,CAAC,EAAG,EAAS,EAAY,KACrC,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAKrB,EAAQ,MAAM,EAAG,IACf,AAAI,GAAO,GAAG,OAAS,aAAe,EAAG,OAAS,UAAY,EAAG,OAAS,SACxE,GAAO,EAAG,EAAS,GAChB,AAAI,GAAM,EAAG,OAAS,UACzB,EAAG,GAEH,EAAG,MAIH,GAAS,CAAC,EAAG,EAAS,KAC1B,GAAO,GACP,GAAO,GACP,GAAO,MAAO,IAAO,YAErB,EAAQ,QAAQ,EAAG,CAAC,EAAI,KACtB,GAAI,EACF,MAAO,GAAG,GACZ,GAAI,GAAI,EAAM,OACd,GAAI,IAAM,EACR,MAAO,GAAQ,MAAM,EAAG,GAC1B,GAAI,GACJ,EAAM,QAAQ,IACZ,GAAO,GAAK,KAAK,EAAG,GAAI,EAAS,IAC/B,GAAI,IAEJ,GAAI,EACF,MAAO,GAAG,EAAW,GACvB,AAAI,EAAE,GAAM,GACV,EAAQ,MAAM,EAAG,WASrB,GAAa,CAAC,EAAG,KACrB,EAAU,GAAW,GACrB,GAAS,GAET,GAAO,EAAG,wBACV,GAAO,MAAM,MAAO,GAAG,SAAU,mCACjC,GAAO,EAAS,2BAChB,GAAO,MAAM,MAAO,GAAS,SAAU,oCAEvC,GAAI,GAEJ,GAAI,EAAQ,aAAe,CAAC,GAAK,SAAS,GACxC,EAAU,CAAC,OAEX,KACE,EAAQ,UAAU,GAClB,EAAU,CAAC,SACJ,GACP,EAAU,GAAK,KAAK,EAAG,EAAQ,MAInC,GAAI,EAAC,EAAQ,OAGb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAI,EAAQ,GAEd,EACJ,IACE,EAAK,EAAQ,UAAU,SAChB,GACP,GAAI,EAAG,OAAS,SACd,OAGF,AAAI,EAAG,OAAS,SAAW,IACzB,GAAgB,EAAG,EAAS,GAGhC,IAEE,AAAI,GAAM,EAAG,cACX,GAAU,EAAG,EAAS,MAEtB,EAAQ,WAAW,SACd,GACP,GAAI,EAAG,OAAS,SACd,OACF,GAAI,EAAG,OAAS,QACd,MAAO,IAAY,GAAgB,EAAG,EAAS,GAAM,GAAU,EAAG,EAAS,GAC7E,GAAI,EAAG,OAAS,SACd,KAAM,GAER,GAAU,EAAG,EAAS,MAKtB,GAAY,CAAC,EAAG,EAAS,KAC7B,GAAO,GACP,GAAO,GAEP,IACE,EAAQ,UAAU,SACX,GACP,GAAI,EAAG,OAAS,SACd,OACF,GAAI,EAAG,OAAS,UACd,KAAM,GACR,AAAI,GAAG,OAAS,aAAe,EAAG,OAAS,UAAY,EAAG,OAAS,UACjE,GAAW,EAAG,KAId,GAAa,CAAC,EAAG,KACrB,GAAO,GACP,GAAO,GACP,EAAQ,YAAY,GAAG,QAAQ,GAAK,GAAW,GAAK,KAAK,EAAG,GAAI,IAQhE,GAAM,GAAU,GAAY,IAAM,EAC9B,EAAI,EACR,GACE,GAAI,GAAQ,GACZ,IACE,GAAM,GAAM,EAAQ,UAAU,EAAG,GACjC,SAAQ,GACD,UAEP,GAAI,EAAE,EAAI,GAAW,EACnB,gBAEG,KAGX,GAAO,QAAU,GACjB,GAAO,KAAO,KCvWd,mBAWA,GAAM,IAAa,cACb,GAAa,cACb,GAAe,gBACf,GAAiB,kBACjB,GAAK,CAAE,GAAI,GAAG,UAAW,GAAI,GAAG,WAChC,GAAiB,KAOrB,GAAe,iEAEf,GAAmB,SAEnB,GAAgB,EAEhB,GAAgB,IAAG,SAAW,GAAG,GAAG,SAAY,IAAG,QAAU,GAAG,GAAG,QAAW,IAAG,QAAU,GAAG,GAAG,QAGjG,GAAW,GAAG,aAAe,QAC7B,GAAQ,GAAG,OAAS,GAAG,GAAG,MAAM,MAChC,GAAS,GAAG,QAAU,GAAG,GAAG,MAAM,OAElC,GAAW,IACX,GAAY,IAEZ,GAAO,OAGP,GAAiB,GAGjB,GAAgB,GAAG,UAAU,KAAK,IAClC,GAAiB,GAAO,KAGxB,GAAmB,GAQrB,YAAiB,EAAS,GACxB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAEZ,IACE,GAA0B,SACnB,GACP,MAAO,GAAG,GAGZ,GAAI,GAAQ,EAAK,MACjB,AAAC,cACC,IACE,GAAM,GAAO,GAAiB,GAG9B,GAAG,KAAK,EAAM,SAAU,GAEtB,GAAI,CAAC,EAEH,MAAI,MAAU,EAAU,IAEjB,EAAG,GAAI,OAAM,0DAA4D,IAGlF,EAAG,KAAM,WAEJ,GACP,EAAG,QAYT,YAAqB,GACnB,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAEd,GAA0B,GAE1B,GAAI,GAAQ,EAAK,MACjB,GACE,GAAM,GAAO,GAAiB,GAC9B,IACE,GAAG,SAAS,SACL,GACP,MAAO,UAEF,KAAU,GAEnB,KAAM,IAAI,OAAM,0DASlB,YAAc,EAAS,GACrB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAGZ,GAAQ,EAAM,SAAyB,EAAK,GAE1C,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAG,KAAK,EAAM,GAAc,EAAK,MAAQ,GAAW,SAAsB,EAAK,GAE7E,GAAI,EAAK,MAAO,GAAG,GAEnB,GAAI,EAAK,kBACP,MAAO,IAAG,MAAM,EAAI,SAA0B,GAE5C,MAAO,GAAG,EAAa,EAAM,OAAW,GAA8B,EAAM,GAAI,EAAM,OAEnF,CAGL,GAAM,GAA4B,EAAK,mBAAqB,EAAK,iBACjE,EAAG,KAAM,EAAM,EAAI,GAA8B,EAAM,EAA4B,GAAK,EAAI,EAAM,UAa1G,YAAkB,GAChB,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAER,EAA4B,EAAK,mBAAqB,EAAK,iBAC3D,EAAO,GAAY,GACzB,GAAI,GAAK,GAAG,SAAS,EAAM,GAAc,EAAK,MAAQ,IAEtD,MAAI,GAAK,mBACP,IAAG,UAAU,GACb,EAAK,QAGA,CACL,KAAM,EACN,GAAI,EACJ,eAAgB,GAA8B,EAAM,EAA4B,GAAK,EAAI,EAAM,KAUnG,YAAa,EAAS,GACpB,GACE,GAAO,GAAgB,EAAS,GAChC,EAAO,EAAK,GACZ,EAAK,EAAK,GAGZ,GAAQ,EAAM,SAAyB,EAAK,GAE1C,GAAI,EAAK,MAAO,GAAG,GAGnB,GAAG,MAAM,EAAM,EAAK,MAAQ,GAAU,SAAqB,GAEzD,GAAI,EAAK,MAAO,GAAG,GAEnB,EAAG,KAAM,EAAM,GAA6B,EAAM,EAAM,SAY9D,YAAiB,GACf,GACE,GAAO,GAAgB,GACvB,EAAO,EAAK,GAER,EAAO,GAAY,GACzB,UAAG,UAAU,EAAM,EAAK,MAAQ,IAEzB,CACL,KAAM,EACN,eAAgB,GAA6B,EAAM,EAAM,KAW7D,YAA0B,EAAQ,GAChC,GAAM,GAAW,SAAU,GACzB,GAAI,GAAO,CAAC,GAAU,GAEpB,MAAO,GAAK,GAEd,KAGF,AAAI,GAAK,EAAO,GACd,GAAG,MAAM,EAAO,GAAI,WAClB,GAAG,OAAO,EAAO,GAAI,KAEpB,GAAG,OAAO,EAAO,GAAI,GAS5B,YAAyB,GACvB,GAAI,GAAoB,KACxB,IACE,AAAI,GAAK,EAAO,IAAI,GAAG,UAAU,EAAO,UACjC,GAEP,GAAI,CAAC,GAAS,IAAM,CAAC,GAAU,GAAI,KAAM,WAEzC,IACE,GAAG,WAAW,EAAO,UAEhB,GAEL,AAAK,GAAU,IAAI,GAAoB,IAG3C,GAAI,IAAsB,KACxB,KAAM,GAiBV,YAAuC,EAAM,EAAI,EAAM,GACrD,GAAM,GAAqB,GAAuB,GAAiB,CAAC,EAAI,GAAO,GACzE,EAAiB,GAAuB,GAAkB,CAAC,EAAI,GAAO,EAAM,GAElF,MAAK,GAAK,MAAM,GAAe,QAAQ,GAEhC,EAAO,EAAqB,EAerC,YAAsC,EAAM,EAAM,GAChD,GAAM,GAAiB,EAAK,cAAgB,GAAS,GAAG,MAAM,KAAK,IAC7D,EAAqB,EAAK,cAAgB,GAAiB,GAC3D,EAAqB,GAAuB,EAAoB,EAAM,GACtE,EAAiB,GAAuB,EAAgB,EAAM,EAAM,GAC1E,MAAK,GAAK,MAAM,GAAe,QAAQ,GAEhC,EAAO,EAAqB,EAgBrC,YAAgC,EAAgB,EAAe,EAAM,GACnE,GAAI,GAAS,GAGb,MAAO,YAA0B,GAG/B,GAAI,CAAC,GAEH,GAAM,GAAW,GAAuB,EAClC,EAAQ,GAAe,QAAQ,GAKrC,MAHI,IAAS,GAAG,GAAe,OAAO,EAAO,GAE7C,EAAS,GACL,GAAQ,IAAmB,IAAiB,IAAmB,GAC1D,EAAe,GAEf,EAAe,EAAe,GAAQ,gBAWrD,cAEE,GAAI,EAAC,GAIL,KAAO,GAAe,QACpB,IACE,GAAe,WACR,KAcb,YAAsB,GACpB,GACE,GAAQ,GACR,EAAM,KAGR,IACE,EAAM,GAAO,YAAY,SAClB,GACP,EAAM,GAAO,kBAAkB,GAGjC,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,EAAM,KAAK,GAAa,EAAI,GAAK,GAAa,SAGhD,MAAO,GAAM,KAAK,IAUpB,YAAkB,GAChB,MAAO,KAAM,MAAQ,GAAa,IAAM,CAAC,EAAE,OAU7C,YAAsB,GACpB,MAAO,OAAO,IAAQ,YAaxB,YAAyB,EAAS,GAEhC,GAAI,MAAO,IAAY,WACrB,MAAO,CAAC,GAAI,GAId,GAAI,GAAa,GACf,MAAO,CAAC,GAAI,GAId,GAAM,GAAgB,GACtB,OAAW,KAAO,QAAO,oBAAoB,GAC3C,EAAc,GAAO,EAAQ,GAG/B,MAAO,CAAC,EAAe,GAUzB,YAA0B,GAExB,GAAM,GAAS,EAAK,OAGpB,GAAI,CAAC,GAAa,EAAK,MACrB,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,EAAK,MAG1C,GAAI,CAAC,GAAa,EAAK,UACrB,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,EAAK,UAAU,QAAQ,GAAkB,GAAa,IAG3F,GAAM,GAAO,CACX,EAAK,OAAS,EAAK,OAAS,MAC5B,IACA,QAAQ,IACR,IACA,GAAa,IACb,EAAK,QAAU,IAAM,EAAK,QAAU,IACpC,KAAK,IAEP,MAAO,IAAK,KAAK,EAAQ,EAAK,IAAK,GAUrC,YAAmC,GAEjC,EAAQ,OAAS,GAAW,GAE5B,GAAM,GAAS,EAAQ,OASvB,GANK,GAAa,EAAQ,OACxB,GAAkB,EAAQ,KAAM,OAAQ,GAErC,GAAa,EAAQ,MACxB,GAAkB,EAAQ,IAAK,MAAO,GAEpC,CAAC,GAAa,EAAQ,WACxB,IAAkB,EAAQ,SAAU,WAAY,GAC5C,CAAC,EAAQ,SAAS,MAAM,KAC1B,KAAM,IAAI,OAAM,4BAA4B,EAAQ,cAGxD,GAAI,CAAC,GAAa,EAAQ,QAAU,MAAM,EAAQ,QAAU,EAAQ,MAAQ,EAC1E,KAAM,IAAI,OAAM,yBAAyB,EAAQ,WAGnD,EAAQ,MAAQ,GAAa,EAAQ,MAAQ,EAAQ,OAAS,GAAgB,EAC9E,EAAQ,KAAO,CAAC,CAAC,EAAQ,KACzB,EAAQ,iBAAmB,CAAC,CAAC,EAAQ,iBACrC,EAAQ,kBAAoB,CAAC,CAAC,EAAQ,kBACtC,EAAQ,cAAgB,CAAC,CAAC,EAAQ,cAGlC,EAAQ,IAAM,GAAa,EAAQ,KAAO,GAAK,GAAK,SAAS,EAAQ,GAAa,EAAQ,IAAK,IAC/F,EAAQ,SAAW,GAAa,EAAQ,UAAY,OAAY,GAAK,SAAS,EAAQ,GAAa,EAAQ,SAAU,IAErH,EAAQ,SAAW,GAAS,EAAQ,UAAY,OAAY,GAAK,SAAS,EAAQ,IAAK,EAAQ,UAG/F,EAAQ,KAAO,GAAa,EAAQ,MAAQ,OAAY,GAAc,EAAQ,MAC9E,EAAQ,OAAS,GAAa,EAAQ,QAAU,GAAK,EAAQ,OAC7D,EAAQ,QAAU,GAAa,EAAQ,SAAW,GAAK,EAAQ,QAcjE,YAAsB,EAAM,GAC1B,GAAM,GAAgB,GAAc,GACpC,MAAI,GAAc,WAAW,GACpB,GAAK,QAAQ,GAEb,GAAK,QAAQ,GAAK,KAAK,EAAQ,IAW1C,YAAuB,GACrB,MAAI,IAAS,GACJ,EAEF,EAAK,QAAQ,QAAS,IAY/B,YAA2B,EAAM,EAAQ,GACvC,GAAI,IAAW,QAEb,GAAI,GAAK,WAAW,GAClB,KAAM,IAAI,OAAM,GAAG,sDAA2D,OAEhF,GAAI,GAAW,GAAK,SAAS,GAC7B,GAAI,IAAa,MAAQ,IAAa,KAAO,IAAa,EACxD,KAAM,IAAI,OAAM,GAAG,4CAAiD,YAItE,GAAI,GAAK,WAAW,IAAS,CAAC,EAAK,WAAW,GAC5C,KAAM,IAAI,OAAM,GAAG,iCAAsC,cAAmB,OAE9E,GAAI,GAAe,GAAa,EAAM,GACtC,GAAI,CAAC,EAAa,WAAW,GAC3B,KAAM,IAAI,OAAM,GAAG,iCAAsC,cAAmB,QASlF,YAAkB,GAChB,MAAO,IAAiB,EAAO,CAAC,GAAO,SAQzC,YAAmB,GACjB,MAAO,IAAiB,EAAO,CAAC,GAAQ,UAqB1C,YAA0B,EAAO,EAAO,GACtC,MAAO,IAAW,EAAM,OAAS,EAAO,EAAM,OAAS,GAAQ,EAAM,QAAU,EAUjF,cACE,GAAmB,GAUrB,YAAoB,GAClB,MAAO,IAAK,QAAQ,GAAc,GAAW,EAAQ,QAAU,GAAG,WAIpE,QAAQ,YAAY,GAAM,IA6F1B,OAAO,eAAe,GAAO,QAAS,SAAU,CAC9C,WAAY,GACZ,aAAc,GACd,IAAK,WACH,MAAO,SAIX,GAAO,QAAQ,IAAM,GACrB,GAAO,QAAQ,QAAU,GAEzB,GAAO,QAAQ,KAAO,GACtB,GAAO,QAAQ,SAAW,GAE1B,GAAO,QAAQ,QAAU,GACzB,GAAO,QAAQ,YAAc,GAE7B,GAAO,QAAQ,mBAAqB,KC3wBpC,oHAAmB,sBACnB,GAAiB,oBACjB,GAAgB,mBAChB,GAAkB,qBAClB,GAAiB,oBAKX,GAAW,WAAO,SAElB,GAAS,OAAO,UAChB,GAAO,OAAO,QAZpB,SAeC,cACC,KAAK,IAAQ,GAEb,GAAM,GAAY,UAAU,GACtB,EAAU,UAAU,GAEpB,EAAU,GACZ,EAAO,EAEX,GAAI,GACH,GAAM,GAAI,EACJ,EAAS,OAAO,EAAE,QACxB,OAAS,GAAI,EAAG,EAAI,EAAQ,KAC3B,GAAM,GAAU,EAAE,GACd,EACJ,AAAI,YAAmB,QACtB,EAAS,EACH,AAAI,YAAY,OAAO,GAC7B,EAAS,OAAO,KAAK,EAAQ,OAAQ,EAAQ,WAAY,EAAQ,YAC3D,AAAI,YAAmB,aAC7B,EAAS,OAAO,KAAK,GACf,AAAI,YAAmB,IAC7B,EAAS,EAAQ,IAEjB,EAAS,OAAO,KAAK,MAAO,IAAY,SAAW,EAAU,OAAO,IAErE,GAAQ,EAAO,OACf,EAAQ,KAAK,IAIf,KAAK,IAAU,OAAO,OAAO,GAE7B,GAAI,GAAO,GAAW,EAAQ,OAAS,QAAa,OAAO,EAAQ,MAAM,cACzE,AAAI,GAAQ,CAAC,mBAAmB,KAAK,IACpC,MAAK,IAAQ,MAGX,QACH,MAAO,MAAK,IAAQ,UAEjB,QACH,MAAO,MAAK,IAEb,OACC,MAAO,SAAQ,QAAQ,KAAK,IAAQ,YAErC,cACC,GAAM,GAAM,KAAK,IACX,EAAK,EAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,YACjE,MAAO,SAAQ,QAAQ,GAExB,SACC,GAAM,GAAW,GAAI,IACrB,SAAS,MAAQ,aACjB,EAAS,KAAK,KAAK,KACnB,EAAS,KAAK,MACP,EAER,WACC,MAAO,gBAER,QACC,GAAM,GAAO,KAAK,KAEZ,EAAQ,UAAU,GAClB,EAAM,UAAU,GAClB,EAAe,EACnB,AAAI,IAAU,OACb,EAAgB,EACV,AAAI,EAAQ,EAClB,EAAgB,KAAK,IAAI,EAAO,EAAO,GAEvC,EAAgB,KAAK,IAAI,EAAO,GAEjC,AAAI,IAAQ,OACX,EAAc,EACR,AAAI,EAAM,EAChB,EAAc,KAAK,IAAI,EAAO,EAAK,GAEnC,EAAc,KAAK,IAAI,EAAK,GAE7B,GAAM,GAAO,KAAK,IAAI,EAAc,EAAe,GAG7C,EAAe,AADN,KAAK,IACQ,MAAM,EAAe,EAAgB,GAC3D,EAAO,GAAI,IAAK,GAAI,CAAE,KAAM,UAAU,KAC5C,SAAK,IAAU,EACR,IAIT,OAAO,iBAAiB,GAAK,UAAW,CACvC,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,IACpB,MAAO,CAAE,WAAY,MAGtB,OAAO,eAAe,GAAK,UAAW,OAAO,YAAa,CACzD,MAAO,OACP,SAAU,GACV,WAAY,GACZ,aAAc,KAiBf,YAAoB,EAAS,EAAM,GACjC,MAAM,KAAK,KAAM,GAEjB,KAAK,QAAU,EACf,KAAK,KAAO,EAGR,GACF,MAAK,KAAO,KAAK,MAAQ,EAAY,MAIvC,MAAM,kBAAkB,KAAM,KAAK,aAGrC,GAAW,UAAY,OAAO,OAAO,MAAM,WAC3C,GAAW,UAAU,YAAc,GACnC,GAAW,UAAU,KAAO,aAE5B,GAAI,IACJ,IACC,GAAU,AAAQ,oBAAY,cACtB,IAET,GAAM,IAAY,OAAO,kBAGnB,GAAc,WAAO,YAW3B,YAAc,GACb,GAAI,GAAQ,KAER,EAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC3E,EAAY,EAAK,KAErB,GAAI,GAAO,IAAc,OAAY,EAAI,EACzC,GAAI,GAAe,EAAK,QACxB,GAAI,GAAU,IAAiB,OAAY,EAAI,EAE/C,AAAI,GAAQ,KAEX,EAAO,KACD,AAAI,GAAkB,GAE5B,EAAO,OAAO,KAAK,EAAK,YACd,GAAO,IAAkB,OAAO,SAAS,IAAc,CAAI,OAAO,UAAU,SAAS,KAAK,KAAU,uBAE9G,EAAO,OAAO,KAAK,GACb,AAAI,YAAY,OAAO,GAE7B,EAAO,OAAO,KAAK,EAAK,OAAQ,EAAK,WAAY,EAAK,YAC5C,YAAgB,aAG1B,GAAO,OAAO,KAAK,OAAO,MAE3B,KAAK,IAAa,CACjB,OACA,UAAW,GACX,MAAO,MAER,KAAK,KAAO,EACZ,KAAK,QAAU,EAEX,YAAgB,aACnB,EAAK,GAAG,QAAS,SAAU,GAC1B,GAAM,GAAQ,EAAI,OAAS,aAAe,EAAM,GAAI,IAAW,+CAA+C,EAAM,QAAQ,EAAI,UAAW,SAAU,GACrJ,EAAM,IAAW,MAAQ,IAK5B,GAAK,UAAY,IACZ,QACH,MAAO,MAAK,IAAW,SAGpB,YACH,MAAO,MAAK,IAAW,WAQxB,cACC,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,GAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,eAS/D,OACC,GAAI,GAAK,KAAK,SAAW,KAAK,QAAQ,IAAI,iBAAmB,GAC7D,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,QAAO,OAEd,GAAI,IAAK,GAAI,CACZ,KAAM,EAAG,gBACN,EACF,IAAS,OAUb,OACC,GAAI,GAAS,KAEb,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,IACC,MAAO,MAAK,MAAM,EAAO,kBACjB,GACR,MAAO,IAAK,QAAQ,OAAO,GAAI,IAAW,iCAAiC,EAAO,eAAe,EAAI,UAAW,qBAUnH,OACC,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,GAAO,cAShB,SACC,MAAO,IAAY,KAAK,OASzB,gBACC,GAAI,GAAS,KAEb,MAAO,IAAY,KAAK,MAAM,KAAK,SAAU,GAC5C,MAAO,IAAY,EAAQ,EAAO,aAMrC,OAAO,iBAAiB,GAAK,UAAW,CACvC,KAAM,CAAE,WAAY,IACpB,SAAU,CAAE,WAAY,IACxB,YAAa,CAAE,WAAY,IAC3B,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,IACpB,KAAM,CAAE,WAAY,MAGrB,GAAK,MAAQ,SAAU,GACtB,OAAW,KAAQ,QAAO,oBAAoB,GAAK,WAElD,GAAI,CAAE,KAAQ,KACb,GAAM,GAAO,OAAO,yBAAyB,GAAK,UAAW,GAC7D,OAAO,eAAe,EAAO,EAAM,KAYtC,cACC,GAAI,GAAS,KAEb,GAAI,KAAK,IAAW,UACnB,MAAO,IAAK,QAAQ,OAAO,GAAI,WAAU,0BAA0B,KAAK,QAKzE,GAFA,KAAK,IAAW,UAAY,GAExB,KAAK,IAAW,MACnB,MAAO,IAAK,QAAQ,OAAO,KAAK,IAAW,OAG5C,GAAI,GAAO,KAAK,KAGhB,GAAI,IAAS,KACZ,MAAO,IAAK,QAAQ,QAAQ,OAAO,MAAM,IAS1C,GALI,GAAO,IACV,GAAO,EAAK,UAIT,OAAO,SAAS,GACnB,MAAO,IAAK,QAAQ,QAAQ,GAI7B,GAAI,CAAE,aAAgB,aACrB,MAAO,IAAK,QAAQ,QAAQ,OAAO,MAAM,IAK1C,GAAI,GAAQ,GACR,EAAa,EACb,EAAQ,GAEZ,MAAO,IAAI,IAAK,QAAQ,SAAU,EAAS,GAC1C,GAAI,GAGJ,AAAI,EAAO,SACV,GAAa,WAAW,WACvB,EAAQ,GACR,EAAO,GAAI,IAAW,0CAA0C,EAAO,aAAa,EAAO,aAAc,kBACvG,EAAO,UAIX,EAAK,GAAG,QAAS,SAAU,GAC1B,AAAI,EAAI,OAAS,aAEhB,GAAQ,GACR,EAAO,IAGP,EAAO,GAAI,IAAW,+CAA+C,EAAO,QAAQ,EAAI,UAAW,SAAU,MAI/G,EAAK,GAAG,OAAQ,SAAU,GACzB,GAAI,KAAS,IAAU,OAIvB,GAAI,EAAO,MAAQ,EAAa,EAAM,OAAS,EAAO,MACrD,EAAQ,GACR,EAAO,GAAI,IAAW,mBAAmB,EAAO,mBAAmB,EAAO,OAAQ,aAClF,OAGD,GAAc,EAAM,OACpB,EAAM,KAAK,MAGZ,EAAK,GAAG,MAAO,WACd,GAAI,IAIJ,aAAa,GAEb,IACC,EAAQ,OAAO,OAAO,EAAO,UACrB,GAER,EAAO,GAAI,IAAW,kDAAkD,EAAO,QAAQ,EAAI,UAAW,SAAU,UAcpH,YAAqB,EAAQ,GAC5B,GAAI,MAAO,KAAY,WACtB,KAAM,IAAI,OAAM,gFAGjB,GAAM,GAAK,EAAQ,IAAI,gBACnB,EAAU,QACV,EAAK,EAGT,MAAI,IACH,GAAM,mBAAmB,KAAK,IAI/B,EAAM,EAAO,MAAM,EAAG,MAAM,WAGxB,CAAC,GAAO,GACX,GAAM,iCAAiC,KAAK,IAIzC,CAAC,GAAO,GACX,GAAM,yEAAyE,KAAK,GAC/E,GACJ,GAAM,yEAAyE,KAAK,GAChF,GACH,EAAI,OAIF,GACH,GAAM,gBAAgB,KAAK,EAAI,SAK7B,CAAC,GAAO,GACX,GAAM,mCAAmC,KAAK,IAI3C,GACH,GAAU,EAAI,MAIV,KAAY,UAAY,IAAY,QACvC,GAAU,YAKL,GAAQ,EAAQ,QAAS,GAAS,WAU1C,YAA2B,GAE1B,MAAI,OAAO,IAAQ,UAAY,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,KAAQ,YAAc,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,KAAQ,YAAc,MAAO,GAAI,KAAQ,WACxN,GAID,EAAI,YAAY,OAAS,mBAAqB,OAAO,UAAU,SAAS,KAAK,KAAS,4BAA8B,MAAO,GAAI,MAAS,WAQhJ,YAAgB,GACf,MAAO,OAAO,IAAQ,UAAY,MAAO,GAAI,aAAgB,YAAc,MAAO,GAAI,MAAS,UAAY,MAAO,GAAI,QAAW,YAAc,MAAO,GAAI,aAAgB,YAAc,MAAO,GAAI,YAAY,MAAS,UAAY,gBAAgB,KAAK,EAAI,YAAY,OAAS,gBAAgB,KAAK,EAAI,OAAO,cASnT,YAAe,GACd,GAAI,GAAI,EACJ,EAAO,EAAS,KAGpB,GAAI,EAAS,SACZ,KAAM,IAAI,OAAM,sCAKjB,MAAI,aAAgB,aAAU,MAAO,GAAK,aAAgB,YAEzD,GAAK,GAAI,IACT,EAAK,GAAI,IACT,EAAK,KAAK,GACV,EAAK,KAAK,GAEV,EAAS,IAAW,KAAO,EAC3B,EAAO,GAGD,EAYR,YAA4B,GAC3B,MAAI,KAAS,KAEL,KACG,MAAO,IAAS,SAEnB,2BACG,GAAkB,GAErB,kDACG,GAAO,GAEV,EAAK,MAAQ,KACV,OAAO,SAAS,IAGhB,OAAO,UAAU,SAAS,KAAK,KAAU,wBAGzC,YAAY,OAAO,GAJtB,KAOG,MAAO,GAAK,aAAgB,WAE/B,gCAAgC,EAAK,gBAClC,YAAgB,YAGnB,KAGA,2BAaT,YAAuB,GACtB,GAAM,GAAO,EAAS,KAGtB,MAAI,KAAS,KAEL,EACG,GAAO,GACV,EAAK,KACF,OAAO,SAAS,GAEnB,EAAK,OACF,GAAQ,MAAO,GAAK,eAAkB,YAE5C,GAAK,mBAAqB,EAAK,kBAAkB,QAAU,GAC/D,EAAK,gBAAkB,EAAK,kBAEpB,EAAK,gBAKN,KAUT,YAAuB,EAAM,GAC5B,GAAM,GAAO,EAAS,KAGtB,AAAI,IAAS,KAEZ,EAAK,MACC,AAAI,GAAO,GACjB,EAAK,SAAS,KAAK,GACb,AAAI,OAAO,SAAS,GAE1B,GAAK,MAAM,GACX,EAAK,OAGL,EAAK,KAAK,GAKZ,GAAK,QAAU,OAAO,QAQtB,GAAM,IAAoB,gCACpB,GAAyB,0BAE/B,YAAsB,GAErB,GADA,EAAO,GAAG,IACN,GAAkB,KAAK,IAAS,IAAS,GAC5C,KAAM,IAAI,WAAU,GAAG,qCAIzB,YAAuB,GAEtB,GADA,EAAQ,GAAG,IACP,GAAuB,KAAK,GAC/B,KAAM,IAAI,WAAU,GAAG,sCAYzB,YAAc,EAAK,GAClB,EAAO,EAAK,cACZ,OAAW,KAAO,GACjB,GAAI,EAAI,gBAAkB,EACzB,MAAO,GAMV,GAAM,IAAM,OAAO,OA1rBnB,SAksBC,cACC,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,OAI/E,GAFA,KAAK,IAAO,OAAO,OAAO,MAEtB,YAAgB,KACnB,GAAM,GAAa,EAAK,MAClB,EAAc,OAAO,KAAK,GAEhC,OAAW,KAAc,GACxB,OAAW,KAAS,GAAW,GAC9B,KAAK,OAAO,EAAY,GAI1B,OAKD,GAAI,GAAQ,KAAa,GAAI,MAAO,IAAS,UAC5C,GAAM,GAAS,EAAK,OAAO,UAC3B,GAAI,GAAU,MACb,GAAI,MAAO,IAAW,WACrB,KAAM,IAAI,WAAU,iCAKrB,GAAM,GAAQ,GACd,OAAW,KAAQ,IAClB,GAAI,MAAO,IAAS,UAAY,MAAO,GAAK,OAAO,WAAc,WAChE,KAAM,IAAI,WAAU,qCAErB,EAAM,KAAK,MAAM,KAAK,IAGvB,OAAW,KAAQ,IAClB,GAAI,EAAK,SAAW,EACnB,KAAM,IAAI,WAAU,+CAErB,KAAK,OAAO,EAAK,GAAI,EAAK,SAI3B,QAAW,KAAO,QAAO,KAAK,IAC7B,GAAM,GAAQ,EAAK,GACnB,KAAK,OAAO,EAAK,QAInB,MAAM,IAAI,WAAU,0CAUtB,IAAI,GACH,EAAO,GAAG,IACV,GAAa,GACb,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,MAAI,KAAQ,OACJ,KAGD,KAAK,IAAK,GAAK,KAAK,MAU5B,QAAQ,GACP,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,OAE9E,EAAQ,GAAW,MACnB,EAAI,EACR,KAAO,EAAI,EAAM,SAChB,GAAI,GAAW,EAAM,GACrB,GAAM,GAAO,EAAS,GAChB,EAAQ,EAAS,GAEvB,EAAS,KAAK,EAAS,EAAO,EAAM,MACpC,EAAQ,GAAW,MACnB,KAWF,IAAI,EAAM,GACT,EAAO,GAAG,IACV,EAAQ,GAAG,IACX,GAAa,GACb,GAAc,GACd,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,KAAK,IAAK,IAAQ,OAAY,EAAM,GAAQ,CAAC,GAU9C,OAAO,EAAM,GACZ,EAAO,GAAG,IACV,EAAQ,GAAG,IACX,GAAa,GACb,GAAc,GACd,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,AAAI,IAAQ,OACX,KAAK,IAAK,GAAK,KAAK,GAEpB,KAAK,IAAK,GAAQ,CAAC,GAUrB,IAAI,GACH,SAAO,GAAG,IACV,GAAa,GACN,GAAK,KAAK,IAAM,KAAU,OASlC,OAAO,GACN,EAAO,GAAG,IACV,GAAa,GACb,GAAM,GAAM,GAAK,KAAK,IAAM,GAC5B,AAAI,IAAQ,QACX,MAAO,MAAK,IAAK,GASnB,MACC,MAAO,MAAK,IAQb,OACC,MAAO,IAAsB,KAAM,OAQpC,SACC,MAAO,IAAsB,KAAM,UAUnC,OAAO,YACP,MAAO,IAAsB,KAAM,eAGrC,GAAQ,UAAU,QAAU,GAAQ,UAAU,OAAO,UAErD,OAAO,eAAe,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,OAAO,iBAAiB,GAAQ,UAAW,CAC1C,IAAK,CAAE,WAAY,IACnB,QAAS,CAAE,WAAY,IACvB,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,KAAM,CAAE,WAAY,IACpB,OAAQ,CAAE,WAAY,IACtB,QAAS,CAAE,WAAY,MAGxB,YAAoB,GACnB,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,YAG/E,MAAO,AADM,QAAO,KAAK,EAAQ,KAAM,OAC3B,IAAI,IAAS,MAAQ,SAAU,GAC1C,MAAO,GAAE,eACN,IAAS,QAAU,SAAU,GAChC,MAAO,GAAQ,IAAK,GAAG,KAAK,OACzB,SAAU,GACb,MAAO,CAAC,EAAE,cAAe,EAAQ,IAAK,GAAG,KAAK,SAIhD,GAAM,IAAW,OAAO,YAExB,YAA+B,EAAQ,GACtC,GAAM,GAAW,OAAO,OAAO,IAC/B,SAAS,IAAY,CACpB,SACA,OACA,MAAO,GAED,EAGR,GAAM,IAA2B,OAAO,eAAe,CACtD,OAEC,GAAI,CAAC,MAAQ,OAAO,eAAe,QAAU,GAC5C,KAAM,IAAI,WAAU,4CAGrB,GAAI,GAAY,KAAK,IACrB,GAAM,GAAS,EAAU,OACnB,EAAO,EAAU,KACjB,EAAQ,EAAU,MAElB,EAAS,GAAW,EAAQ,GAC5B,EAAM,EAAO,OACnB,MAAI,IAAS,EACL,CACN,MAAO,OACP,KAAM,IAIR,MAAK,IAAU,MAAQ,EAAQ,EAExB,CACN,MAAO,EAAO,GACd,KAAM,OAGN,OAAO,eAAe,OAAO,eAAe,GAAG,OAAO,eAEzD,OAAO,eAAe,GAA0B,OAAO,YAAa,CACnE,MAAO,kBACP,SAAU,GACV,WAAY,GACZ,aAAc,KASf,YAAqC,GACpC,GAAM,GAAM,OAAO,OAAO,CAAE,UAAW,MAAQ,EAAQ,KAIjD,EAAgB,GAAK,EAAQ,IAAM,QACzC,MAAI,KAAkB,QACrB,GAAI,GAAiB,EAAI,GAAe,IAGlC,EAUR,YAA8B,GAC7B,GAAM,GAAU,GAAI,IACpB,OAAW,KAAQ,QAAO,KAAK,GAC9B,GAAI,IAAkB,KAAK,GAG3B,GAAI,MAAM,QAAQ,EAAI,IACrB,OAAW,KAAO,GAAI,GACrB,AAAI,GAAuB,KAAK,IAGhC,CAAI,EAAQ,IAAK,KAAU,OAC1B,EAAQ,IAAK,GAAQ,CAAC,GAEtB,EAAQ,IAAK,GAAM,KAAK,QAGpB,AAAK,IAAuB,KAAK,EAAI,KAC3C,GAAQ,IAAK,GAAQ,CAAC,EAAI,KAG5B,MAAO,GAGR,GAAM,IAAc,OAAO,sBAGrB,GAAe,WAAK,aA9gC1B,SAwhCC,cACC,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,KAC3E,EAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE/E,GAAK,KAAK,KAAM,EAAM,GAEtB,GAAM,GAAS,EAAK,QAAU,IACxB,EAAU,GAAI,IAAQ,EAAK,SAEjC,GAAI,GAAQ,MAAQ,CAAC,EAAQ,IAAI,iBAChC,GAAM,GAAc,GAAmB,GACvC,AAAI,GACH,EAAQ,OAAO,eAAgB,GAIjC,KAAK,IAAe,CACnB,IAAK,EAAK,IACV,SACA,WAAY,EAAK,YAAc,GAAa,GAC5C,UACA,QAAS,EAAK,YAIZ,OACH,MAAO,MAAK,IAAa,KAAO,MAG7B,UACH,MAAO,MAAK,IAAa,UAMtB,MACH,MAAO,MAAK,IAAa,QAAU,KAAO,KAAK,IAAa,OAAS,OAGlE,cACH,MAAO,MAAK,IAAa,QAAU,KAGhC,cACH,MAAO,MAAK,IAAa,cAGtB,WACH,MAAO,MAAK,IAAa,QAQ1B,QACC,MAAO,IAAI,IAAS,GAAM,MAAO,CAChC,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,GAAI,KAAK,GACT,WAAY,KAAK,eAKpB,GAAK,MAAM,GAAS,WAEpB,OAAO,iBAAiB,GAAS,UAAW,CAC3C,IAAK,CAAE,WAAY,IACnB,OAAQ,CAAE,WAAY,IACtB,GAAI,CAAE,WAAY,IAClB,WAAY,CAAE,WAAY,IAC1B,WAAY,CAAE,WAAY,IAC1B,QAAS,CAAE,WAAY,IACvB,MAAO,CAAE,WAAY,MAGtB,OAAO,eAAe,GAAS,UAAW,OAAO,YAAa,CAC7D,MAAO,WACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,GAAM,IAAc,OAAO,qBAGrB,GAAY,WAAI,MAChB,GAAa,WAAI,OAEjB,GAA6B,WAAa,YAAO,SAAS,UAQhE,YAAmB,GAClB,MAAO,OAAO,IAAU,UAAY,MAAO,GAAM,KAAiB,SAGnE,YAAuB,GACtB,GAAM,GAAQ,GAAU,MAAO,IAAW,UAAY,OAAO,eAAe,GAC5E,MAAO,CAAC,CAAE,IAAS,EAAM,YAAY,OAAS,eApoC/C,aA+oCC,YAAY,GACX,GAAI,GAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE3E,EAGJ,AAAK,GAAU,GAYd,EAAY,GAAU,EAAM,KAX5B,CAAI,GAAS,EAAM,KAIlB,EAAY,GAAU,EAAM,MAG5B,EAAY,GAAU,GAAG,KAE1B,EAAQ,IAKT,GAAI,GAAS,EAAK,QAAU,EAAM,QAAU,MAG5C,GAFA,EAAS,EAAO,cAEX,GAAK,MAAQ,MAAQ,GAAU,IAAU,EAAM,OAAS,OAAU,KAAW,OAAS,IAAW,QACrG,KAAM,IAAI,WAAU,iDAGrB,GAAI,GAAY,EAAK,MAAQ,KAAO,EAAK,KAAO,GAAU,IAAU,EAAM,OAAS,KAAO,GAAM,GAAS,KAEzG,GAAK,KAAK,KAAM,EAAW,CAC1B,QAAS,EAAK,SAAW,EAAM,SAAW,EAC1C,KAAM,EAAK,MAAQ,EAAM,MAAQ,IAGlC,GAAM,GAAU,GAAI,IAAQ,EAAK,SAAW,EAAM,SAAW,IAE7D,GAAI,GAAa,MAAQ,CAAC,EAAQ,IAAI,iBACrC,GAAM,GAAc,GAAmB,GACvC,AAAI,GACH,EAAQ,OAAO,eAAgB,GAIjC,GAAI,GAAS,GAAU,GAAS,EAAM,OAAS,KAG/C,GAFI,UAAY,IAAM,GAAS,EAAK,QAEhC,GAAU,MAAQ,CAAC,GAAc,GACpC,KAAM,IAAI,WAAU,mDAGrB,KAAK,IAAe,CACnB,SACA,SAAU,EAAK,UAAY,EAAM,UAAY,SAC7C,UACA,YACA,UAID,KAAK,OAAS,EAAK,SAAW,OAAY,EAAK,OAAS,EAAM,SAAW,OAAY,EAAM,OAAS,GACpG,KAAK,SAAW,EAAK,WAAa,OAAY,EAAK,SAAW,EAAM,WAAa,OAAY,EAAM,SAAW,GAC9G,KAAK,QAAU,EAAK,SAAW,EAAM,SAAW,EAChD,KAAK,MAAQ,EAAK,OAAS,EAAM,SAG9B,UACH,MAAO,MAAK,IAAa,UAGtB,OACH,MAAO,IAAW,KAAK,IAAa,cAGjC,WACH,MAAO,MAAK,IAAa,WAGtB,YACH,MAAO,MAAK,IAAa,YAGtB,UACH,MAAO,MAAK,IAAa,OAQ1B,QACC,MAAO,IAAI,IAAQ,QAIrB,GAAK,MAAM,GAAQ,WAEnB,OAAO,eAAe,GAAQ,UAAW,OAAO,YAAa,CAC5D,MAAO,UACP,SAAU,GACV,WAAY,GACZ,aAAc,KAGf,OAAO,iBAAiB,GAAQ,UAAW,CAC1C,OAAQ,CAAE,WAAY,IACtB,IAAK,CAAE,WAAY,IACnB,QAAS,CAAE,WAAY,IACvB,SAAU,CAAE,WAAY,IACxB,MAAO,CAAE,WAAY,IACrB,OAAQ,CAAE,WAAY,MASvB,YAA+B,GAC9B,GAAM,GAAY,EAAQ,IAAa,UACjC,EAAU,GAAI,IAAQ,EAAQ,IAAa,SAQjD,GALK,EAAQ,IAAI,WAChB,EAAQ,IAAI,SAAU,OAInB,CAAC,EAAU,UAAY,CAAC,EAAU,SACrC,KAAM,IAAI,WAAU,oCAGrB,GAAI,CAAC,YAAY,KAAK,EAAU,UAC/B,KAAM,IAAI,WAAU,wCAGrB,GAAI,EAAQ,QAAU,EAAQ,eAAgB,YAAO,UAAY,CAAC,GACjE,KAAM,IAAI,OAAM,mFAIjB,GAAI,GAAqB,KAIzB,GAHI,EAAQ,MAAQ,MAAQ,gBAAgB,KAAK,EAAQ,SACxD,GAAqB,KAElB,EAAQ,MAAQ,MACnB,GAAM,GAAa,GAAc,GACjC,AAAI,MAAO,IAAe,UACzB,GAAqB,OAAO,IAG9B,AAAI,GACH,EAAQ,IAAI,iBAAkB,GAI1B,EAAQ,IAAI,eAChB,EAAQ,IAAI,aAAc,0DAIvB,EAAQ,UAAY,CAAC,EAAQ,IAAI,oBACpC,EAAQ,IAAI,kBAAmB,gBAGhC,GAAI,GAAQ,EAAQ,MACpB,MAAI,OAAO,IAAU,YACpB,GAAQ,EAAM,IAGX,CAAC,EAAQ,IAAI,eAAiB,CAAC,GAClC,EAAQ,IAAI,aAAc,SAMpB,OAAO,OAAO,GAAI,EAAW,CACnC,OAAQ,EAAQ,OAChB,QAAS,GAA4B,GACrC,UAgBF,YAAoB,GAClB,MAAM,KAAK,KAAM,GAEjB,KAAK,KAAO,UACZ,KAAK,QAAU,EAGf,MAAM,kBAAkB,KAAM,KAAK,aAGrC,GAAW,UAAY,OAAO,OAAO,MAAM,WAC3C,GAAW,UAAU,YAAc,GACnC,GAAW,UAAU,KAAO,aAG5B,GAAM,IAAgB,WAAO,YACvB,GAAc,WAAI,QASxB,YAAe,EAAK,GAGnB,GAAI,CAAC,GAAM,QACV,KAAM,IAAI,OAAM,0EAGjB,UAAK,QAAU,GAAM,QAGd,GAAI,IAAM,QAAQ,SAAU,EAAS,GAE3C,GAAM,GAAU,GAAI,IAAQ,EAAK,GAC3B,EAAU,GAAsB,GAEhC,EAAQ,GAAQ,WAAa,SAAW,WAAQ,YAAM,QACtD,EAAS,EAAQ,OAEnB,EAAW,KAET,EAAQ,WACb,GAAI,GAAQ,GAAI,IAAW,+BAK3B,AAJA,EAAO,GACH,EAAQ,MAAQ,EAAQ,eAAgB,YAAO,UAClD,EAAQ,KAAK,QAAQ,GAElB,GAAC,GAAY,CAAC,EAAS,OAC3B,EAAS,KAAK,KAAK,QAAS,IAG7B,GAAI,GAAU,EAAO,SACpB,IACA,OAGD,GAAM,GAAmB,WACxB,IACA,KAIK,EAAM,EAAK,GACb,EAEJ,AAAI,GACH,EAAO,iBAAiB,QAAS,GAGlC,aACC,EAAI,QACA,GAAQ,EAAO,oBAAoB,QAAS,GAChD,aAAa,GAGd,AAAI,EAAQ,SACX,EAAI,KAAK,SAAU,SAAU,GAC5B,EAAa,WAAW,WACvB,EAAO,GAAI,IAAW,uBAAuB,EAAQ,MAAO,oBAC5D,KACE,EAAQ,WAIb,EAAI,GAAG,QAAS,SAAU,GACzB,EAAO,GAAI,IAAW,cAAc,EAAQ,uBAAuB,EAAI,UAAW,SAAU,IAC5F,MAGD,EAAI,GAAG,WAAY,SAAU,GAC5B,aAAa,GAEb,GAAM,GAAU,GAAqB,EAAI,SAGzC,GAAI,GAAM,WAAW,EAAI,aAExB,GAAM,GAAW,EAAQ,IAAI,YAGvB,EAAc,IAAa,KAAO,KAAO,GAAY,EAAQ,IAAK,GAGxE,OAAQ,EAAQ,cACV,QACJ,EAAO,GAAI,IAAW,0EAA0E,EAAQ,MAAO,gBAC/G,IACA,WACI,SAEJ,GAAI,IAAgB,KAEnB,IACC,EAAQ,IAAI,WAAY,SAChB,GAER,EAAO,GAGT,UACI,SAEJ,GAAI,IAAgB,KACnB,MAID,GAAI,EAAQ,SAAW,EAAQ,QAC9B,EAAO,GAAI,IAAW,gCAAgC,EAAQ,MAAO,iBACrE,IACA,OAKD,GAAM,GAAc,CACnB,QAAS,GAAI,IAAQ,EAAQ,SAC7B,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QAAU,EAC3B,MAAO,EAAQ,MACf,SAAU,EAAQ,SAClB,OAAQ,EAAQ,OAChB,KAAM,EAAQ,KACd,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QACjB,KAAM,EAAQ,MAIf,GAAI,EAAI,aAAe,KAAO,EAAQ,MAAQ,GAAc,KAAa,MACxE,EAAO,GAAI,IAAW,2DAA4D,yBAClF,IACA,OAID,AAAI,GAAI,aAAe,KAAQ,GAAI,aAAe,KAAO,EAAI,aAAe,MAAQ,EAAQ,SAAW,SACtG,GAAY,OAAS,MACrB,EAAY,KAAO,OACnB,EAAY,QAAQ,OAAO,mBAI5B,EAAQ,GAAM,GAAI,IAAQ,EAAa,KACvC,IACA,QAKH,EAAI,KAAK,MAAO,WACf,AAAI,GAAQ,EAAO,oBAAoB,QAAS,KAEjD,GAAI,GAAO,EAAI,KAAK,GAAI,KAElB,EAAmB,CACxB,IAAK,EAAQ,IACb,OAAQ,EAAI,WACZ,WAAY,EAAI,cAChB,QAAS,EACT,KAAM,EAAQ,KACd,QAAS,EAAQ,QACjB,QAAS,EAAQ,SAIZ,EAAU,EAAQ,IAAI,oBAU5B,GAAI,CAAC,EAAQ,UAAY,EAAQ,SAAW,QAAU,IAAY,MAAQ,EAAI,aAAe,KAAO,EAAI,aAAe,KACtH,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAQD,GAAM,GAAc,CACnB,MAAO,WAAK,aACZ,YAAa,WAAK,cAInB,GAAI,GAAW,QAAU,GAAW,UACnC,EAAO,EAAK,KAAK,WAAK,aAAa,IACnC,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAID,GAAI,GAAW,WAAa,GAAW,aAItC,AADY,EAAI,KAAK,GAAI,KACrB,KAAK,OAAQ,SAAU,GAE1B,AAAK,GAAM,GAAK,KAAU,EACzB,EAAO,EAAK,KAAK,WAAK,iBAEtB,EAAO,EAAK,KAAK,WAAK,oBAEvB,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,KAET,OAID,GAAI,GAAW,MAAQ,MAAO,YAAK,wBAA2B,YAC7D,EAAO,EAAK,KAAK,WAAK,0BACtB,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,GACR,OAID,EAAW,GAAI,IAAS,EAAM,GAC9B,EAAQ,KAGT,GAAc,EAAK,KASrB,GAAM,WAAa,SAAU,GAC5B,MAAO,KAAS,KAAO,IAAS,KAAO,IAAS,KAAO,IAAS,KAAO,IAAS,KAIjF,GAAM,QAAU,OAAO,QAEvB,GAAO,IAAQ,KCpmDf,cAuBA,aAEA,GAAM,IAAc,eACd,GAAe,gBACf,GAAuB,kBACvB,GAAQ,GAAK,SAAS,QAc5B,YAAe,GACb,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAM,GAEnB,GAAa,KAAK,MAElB,GAAI,GAAO,KAEX,EAAK,YAAc,GACnB,EAAK,SAAW,QAEhB,EAAK,QAAU,GAAK,QAAQ,GAAI,GAGhC,EAAK,QAAQ,KAAO,KACpB,EAAK,SAAW,GAChB,EAAK,QAAU,GACf,EAAK,YAAc,GACnB,EAAK,eAAiB,EAAK,QAAQ,gBAAkB,IACrD,EAAK,UAAY,EAAK,QAAQ,WAAa,GAC3C,EAAK,WAAa,EAAK,QAAQ,YAAc,GAAM,kBACnD,EAAK,eAAiB,EAAK,QAAQ,gBAAkB,IAIrD,EAAK,2BAA6B,EAAK,QAAQ,4BAA8B,EAE7E,EAAK,QAAU,EAAK,QAAQ,SAAW,EAEvC,KAAK,gBAAkB,KAAK,QAAQ,iBAAmB,KAGvD,EAAK,GAAG,OAAQ,SAAS,EAAQ,GAC/B,GAAI,GAAO,EAAK,QAAQ,GAGxB,GAFA,GAAM,iBAAkB,GAEpB,EAAO,UACP,EAAK,SAAS,IAAS,EAAK,SAAS,GAAM,OAE7C,GAAM,gCAEN,EAAK,SAAS,GAAM,QAAQ,SAAS,GACjC,EAAK,SAAS,GAAM,SAAW,GAEjC,MAAO,GAAK,SAAS,QAKvB,GAAI,GAAM,EAAO,aACjB,GAAI,GACA,EAAI,iBACJ,EAAO,UACP,EAAK,WACP,GAAI,GAAc,EAAK,YAAY,GAC/B,EAAU,EAAc,EAAY,OAAS,EAC7C,EAAQ,EAIZ,GAHI,EAAK,QAAQ,IACf,IAAS,EAAK,QAAQ,GAAM,QAE1B,EAAQ,EAAK,YAAc,GAAW,EAAK,eAC7C,EAAO,eAEP,EAAc,GAAe,GAC7B,EAAK,YAAY,GAAQ,EACzB,EAAO,aAAa,GAAM,EAAK,gBAC/B,EAAO,QACP,EAAO,aAAe,KACtB,EAAK,aAAa,EAAQ,GAC1B,EAAY,KAAK,GAMb,EAAO,UAAU,SAAS,SAAW,GACvC,EAAO,KAAK,QAAS,IAIvB,GAAM,GAA6B,EAAO,4BAA8B,EAAK,2BAC7E,EAAO,WAAW,GAClB,GAAM,0CAA0C,YAIlD,GAAO,aAMf,GAAK,SAAS,GAAO,IACrB,GAAQ,MAAQ,GAGhB,YAAiC,GAC/B,GAAI,GAAS,KACb,GAAM,+BAAgC,EAAI,QAAS,EAAI,OACvD,EAAO,UACP,EAAO,KAAK,eAId,GAAM,kBAAoB,SAE1B,GAAM,UAAU,iBAAmB,GAAI,iBAGvC,GAAM,UAAU,QAAU,SAAiB,GACzC,GAAI,GAAO,EAAQ,MAAQ,YAE3B,UAAQ,IACJ,EAAQ,MACV,IAAQ,EAAQ,MAElB,GAAQ,IACJ,EAAQ,cACV,IAAQ,EAAQ,cAId,GAAQ,SAAW,GAAK,EAAQ,SAAW,IAC7C,IAAQ,IAAM,EAAQ,QAEjB,GAIT,YAA8B,GAC5B,MAAO,UAAS,EAAK,GACnB,GAAI,GACF,QAAQ,SAAS,WACf,EAAI,KAAK,QAAS,KAEpB,OAEF,EAAI,SAAS,IAKjB,GAAM,UAAU,WAAa,SAAoB,EAAK,EAAS,EACd,GAE/C,AAAI,MAAO,IAAY,UACrB,GAAU,CACR,KAAM,EACN,OACA,iBAIJ,EAAU,GAAK,QAAQ,GAAI,GAC3B,EAAU,GAAK,QAAQ,EAAS,KAAK,SAEhC,EAAQ,YACX,GAAQ,WAAa,GAAoB,EAAS,IAEpD,GAAI,GAAO,KAAK,QAAQ,GACxB,AAAK,KAAK,QAAQ,IAChB,MAAK,QAAQ,GAAQ,IAGvB,GAAI,GAAU,KAAK,YAAY,GAAQ,KAAK,YAAY,GAAM,OAAS,EACnE,EAAU,EAAU,KAAK,QAAQ,GAAM,OAE3C,GAAI,GAEF,GAAI,GAAS,KAAK,YAAY,GAAM,QASpC,GARA,GAAM,oBAIN,EAAO,eAAe,QAAS,IAE/B,EAAO,WAAW,KAAK,SAEnB,KAAK,iBAAmB,KAAK,MAAQ,EAAO,YAAc,KAAK,gBACjE,UAAM,UAAU,EAAO,uBACvB,EAAO,UACA,KAAK,aAAa,EAAK,EAAS,GAAqB,IAK9D,AAAK,KAAK,YAAY,GAAM,QAC1B,MAAO,MAAK,YAAY,GAE1B,EAAO,MACP,EAAI,SAAS,GACb,KAAK,QAAQ,GAAM,KAAK,OACnB,AAAI,GAAU,KAAK,WACxB,IAAM,gBAAiB,EAAS,GAGhC,KAAK,aAAa,EAAK,EAAS,GAAqB,KAGrD,IAAM,mBAED,KAAK,SAAS,IACjB,MAAK,SAAS,GAAQ,IAExB,KAAK,SAAS,GAAM,KAAK,KAI7B,GAAM,UAAU,aAAe,SAAsB,EAAK,EAAS,GACjE,GAAI,GAAO,KACX,EAAU,GAAK,QAAQ,GAAI,GAC3B,EAAU,GAAK,QAAQ,EAAS,EAAK,SAEhC,EAAQ,YACX,GAAQ,WAAa,GAAoB,EAAS,IAEpD,GAAI,GAAO,EAAK,QAAQ,GACxB,EAAQ,UAAY,EAEpB,GAAM,mBAAoB,EAAM,GAChC,EAAQ,SAAW,KACnB,GAAI,GAAS,GACb,GAAM,GAAY,EAAK,iBAAiB,EAAS,GAEjD,AAAI,GACF,EAAS,KAAM,OAAO,OAAO,EAAW,CAAE,YAAa,KAAK,SAG9D,WAAkB,EAAK,GACrB,GAAI,EACF,OAEF,GADA,EAAS,GACL,EACF,MAAO,GAAG,GACZ,AAAK,EAAK,QAAQ,IAChB,GAAK,QAAQ,GAAQ,IAEvB,EAAK,QAAQ,GAAM,KAAK,GACxB,GAAM,UAAW,EAAM,EAAK,QAAQ,GAAM,QAE1C,aACE,EAAK,KAAK,OAAQ,EAAG,GAEvB,EAAE,GAAG,OAAQ,GAEb,WAAiB,GACf,GAAM,yBAIN,EAAK,aAAa,EAAG,GAGrB,EAAK,KAAK,SAGZ,EAAE,GAAG,QAAS,GAId,aACE,GAAM,2BACN,EAAE,UAEF,EAAK,aAAa,EAAG,GACrB,EAAK,KAAK,WAEZ,EAAE,GAAG,UAAW,GAEhB,EAAE,WAAW,EAAK,SAGlB,aAIE,GAAM,0BACN,EAAK,aAAa,EAAG,GACrB,EAAE,eAAe,QAAS,GAC1B,EAAE,eAAe,OAAQ,GACzB,EAAE,eAAe,cAAe,GAIhC,EAAE,WAAW,EAAG,GAGlB,EAAE,GAAG,cAAe,GACpB,EAAG,KAAM,KAIb,YAA6B,EAAS,GACpC,GAAI,GAAa,EAAQ,KACnB,EAAa,EAAI,UAAU,QACjC,GAAI,EAKF,GAAI,EAAW,WAAW,MACxB,GAAM,GAAQ,EAAW,QAAQ,KACjC,AAAI,IAAU,GAEZ,EAAa,EAEb,EAAa,EAAW,OAAO,EAAG,EAAQ,OAG5C,GAAa,EAAW,MAAM,IAAK,GAAG,GAG1C,MAAO,GAGT,GAAM,UAAU,aAAe,SAAsB,EAAG,GACtD,GAAI,GAAO,KAAK,QAAQ,GACxB,GAAM,eAAgB,EAAM,YAAa,EAAE,UAC3C,GAAI,GAAO,CAAC,KAAK,SAGjB,AAAK,EAAE,UACL,EAAK,KAAK,KAAK,aAEjB,OAAS,GAAK,EAAG,EAAK,EAAK,OAAQ,KACjC,GAAI,GAAU,EAAK,GAEnB,GAAI,EAAQ,IACV,GAAI,GAAQ,EAAQ,GAAM,QAAQ,GAClC,AAAI,IAAU,IACZ,GAAQ,GAAM,OAAO,EAAO,GAExB,EAAQ,GAAM,SAAW,GAC3B,MAAO,GAAQ,KAMvB,GAAI,GAAU,KAAK,YAAY,GAAQ,KAAK,YAAY,GAAM,OAAS,EACnE,EAAU,EAAU,KAAK,QAAQ,GAAQ,KAAK,QAAQ,GAAM,OAAS,EAGzE,GAAI,KAAK,SAAS,IAAS,KAAK,SAAS,GAAM,QAAU,EAAU,KAAK,YACtE,GAAM,+CACN,GAAI,GAAM,KAAK,SAAS,GAAM,GAE9B,KAAK,aAAa,EAAK,EAAS,SAAS,EAAK,GAC5C,GAAI,GACF,QAAQ,SAAS,WACf,EAAI,KAAK,QAAS,KAEpB,OAEF,EAAU,KAAK,YAKrB,GAAM,UAAU,QAAU,WAExB,OADI,GAAO,CAAC,KAAK,YAAa,KAAK,SAC1B,EAAI,EAAG,EAAI,EAAK,OAAQ,IAG/B,OAFI,GAAM,EAAK,GACX,EAAO,OAAO,KAAK,GACd,EAAI,EAAG,EAAI,EAAK,OAAQ,IAE/B,OADI,GAAU,EAAI,EAAK,IACd,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,EAAQ,GAAG,WAMnB,GAAQ,YAAc,GAAI,MC/Z1B,mBAIA,GAAI,IAAI,IACJ,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,EACR,GAAI,GAAI,OAgBZ,GAAO,QAAU,SAAU,EAAK,GAC9B,EAAU,GAAW,GACrB,GAAI,GAAO,MAAO,GAClB,GAAI,IAAS,UAAY,EAAI,OAAS,EACpC,MAAO,IAAM,GACR,GAAI,IAAS,UAAY,SAAS,GACvC,MAAO,GAAQ,KAAO,GAAQ,GAAO,GAAS,GAEhD,KAAM,IAAI,OACR,wDACE,KAAK,UAAU,KAYrB,YAAe,GAEb,GADA,EAAM,OAAO,GACT,IAAI,OAAS,MAGjB,GAAI,GAAQ,mIAAmI,KAC7I,GAEF,GAAI,EAAC,GAGL,GAAI,GAAI,WAAW,EAAM,IACrB,EAAQ,GAAM,IAAM,MAAM,cAC9B,OAAQ,OACD,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,YACA,WACA,IACH,MAAO,GAAI,OACR,WACA,UACA,IACH,MAAO,GAAI,OACR,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,mBACA,kBACA,YACA,WACA,KACH,MAAO,WAEP,UAYN,YAAkB,GAChB,GAAI,GAAQ,KAAK,IAAI,GACrB,MAAI,IAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAS,GACJ,KAAK,MAAM,EAAK,IAAK,IAEvB,EAAK,KAWd,YAAiB,GACf,GAAI,GAAQ,KAAK,IAAI,GACrB,MAAI,IAAS,GACJ,GAAO,EAAI,EAAO,GAAG,OAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,QAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,UAE1B,GAAS,GACJ,GAAO,EAAI,EAAO,GAAG,UAEvB,EAAK,MAOd,YAAgB,EAAI,EAAO,EAAG,GAC5B,GAAI,GAAW,GAAS,EAAI,IAC5B,MAAO,MAAK,MAAM,EAAK,GAAK,IAAM,EAAQ,GAAW,IAAM,OChK7D,mBAMA,aAMA,GAAI,IAAe,gBACf,GAAa,KAEjB,GAAO,QAAU,SAAU,GACzB,GAAI,MAAO,IAAM,SAAU,MAAO,GAClC,GAAI,GAAI,GAAG,GACX,GAAI,IAAM,QACR,GAAI,GAAM,GAAI,OAAM,GAAK,OAAO,mCAAoC,IACpE,QAAQ,KAAK,EAAI,OAEnB,MAAO,MCtBT,mBAQA,aAEA,GAAM,IAAgB,AAAQ,KAAiB,MACzC,GAAa,KAXnB,gBAaoB,IAClB,YAAY,GACV,EAAU,GAAW,GACrB,EAAQ,UAAY,EAAQ,YAAc,GAEtC,EAAQ,6BAA+B,QACzC,GAAQ,2BAA6B,MAGnC,EAAQ,kBACV,GAAQ,2BAA6B,EAAQ,kBAE/C,EAAQ,2BAA6B,GAAG,EAAQ,4BAI5C,EAAQ,UAAY,QACtB,GAAQ,QAAU,EAAQ,2BAA6B,EAEnD,EAAQ,QAAU,KACpB,GAAQ,QAAU,MAGtB,EAAQ,QAAU,GAAG,EAAQ,SAE7B,MAAM,GAEN,KAAK,kBAAoB,EACzB,KAAK,2BAA6B,EAElC,KAAK,uBAAyB,EAC9B,KAAK,gCAAkC,EAEvC,KAAK,iBAAmB,EACxB,KAAK,0BAA4B,EAGjC,KAAK,iBAAmB,EACxB,KAAK,0BAA4B,EAEjC,KAAK,aAAe,EACpB,KAAK,sBAAwB,EAE7B,KAAK,mBAAqB,EAC1B,KAAK,4BAA8B,EAEnC,KAAK,GAAG,OAAQ,IACd,KAAK,eAEL,EAAE,aAAe,KAAK,QAExB,KAAK,GAAG,UAAW,KACjB,KAAK,uBAEP,KAAK,GAAG,QAAS,KACf,KAAK,qBAEP,KAAK,GAAG,QAAS,KACf,KAAK,qBAIT,aAAa,EAAK,EAAS,GACzB,MAAM,aAAa,EAAK,EAAS,CAAC,EAAK,KACrC,GAAI,EACF,YAAK,yBACE,EAAG,GAEZ,AAAI,KAAK,WAGP,EAAO,WAAW,IAEpB,KAAK,oBACL,EAAG,KAAM,QAIT,iBACF,GAAM,GAAU,KAAK,oBAAsB,KAAK,4BAC9C,KAAK,yBAA2B,KAAK,iCACrC,KAAK,mBAAqB,KAAK,2BAC/B,KAAK,mBAAqB,KAAK,2BAC/B,KAAK,qBAAuB,KAAK,6BACjC,KAAK,eAAiB,KAAK,sBAC7B,MAAI,IACF,MAAK,2BAA6B,KAAK,kBACvC,KAAK,gCAAkC,KAAK,uBAC5C,KAAK,0BAA4B,KAAK,iBACtC,KAAK,0BAA4B,KAAK,iBACtC,KAAK,4BAA8B,KAAK,mBACxC,KAAK,sBAAwB,KAAK,cAE7B,EAGT,mBACE,MAAO,CACL,kBAAmB,KAAK,kBACxB,uBAAwB,KAAK,uBAC7B,iBAAkB,KAAK,iBACvB,iBAAkB,KAAK,iBACvB,mBAAoB,KAAK,mBACzB,aAAc,KAAK,aACnB,YAAa,GAAQ,KAAK,aAC1B,QAAS,GAAQ,KAAK,SACtB,SAAU,GAAQ,KAAK,aAK7B,GAAO,QAAU,GAEjB,YAAiB,GACf,GAAM,GAAM,GACZ,OAAW,KAAO,GAChB,EAAI,GAAO,EAAI,GAAK,OAEtB,MAAO,MCnIT,mBAIA,aAEA,GAAM,IAAgB,iBAChB,GAAoB,KACpB,GAAqB,GAAM,MARjC,gBAUyB,IACvB,YAAY,GACV,MAAM,GAEN,KAAK,YAAc,IACnB,KAAK,SAAW,SAChB,KAAK,kBAAoB,KAAK,QAAQ,kBAClC,KAAK,oBAAsB,QAC7B,MAAK,kBAAoB,KAG3B,KAAK,cAAgB,CACnB,IAAK,GACL,KAAM,MAKZ,CACE,mBACA,UACA,cACA,gBAEA,iBACA,QAAQ,SAAS,GACjB,AAAI,MAAO,IAAmB,UAAU,IAAY,YAClD,IAAW,UAAU,GAAU,GAAmB,UAAU,MAIhE,GAAO,QAAU,KCzCjB,gCAEA,GAAO,QAAkB,KACzB,GAAO,QAAQ,WAAqB,OCHpC,mBAIA,GAAI,IAAI,IACJ,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,GACR,GAAI,GAAI,OAgBZ,GAAO,QAAU,SAAS,EAAK,GAC7B,EAAU,GAAW,GACrB,GAAI,GAAO,MAAO,GAClB,GAAI,IAAS,UAAY,EAAI,OAAS,EACpC,MAAO,IAAM,GACR,GAAI,IAAS,UAAY,MAAM,KAAS,GAC7C,MAAO,GAAQ,KAAO,GAAQ,GAAO,GAAS,GAEhD,KAAM,IAAI,OACR,wDACE,KAAK,UAAU,KAYrB,YAAe,GAEb,GADA,EAAM,OAAO,GACT,IAAI,OAAS,MAGjB,GAAI,GAAQ,wHAAwH,KAClI,GAEF,GAAI,EAAC,GAGL,GAAI,GAAI,WAAW,EAAM,IACrB,EAAQ,GAAM,IAAM,MAAM,cAC9B,OAAQ,OACD,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,WACA,UACA,IACH,MAAO,GAAI,OACR,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,OACR,mBACA,kBACA,YACA,WACA,KACH,MAAO,WAEP,UAYN,YAAkB,GAChB,MAAI,IAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAE1B,GAAM,GACD,KAAK,MAAM,EAAK,IAAK,IAEvB,EAAK,KAWd,YAAiB,GACf,MAAO,IAAO,EAAI,GAAG,QACnB,GAAO,EAAI,GAAG,SACd,GAAO,EAAI,GAAG,WACd,GAAO,EAAI,GAAG,WACd,EAAK,MAOT,YAAgB,EAAI,EAAG,GACrB,GAAI,IAAK,GAGT,MAAI,GAAK,EAAI,IACJ,KAAK,MAAM,EAAK,GAAK,IAAM,EAE7B,KAAK,KAAK,EAAK,GAAK,IAAM,EAAO,OCtJ1C,kBAQA,EAAU,GAAO,QAAU,GAAY,MAAQ,GAAY,QAAa,GACxE,EAAQ,OAAS,GACjB,EAAQ,QAAU,GAClB,EAAQ,OAAS,GACjB,EAAQ,QAAU,GAClB,EAAQ,SAAmB,KAK3B,EAAQ,UAAY,GAMpB,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAQhB,EAAQ,WAAa,GASrB,YAAqB,GACnB,GAAI,GAAO,EAAG,EAEd,IAAK,IAAK,GACR,EAAU,IAAQ,GAAK,EAAQ,EAAU,WAAW,GACpD,GAAQ,EAGV,MAAO,GAAQ,OAAO,KAAK,IAAI,GAAQ,EAAQ,OAAO,QAWxD,YAAqB,GAEnB,GAAI,GAEJ,aAEE,GAAI,EAAC,EAAM,SAEX,GAAI,GAAO,EAGP,EAAO,CAAC,GAAI,MACZ,EAAK,EAAQ,IAAY,GAC7B,EAAK,KAAO,EACZ,EAAK,KAAO,EACZ,EAAK,KAAO,EACZ,EAAW,EAIX,OADI,GAAO,GAAI,OAAM,UAAU,QACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,UAAU,GAGtB,EAAK,GAAK,EAAQ,OAAO,EAAK,IAE1B,AAAa,MAAO,GAAK,IAAzB,UAEF,EAAK,QAAQ,MAIf,GAAI,GAAQ,EACZ,EAAK,GAAK,EAAK,GAAG,QAAQ,gBAAiB,SAAS,EAAO,GAEzD,GAAI,IAAU,KAAM,MAAO,GAC3B,IACA,GAAI,GAAY,EAAQ,WAAW,GACnC,GAAI,AAAe,MAAO,IAAtB,YACF,GAAI,GAAM,EAAK,GACf,EAAQ,EAAU,KAAK,EAAM,GAG7B,EAAK,OAAO,EAAO,GACnB,IAEF,MAAO,KAIT,EAAQ,WAAW,KAAK,EAAM,GAE9B,GAAI,GAAQ,EAAM,KAAO,EAAQ,KAAO,QAAQ,IAAI,KAAK,SACzD,EAAM,MAAM,EAAM,IAGpB,SAAM,UAAY,EAClB,EAAM,QAAU,EAAQ,QAAQ,GAChC,EAAM,UAAY,EAAQ,YAC1B,EAAM,MAAQ,GAAY,GAC1B,EAAM,QAAU,GAGZ,AAAe,MAAO,GAAQ,MAA9B,YACF,EAAQ,KAAK,GAGf,EAAQ,UAAU,KAAK,GAEhB,EAGT,cACE,GAAI,GAAQ,EAAQ,UAAU,QAAQ,MACtC,MAAI,KAAU,GACZ,GAAQ,UAAU,OAAO,EAAO,GACzB,IAEA,GAYX,YAAgB,GACd,EAAQ,KAAK,GAEb,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAEhB,GAAI,GACA,EAAS,OAAO,IAAe,SAAW,EAAa,IAAI,MAAM,UACjE,EAAM,EAAM,OAEhB,IAAK,EAAI,EAAG,EAAI,EAAK,IACnB,AAAI,CAAC,EAAM,IACX,GAAa,EAAM,GAAG,QAAQ,MAAO,OACrC,AAAI,EAAW,KAAO,IACpB,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAW,OAAO,GAAK,MAE3D,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAa,OAIrD,IAAK,EAAI,EAAG,EAAI,EAAQ,UAAU,OAAQ,KACxC,GAAI,GAAW,EAAQ,UAAU,GACjC,EAAS,QAAU,EAAQ,QAAQ,EAAS,YAUhD,cACE,EAAQ,OAAO,IAWjB,YAAiB,GACf,GAAI,EAAK,EAAK,OAAS,KAAO,IAC5B,MAAO,GAET,GAAI,GAAG,EACP,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,MAAO,GAWT,YAAgB,GACd,MAAI,aAAe,OAAc,EAAI,OAAS,EAAI,QAC3C,KC/NT,mBAMA,GAAU,GAAO,QAAkB,KACnC,GAAQ,IAAM,GACd,GAAQ,WAAa,GACrB,GAAQ,KAAO,GACf,GAAQ,KAAO,GACf,GAAQ,UAAY,GACpB,GAAQ,QAAU,AAAe,MAAO,SAAtB,aACA,AAAe,MAAO,QAAO,SAA7B,YACE,OAAO,QAAQ,MACf,KAMpB,GAAQ,OAAS,CACf,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAWzD,cAIE,MAAI,OAAO,SAAW,aAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAIL,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,yBAC9F,GAKD,MAAO,WAAa,aAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,MAAO,SAAW,aAAe,OAAO,SAAY,QAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,mBAAqB,SAAS,OAAO,GAAI,KAAO,IAEnJ,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,sBAOxG,GAAQ,WAAW,EAAI,SAAS,GAC9B,IACE,MAAO,MAAK,UAAU,SACf,GACP,MAAO,+BAAiC,EAAI,UAWhD,YAAoB,GAClB,GAAI,GAAY,KAAK,UASrB,GAPA,EAAK,GAAM,GAAY,KAAO,IAC1B,KAAK,UACJ,GAAY,MAAQ,KACrB,EAAK,GACJ,GAAY,MAAQ,KACrB,IAAM,GAAQ,SAAS,KAAK,MAE5B,EAAC,GAEL,GAAI,GAAI,UAAY,KAAK,MACzB,EAAK,OAAO,EAAG,EAAG,EAAG,kBAKrB,GAAI,GAAQ,EACR,EAAQ,EACZ,EAAK,GAAG,QAAQ,cAAe,SAAS,GACtC,AAAI,AAAS,IAAT,MACJ,KACI,AAAS,IAAT,MAGF,GAAQ,MAIZ,EAAK,OAAO,EAAO,EAAG,IAUxB,cAGE,MAAO,AAAa,OAAO,UAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,WAU3D,YAAc,GACZ,IACE,AAAI,AAAQ,GAAR,KACF,GAAQ,QAAQ,WAAW,SAE3B,GAAQ,QAAQ,MAAQ,QAEpB,KAUV,cACE,GAAI,GACJ,IACE,EAAI,GAAQ,QAAQ,YACd,IAGR,MAAI,CAAC,GAAK,MAAO,UAAY,aAAe,OAAS,UACnD,GAAI,QAAQ,IAAI,OAGX,EAOT,GAAQ,OAAO,MAaf,cACE,IACE,MAAO,QAAO,mBACP,QCjMX,gCAEA,GAAO,QAAU,CAAC,EAAM,EAAO,QAAQ,QACtC,GAAM,GAAS,EAAK,WAAW,KAAO,GAAM,EAAK,SAAW,EAAI,IAAM,KAChE,EAAW,EAAK,QAAQ,EAAS,GACjC,EAAqB,EAAK,QAAQ,MACxC,MAAO,KAAa,IAAO,KAAuB,IAAM,EAAW,MCNpE,gCACA,GAAM,IAAa,cACb,GAAc,eACd,GAAkB,KAElB,CAAC,QAAO,QAEV,GACJ,AAAI,GAAQ,aACX,GAAQ,cACR,GAAQ,gBACR,GAAQ,eACR,GAAa,EACH,IAAQ,UAClB,GAAQ,WACR,GAAQ,eACR,GAAQ,kBACR,IAAa,GAGd,AAAI,eAAiB,KACpB,CAAI,GAAI,cAAgB,OACvB,GAAa,EACP,AAAI,GAAI,cAAgB,QAC9B,GAAa,EAEb,GAAa,GAAI,YAAY,SAAW,EAAI,EAAI,KAAK,IAAI,SAAS,GAAI,YAAa,IAAK,IAI1F,YAAwB,GACvB,MAAI,KAAU,EACN,GAGD,CACN,QACA,SAAU,GACV,OAAQ,GAAS,EACjB,OAAQ,GAAS,GAInB,YAAuB,EAAY,GAClC,GAAI,KAAe,EAClB,MAAO,GAGR,GAAI,GAAQ,cACX,GAAQ,eACR,GAAQ,mBACR,MAAO,GAGR,GAAI,GAAQ,aACX,MAAO,GAGR,GAAI,GAAc,CAAC,GAAe,KAAe,OAChD,MAAO,GAGR,GAAM,GAAM,IAAc,EAE1B,GAAI,GAAI,OAAS,OAChB,MAAO,GAGR,GAAI,QAAQ,WAAa,SAGxB,GAAM,GAAY,GAAG,UAAU,MAAM,KACrC,MACC,QAAO,EAAU,KAAO,IACxB,OAAO,EAAU,KAAO,MAEjB,OAAO,EAAU,KAAO,MAAQ,EAAI,EAGrC,EAGR,GAAI,MAAQ,IACX,MAAI,CAAC,SAAU,WAAY,WAAY,YAAa,iBAAkB,aAAa,KAAK,GAAQ,IAAQ,MAAQ,GAAI,UAAY,WACxH,EAGD,EAGR,GAAI,oBAAsB,IACzB,MAAO,gCAAgC,KAAK,GAAI,kBAAoB,EAAI,EAGzE,GAAI,GAAI,YAAc,YACrB,MAAO,GAGR,GAAI,gBAAkB,KACrB,GAAM,GAAU,SAAU,IAAI,sBAAwB,IAAI,MAAM,KAAK,GAAI,IAEzE,OAAQ,GAAI,kBACN,YACJ,MAAO,IAAW,EAAI,EAAI,MACtB,iBACJ,MAAO,IAKV,MAAI,iBAAiB,KAAK,GAAI,MACtB,EAGJ,8DAA8D,KAAK,GAAI,OAIvE,aAAe,IACX,EAGD,EAGR,YAAyB,GACxB,GAAM,GAAQ,GAAc,EAAQ,GAAU,EAAO,OACrD,MAAO,IAAe,GAGvB,GAAO,QAAU,CAChB,cAAe,GACf,OAAQ,GAAe,GAAc,GAAM,GAAI,OAAO,KACtD,OAAQ,GAAe,GAAc,GAAM,GAAI,OAAO,QCrIvD,mBAIA,GAAI,IAAc,eACd,GAAe,gBAQnB,GAAU,GAAO,QAAkB,KACnC,GAAQ,KAAO,GACf,GAAQ,IAAM,GACd,GAAQ,WAAa,GACrB,GAAQ,KAAO,GACf,GAAQ,KAAO,GACf,GAAQ,UAAY,GAMpB,GAAQ,OAAS,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAElC,IACE,AAAI,GAAwB,KACxB,IAAiB,GAAc,OAAS,GAC1C,IAAQ,OAAS,CACf,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IACxE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAGrC,IAVH,OAoBN,GAAQ,YAAc,OAAO,KAAK,QAAQ,KAAK,OAAO,SAAU,GAC9D,MAAO,WAAW,KAAK,KACtB,OAAO,SAAU,EAAK,GAEvB,GAAI,GAAO,EACR,UAAU,GACV,cACA,QAAQ,YAAa,SAAU,EAAG,GAAK,MAAO,GAAE,gBAG/C,EAAM,QAAQ,IAAI,GACtB,MAAI,2BAA2B,KAAK,GAAM,EAAM,GAC3C,AAAI,6BAA6B,KAAK,GAAM,EAAM,GAClD,AAAI,IAAQ,OAAQ,EAAM,KAC1B,EAAM,OAAO,GAElB,EAAI,GAAQ,EACL,GACN,IAMH,cACE,MAAO,UAAY,IAAQ,YACvB,QAAQ,GAAQ,YAAY,QAC5B,GAAI,OAAO,QAAQ,OAAO,IAOhC,GAAQ,WAAW,EAAI,SAAS,GAC9B,YAAK,YAAY,OAAS,KAAK,UACxB,GAAK,QAAQ,EAAG,KAAK,aACzB,MAAM;AAAA,GAAM,IAAI,SAAS,GACxB,MAAO,GAAI,SACV,KAAK,MAOZ,GAAQ,WAAW,EAAI,SAAS,GAC9B,YAAK,YAAY,OAAS,KAAK,UACxB,GAAK,QAAQ,EAAG,KAAK,cAS9B,YAAoB,GAClB,GAAI,GAAO,KAAK,UACZ,EAAY,KAAK,UAErB,GAAI,GACF,GAAI,GAAI,KAAK,MACT,EAAY,MAAc,GAAI,EAAI,EAAI,OAAS,GAC/C,EAAS,KAAO,EAAY,MAAQ,EAAO,QAE/C,EAAK,GAAK,EAAS,EAAK,GAAG,MAAM;AAAA,GAAM,KAAK;AAAA,EAAO,GACnD,EAAK,KAAK,EAAY,KAAO,GAAQ,SAAS,KAAK,MAAQ,YAE3D,GAAK,GAAK,KAAY,EAAO,IAAM,EAAK,GAI5C,cACE,MAAI,IAAQ,YAAY,SACf,GAEA,GAAI,QAAO,cAAgB,IAQtC,cACE,MAAO,SAAQ,OAAO,MAAM,GAAK,OAAO,MAAM,GAAM,WAAa;AAAA,GAUnE,YAAc,GACZ,AAAI,AAAQ,GAAR,KAGF,MAAO,SAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQ,EAWxB,cACE,MAAO,SAAQ,IAAI,MAUrB,YAAe,GACb,EAAM,YAAc,GAGpB,OADI,GAAO,OAAO,KAAK,GAAQ,aACtB,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAM,YAAY,EAAK,IAAM,GAAQ,YAAY,EAAK,IAQ1D,GAAQ,OAAO,QCzLf,mBAKA,AAAI,MAAO,UAAY,aAAe,QAAQ,OAAS,WACrD,GAAO,QAAkB,KAEzB,GAAO,QAAkB,OCR3B,+BAAwB,EAAU,GAEhC,AAAI,MAAO,IAAY,WACrB,GAAU,CAAE,QAAS,IAGvB,KAAK,kBAAoB,KAAK,MAAM,KAAK,UAAU,IACnD,KAAK,UAAY,EACjB,KAAK,SAAW,GAAW,GAC3B,KAAK,cAAgB,GAAW,EAAQ,cAAgB,SACxD,KAAK,IAAM,KACX,KAAK,QAAU,GACf,KAAK,UAAY,EACjB,KAAK,kBAAoB,KACzB,KAAK,oBAAsB,KAC3B,KAAK,SAAW,KAChB,KAAK,gBAAkB,KAEnB,KAAK,SAAS,SAChB,MAAK,gBAAkB,KAAK,UAAU,MAAM,IAGhD,GAAO,QAAU,GAEjB,GAAe,UAAU,MAAQ,WAC/B,KAAK,UAAY,EACjB,KAAK,UAAY,KAAK,mBAGxB,GAAe,UAAU,KAAO,WAC9B,AAAI,KAAK,UACP,aAAa,KAAK,UAGpB,KAAK,UAAkB,GACvB,KAAK,gBAAkB,MAGzB,GAAe,UAAU,MAAQ,SAAS,GAKxC,GAJI,KAAK,UACP,aAAa,KAAK,UAGhB,CAAC,EACH,MAAO,GAET,GAAI,GAAc,GAAI,QAAO,UAC7B,GAAI,GAAO,EAAc,KAAK,iBAAmB,KAAK,cACpD,YAAK,QAAQ,QAAQ,GAAI,OAAM,oCACxB,GAGT,KAAK,QAAQ,KAAK,GAElB,GAAI,GAAU,KAAK,UAAU,QAC7B,GAAI,IAAY,OACd,GAAI,KAAK,gBAEP,KAAK,QAAQ,OAAO,KAAK,QAAQ,OAAS,EAAG,KAAK,QAAQ,QAC1D,KAAK,UAAY,KAAK,gBAAgB,MAAM,GAC5C,EAAU,KAAK,UAAU,YAEzB,OAAO,GAIX,GAAI,GAAO,KACP,EAAQ,WAAW,WACrB,EAAK,YAED,EAAK,qBACP,GAAK,SAAW,WAAW,WACzB,EAAK,oBAAoB,EAAK,YAC7B,EAAK,mBAEJ,EAAK,SAAS,OACd,EAAK,SAAS,SAIpB,EAAK,IAAI,EAAK,YACb,GAEH,MAAI,MAAK,SAAS,OACd,EAAM,QAGH,IAGT,GAAe,UAAU,QAAU,SAAS,EAAI,GAC9C,KAAK,IAAM,EAEP,GACE,GAAW,SACb,MAAK,kBAAoB,EAAW,SAElC,EAAW,IACb,MAAK,oBAAsB,EAAW,KAI1C,GAAI,GAAO,KACX,AAAI,KAAK,qBACP,MAAK,SAAW,WAAW,WACzB,EAAK,uBACJ,EAAK,oBAGV,KAAK,gBAAkB,GAAI,QAAO,UAElC,KAAK,IAAI,KAAK,YAGhB,GAAe,UAAU,IAAM,SAAS,GACtC,QAAQ,IAAI,4CACZ,KAAK,QAAQ,IAGf,GAAe,UAAU,MAAQ,SAAS,GACxC,QAAQ,IAAI,8CACZ,KAAK,QAAQ,IAGf,GAAe,UAAU,MAAQ,GAAe,UAAU,IAE1D,GAAe,UAAU,OAAS,WAChC,MAAO,MAAK,SAGd,GAAe,UAAU,SAAW,WAClC,MAAO,MAAK,WAGd,GAAe,UAAU,UAAY,WACnC,GAAI,KAAK,QAAQ,SAAW,EAC1B,MAAO,MAOT,OAJI,GAAS,GACT,EAAY,KACZ,EAAiB,EAEZ,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,KACvC,GAAI,GAAQ,KAAK,QAAQ,GACrB,EAAU,EAAM,QAChB,EAAS,GAAO,IAAY,GAAK,EAErC,EAAO,GAAW,EAEd,GAAS,GACX,GAAY,EACZ,EAAiB,GAIrB,MAAO,MC5JT,iBAAI,IAAyB,KAE7B,GAAQ,UAAY,SAAS,GAC3B,GAAI,GAAW,GAAQ,SAAS,GAChC,MAAO,IAAI,IAAe,EAAU,CAChC,QAAS,GAAW,EAAQ,QAC5B,MAAO,GAAW,EAAQ,MAC1B,aAAc,GAAW,EAAQ,gBAIvC,GAAQ,SAAW,SAAS,GAC1B,GAAI,YAAmB,OACrB,MAAO,GAAG,OAAO,GAGnB,GAAI,GAAO,CACT,QAAS,GACT,OAAQ,EACR,WAAY,EAAI,IAChB,WAAY,SACZ,UAAW,IAEb,OAAS,KAAO,GACd,EAAK,GAAO,EAAQ,GAGtB,GAAI,EAAK,WAAa,EAAK,WACzB,KAAM,IAAI,OAAM,yCAIlB,OADI,GAAW,GACN,EAAI,EAAG,EAAI,EAAK,QAAS,IAChC,EAAS,KAAK,KAAK,cAAc,EAAG,IAGtC,MAAI,IAAW,EAAQ,SAAW,CAAC,EAAS,QAC1C,EAAS,KAAK,KAAK,cAAc,EAAG,IAItC,EAAS,KAAK,SAAS,EAAE,GACvB,MAAO,GAAI,IAGN,GAGT,GAAQ,cAAgB,SAAS,EAAS,GACxC,GAAI,GAAU,EAAK,UACd,KAAK,SAAW,EACjB,EAEA,EAAU,KAAK,MAAM,EAAS,EAAK,WAAa,KAAK,IAAI,EAAK,OAAQ,IAC1E,SAAU,KAAK,IAAI,EAAS,EAAK,YAE1B,GAGT,GAAQ,KAAO,SAAS,EAAK,EAAS,GAMpC,GALI,YAAmB,QACrB,GAAU,EACV,EAAU,MAGR,CAAC,GACH,EAAU,GACV,OAAS,KAAO,GACd,AAAI,MAAO,GAAI,IAAS,YACtB,EAAQ,KAAK,GAKnB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAW,EAAQ,GACnB,EAAW,EAAI,GAEnB,EAAI,GAAU,SAAsB,GAClC,GAAI,GAAW,GAAQ,UAAU,GAC7B,EAAW,MAAM,UAAU,MAAM,KAAK,UAAW,GACjD,EAAW,EAAK,MAEpB,EAAK,KAAK,SAAS,GACjB,AAAI,EAAG,MAAM,IAGT,IACF,WAAU,GAAK,EAAG,aAEpB,EAAS,MAAM,KAAM,cAGvB,EAAG,QAAQ,WACT,EAAS,MAAM,EAAK,MAEtB,KAAK,EAAK,GACZ,EAAI,GAAQ,QAAU,MCjG1B,sBAAO,QAAkB,OCAzB,mBACA,GAAI,IAAkB,KAEtB,YAAe,EAAI,GACjB,WAAa,EAAS,GACpB,GAAI,GAAU,GAAQ,GAGtB,AAAM,aAAe,IACnB,GAAQ,UAAY,IAGtB,GAAI,GAAK,GAAQ,UAAU,GAO3B,WAAc,GACZ,EAAO,GAAO,GAAI,OAAM,YAG1B,WAAiB,EAAK,GACpB,GAAI,EAAI,MACN,EAAK,GACL,OAGF,AAAK,EAAG,MAAM,GAEH,EAAQ,SACjB,EAAQ,QAAQ,EAAK,GAFrB,EAAO,EAAG,aAMd,WAAoB,GAClB,GAAI,GAEJ,IACE,EAAM,EAAG,EAAM,SACR,GACP,EAAQ,EAAK,GACb,OAGF,QAAQ,QAAQ,GACb,KAAK,GACL,MAAM,SAAiB,GACtB,EAAQ,EAAK,KAInB,EAAG,QAAQ,GAGb,MAAO,IAAI,SAAQ,GAGrB,GAAO,QAAU,KC3DjB,sBAAM,IAAgB,KAChB,GAAQ,AAAQ,KAAS,eAGzB,GAAc,GACd,GAAc,EACd,GAAkB,GAClB,GAAS,EAEf,GAAO,QAAU,GAAU,GAE3B,YAAuB,GACrB,MAAK,GAEH,EAAI,OAAS,4BACb,EAAI,UAAY,6CAHD,GAOnB,YAAe,GACb,AAAK,GACH,GAAgB,MAGlB,iBAA0B,EAAK,EAAO,IACpC,GAAM,GAAY,OAAO,OACvB,CAGE,WAAY,GACZ,QAAS,GACT,OAAQ,GACR,cAAe,IAEjB,EAAK,OAGP,AAAI,EAAK,SACP,GAAU,QAAU,AAAC,IACnB,EAAK,QAAQ,EAAO,GAChB,EAAK,OAAS,EAAK,MAAM,SAC3B,EAAK,MAAM,QAAQ,KAKzB,IACE,MAAO,MAAM,IAAM,MAAO,EAAM,KAC9B,GAAM,CAAE,SAAS,OAAU,EAC3B,IAEE,GAAM,GAAM,KAAM,GAAM,EAAK,GAE7B,GADA,GAAM,YAAa,EAAI,QAClB,EAAI,QAAU,KAAO,EAAI,OAAS,KAAQ,EAAI,SAAW,KAE5D,GAAM,GAAa,SAAS,EAAI,QAAQ,IAAI,eAAgB,IAC5D,GAAI,GACF,GAAI,EAAa,EAAU,cACzB,MAAO,GAEP,KAAM,IAAI,SAAQ,AAAC,GAAM,WAAW,EAAG,EAAa,MAGxD,KAAM,IAAI,IAAc,OAExB,OAAO,SAEF,GACP,GAAM,GAAc,GAAc,GAC5B,EAAU,CAAC,GAAe,GAAW,EAAU,QAOrD,GANA,GACE,GAAG,KAAU,qBAAuB,EAAI,YACtC,EAAU,WAAa,KAEzB,GAEE,EACF,MAAO,GAAK,GAEd,KAAM,KAEP,SACI,GACP,GAAI,YAAe,IACjB,MAAO,GAAI,IAEb,KAAM,IAIV,OAAW,KAAO,QAAO,KAAK,GAC5B,EAAW,GAAO,EAAM,GAE1B,SAAW,QAAU,EAEd,EA/FT,oBAkG4B,OAC1B,YAAY,GACV,MAAM,EAAI,YAEV,AAAI,MAAM,mBACR,MAAM,kBAAkB,KAAM,IAGhC,KAAK,KAAO,KAAK,YAAY,KAC7B,KAAK,IAAM,EAGX,KAAK,KAAO,KAAK,OAAS,KAAK,WAAa,EAAI,OAChD,KAAK,IAAM,EAAI,MAInB,GAAQ,cAAgB,KCnHxB,gCACA,GAAO,QAAU,SAAU,GACzB,EAAQ,UAAU,OAAO,UAAY,YACnC,OAAS,GAAS,KAAK,KAAM,EAAQ,EAAS,EAAO,KACnD,KAAM,GAAO,UCJnB,gCACA,GAAO,QAAU,EAEjB,EAAQ,KAAO,GACf,EAAQ,OAAS,EAEjB,WAAkB,GAChB,GAAI,GAAO,KASX,GARM,YAAgB,IACpB,GAAO,GAAI,IAGb,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,OAAS,EAEV,GAAQ,MAAO,GAAK,SAAY,WAClC,EAAK,QAAQ,SAAU,GACrB,EAAK,KAAK,aAEH,UAAU,OAAS,EAC5B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,EAAK,KAAK,UAAU,IAIxB,MAAO,GAGT,EAAQ,UAAU,WAAa,SAAU,GACvC,GAAI,EAAK,OAAS,KAChB,KAAM,IAAI,OAAM,oDAGlB,GAAI,GAAO,EAAK,KACZ,EAAO,EAAK,KAEhB,MAAI,IACF,GAAK,KAAO,GAGV,GACF,GAAK,KAAO,GAGV,IAAS,KAAK,MAChB,MAAK,KAAO,GAEV,IAAS,KAAK,MAChB,MAAK,KAAO,GAGd,EAAK,KAAK,SACV,EAAK,KAAO,KACZ,EAAK,KAAO,KACZ,EAAK,KAAO,KAEL,GAGT,EAAQ,UAAU,YAAc,SAAU,GACxC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,SAAW,SAAU,GACrC,GAAI,IAAS,KAAK,MAIlB,AAAI,EAAK,MACP,EAAK,KAAK,WAAW,GAGvB,GAAI,GAAO,KAAK,KAChB,EAAK,KAAO,KACZ,EAAK,KAAO,EACR,GACF,GAAK,KAAO,GAGd,KAAK,KAAO,EACP,KAAK,MACR,MAAK,KAAO,GAEd,KAAK,WAGP,EAAQ,UAAU,KAAO,WACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAK,KAAM,UAAU,IAEvB,MAAO,MAAK,QAGd,EAAQ,UAAU,QAAU,WAC1B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAC3C,GAAQ,KAAM,UAAU,IAE1B,MAAO,MAAK,QAGd,EAAQ,UAAU,IAAM,WACtB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,MAAQ,WACxB,GAAI,EAAC,KAAK,MAIV,GAAI,GAAM,KAAK,KAAK,MACpB,YAAK,KAAO,KAAK,KAAK,KACtB,AAAI,KAAK,KACP,KAAK,KAAK,KAAO,KAEjB,KAAK,KAAO,KAEd,KAAK,SACE,IAGT,EAAQ,UAAU,QAAU,SAAU,EAAI,GACxC,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,EAAG,IAAW,KAAM,IACnD,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,eAAiB,SAAU,EAAI,GAC/C,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,KAAM,EAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IACjE,EAAG,KAAK,EAAO,EAAO,MAAO,EAAG,MAChC,EAAS,EAAO,MAIpB,EAAQ,UAAU,IAAM,SAAU,GAChC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,WAAa,SAAU,GACvC,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAG,IAE5D,EAAS,EAAO,KAElB,GAAI,IAAM,GAAK,IAAW,KACxB,MAAO,GAAO,OAIlB,EAAQ,UAAU,IAAM,SAAU,EAAI,GACpC,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,WAAa,SAAU,EAAI,GAC3C,EAAQ,GAAS,KAEjB,OADI,GAAM,GAAI,GACL,EAAS,KAAK,KAAM,IAAW,MACtC,EAAI,KAAK,EAAG,KAAK,EAAO,EAAO,MAAO,OACtC,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAI,GACvC,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,EAAG,IAAW,KAAM,IAC/B,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,cAAgB,SAAU,EAAI,GAC9C,GAAI,GACA,EAAS,KAAK,KAClB,GAAI,UAAU,OAAS,EACrB,EAAM,UACG,KAAK,KACd,EAAS,KAAK,KAAK,KACnB,EAAM,KAAK,KAAK,UAEhB,MAAM,IAAI,WAAU,8CAGtB,OAAS,GAAI,KAAK,OAAS,EAAG,IAAW,KAAM,IAC7C,EAAM,EAAG,EAAK,EAAO,MAAO,GAC5B,EAAS,EAAO,KAGlB,MAAO,IAGT,EAAQ,UAAU,QAAU,WAE1B,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,eAAiB,WAEjC,OADI,GAAM,GAAI,OAAM,KAAK,QAChB,EAAI,EAAG,EAAS,KAAK,KAAM,IAAW,KAAM,IACnD,EAAI,GAAK,EAAO,MAChB,EAAS,EAAO,KAElB,MAAO,IAGT,EAAQ,UAAU,MAAQ,SAAU,EAAM,GACxC,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAM,IAC/D,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAI,IAAK,EAAS,EAAO,KACrD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,aAAe,SAAU,EAAM,GAC/C,EAAK,GAAM,KAAK,OACZ,EAAK,GACP,IAAM,KAAK,QAEb,EAAO,GAAQ,EACX,EAAO,GACT,IAAQ,KAAK,QAEf,GAAI,GAAM,GAAI,GACd,GAAI,EAAK,GAAQ,EAAK,EACpB,MAAO,GAET,AAAI,EAAO,GACT,GAAO,GAEL,EAAK,KAAK,QACZ,GAAK,KAAK,QAEZ,OAAS,GAAI,KAAK,OAAQ,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAI,IACvE,EAAS,EAAO,KAElB,KAAO,IAAW,MAAQ,EAAI,EAAM,IAAK,EAAS,EAAO,KACvD,EAAI,KAAK,EAAO,OAElB,MAAO,IAGT,EAAQ,UAAU,OAAS,SAAU,EAAO,GAC1C,AAAI,EAAQ,KAAK,QACf,GAAQ,KAAK,OAAS,GAEpB,EAAQ,GACV,GAAQ,KAAK,OAAS,GAGxB,OAAS,GAAI,EAAG,EAAS,KAAK,KAAM,IAAW,MAAQ,EAAI,EAAO,IAChE,EAAS,EAAO,KAIlB,OADI,GAAM,GACD,EAAI,EAAG,GAAU,EAAI,EAAa,IACzC,EAAI,KAAK,EAAO,OAChB,EAAS,KAAK,WAAW,GAE3B,AAAI,IAAW,MACb,GAAS,KAAK,MAGZ,IAAW,KAAK,MAAQ,IAAW,KAAK,MAC1C,GAAS,EAAO,MAGlB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IACpC,EAAS,GAAO,KAAM,EAAQ,UAAU,IAE1C,MAAO,IAGT,EAAQ,UAAU,QAAU,WAG1B,OAFI,GAAO,KAAK,KACZ,EAAO,KAAK,KACP,EAAS,EAAM,IAAW,KAAM,EAAS,EAAO,MACvD,GAAI,GAAI,EAAO,KACf,EAAO,KAAO,EAAO,KACrB,EAAO,KAAO,EAEhB,YAAK,KAAO,EACZ,KAAK,KAAO,EACL,MAGT,YAAiB,EAAM,EAAM,GAC3B,GAAI,GAAW,IAAS,EAAK,KAC3B,GAAI,IAAK,EAAO,KAAM,EAAM,GAC5B,GAAI,IAAK,EAAO,EAAM,EAAK,KAAM,GAEnC,MAAI,GAAS,OAAS,MACpB,GAAK,KAAO,GAEV,EAAS,OAAS,MACpB,GAAK,KAAO,GAGd,EAAK,SAEE,EAGT,YAAe,EAAM,GACnB,EAAK,KAAO,GAAI,IAAK,EAAM,EAAK,KAAM,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAkB,EAAM,GACtB,EAAK,KAAO,GAAI,IAAK,EAAM,KAAM,EAAK,KAAM,GACvC,EAAK,MACR,GAAK,KAAO,EAAK,MAEnB,EAAK,SAGP,YAAe,EAAO,EAAM,EAAM,GAChC,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAO,EAAM,EAAM,GAGrC,KAAK,KAAO,EACZ,KAAK,MAAQ,EAEb,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAGd,AAAI,EACF,GAAK,KAAO,KACZ,KAAK,KAAO,GAEZ,KAAK,KAAO,KAIhB,IAEE,AAAQ,KAAiB,SAClB,OCzaT,gCAGA,GAAM,IAAkB,KAElB,GAAM,OAAO,OACb,GAAS,OAAO,UAChB,GAAoB,OAAO,oBAC3B,GAAc,OAAO,cACrB,GAAU,OAAO,UACjB,GAAU,OAAO,WACjB,GAAoB,OAAO,kBAC3B,GAAW,OAAO,WAClB,GAAQ,OAAO,SACf,GAAoB,OAAO,kBAE3B,GAAc,IAAM,EAhB1B,SA2BE,YAAa,GAOX,GANI,MAAO,IAAY,UACrB,GAAU,CAAE,IAAK,IAEd,GACH,GAAU,IAER,EAAQ,KAAQ,OAAO,GAAQ,KAAQ,UAAY,EAAQ,IAAM,GACnE,KAAM,IAAI,WAAU,qCAEtB,GAAM,GAAM,KAAK,IAAO,EAAQ,KAAO,SAEjC,EAAK,EAAQ,QAAU,GAG7B,GAFA,KAAK,IAAsB,MAAO,IAAO,WAAc,GAAc,EACrE,KAAK,IAAe,EAAQ,OAAS,GACjC,EAAQ,QAAU,MAAO,GAAQ,QAAW,SAC9C,KAAM,IAAI,WAAU,2BACtB,KAAK,IAAW,EAAQ,QAAU,EAClC,KAAK,IAAW,EAAQ,QACxB,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,IAAqB,EAAQ,gBAAkB,GACpD,KAAK,WAIH,KAAK,GACP,GAAI,MAAO,IAAO,UAAY,EAAK,EACjC,KAAM,IAAI,WAAU,qCAEtB,KAAK,IAAO,GAAM,SAClB,GAAK,SAEH,OACF,MAAO,MAAK,OAGV,YAAY,GACd,KAAK,IAAe,CAAC,CAAC,KAEpB,cACF,MAAO,MAAK,OAGV,QAAQ,GACV,GAAI,MAAO,IAAO,SAChB,KAAM,IAAI,WAAU,wCAEtB,KAAK,IAAW,EAChB,GAAK,SAEH,UACF,MAAO,MAAK,OAIV,kBAAkB,GACpB,AAAI,MAAO,IAAO,YAChB,GAAK,IAEH,IAAO,KAAK,KACd,MAAK,IAAqB,EAC1B,KAAK,IAAU,EACf,KAAK,IAAU,QAAQ,IACrB,EAAI,OAAS,KAAK,IAAmB,EAAI,MAAO,EAAI,KACpD,KAAK,KAAW,EAAI,UAGxB,GAAK,SAEH,oBAAsB,MAAO,MAAK,OAElC,UAAY,MAAO,MAAK,OACxB,aAAe,MAAO,MAAK,IAAU,OAEzC,SAAU,EAAI,GACZ,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,QAAS,EAAI,GACX,EAAQ,GAAS,KACjB,OAAS,GAAS,KAAK,IAAU,KAAM,IAAW,OAChD,GAAM,GAAO,EAAO,KACpB,GAAY,KAAM,EAAI,EAAQ,GAC9B,EAAS,GAIb,OACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,KAG7C,SACE,MAAO,MAAK,IAAU,UAAU,IAAI,GAAK,EAAE,OAG7C,QACE,AAAI,KAAK,KACL,KAAK,KACL,KAAK,IAAU,QACjB,KAAK,IAAU,QAAQ,GAAO,KAAK,IAAS,EAAI,IAAK,EAAI,QAG3D,KAAK,IAAS,GAAI,KAClB,KAAK,IAAY,GAAI,IACrB,KAAK,IAAU,EAGjB,OACE,MAAO,MAAK,IAAU,IAAI,GACxB,GAAQ,KAAM,GAAO,GAAQ,CAC3B,EAAG,EAAI,IACP,EAAG,EAAI,MACP,EAAG,EAAI,IAAO,GAAI,QAAU,KAC3B,UAAU,OAAO,GAAK,GAG7B,UACE,MAAO,MAAK,IAGd,IAAK,EAAK,EAAO,GAGf,GAFA,EAAS,GAAU,KAAK,IAEpB,GAAU,MAAO,IAAW,SAC9B,KAAM,IAAI,WAAU,2BAEtB,GAAM,GAAM,EAAS,KAAK,MAAQ,EAC5B,EAAM,KAAK,IAAmB,EAAO,GAE3C,GAAI,KAAK,IAAO,IAAI,IAClB,GAAI,EAAM,KAAK,IACb,UAAI,KAAM,KAAK,IAAO,IAAI,IACnB,GAIT,GAAM,GAAO,AADA,KAAK,IAAO,IAAI,GACX,MAIlB,MAAI,MAAK,KACF,MAAK,KACR,KAAK,IAAS,EAAK,EAAK,QAG5B,EAAK,IAAM,EACX,EAAK,OAAS,EACd,EAAK,MAAQ,EACb,KAAK,KAAW,EAAM,EAAK,OAC3B,EAAK,OAAS,EACd,KAAK,IAAI,GACT,GAAK,MACE,GAGT,GAAM,GAAM,GAAI,IAAM,EAAK,EAAO,EAAK,EAAK,GAG5C,MAAI,GAAI,OAAS,KAAK,IAChB,MAAK,KACP,KAAK,IAAS,EAAK,GAEd,IAGT,MAAK,KAAW,EAAI,OACpB,KAAK,IAAU,QAAQ,GACvB,KAAK,IAAO,IAAI,EAAK,KAAK,IAAU,MACpC,GAAK,MACE,IAGT,IAAK,GACH,GAAI,CAAC,KAAK,IAAO,IAAI,GAAM,MAAO,GAClC,GAAM,GAAM,KAAK,IAAO,IAAI,GAAK,MACjC,MAAO,CAAC,GAAQ,KAAM,GAGxB,IAAK,GACH,MAAO,IAAI,KAAM,EAAK,IAGxB,KAAM,GACJ,MAAO,IAAI,KAAM,EAAK,IAGxB,MACE,GAAM,GAAO,KAAK,IAAU,KAC5B,MAAK,GAGL,IAAI,KAAM,GACH,EAAK,OAHH,KAMX,IAAK,GACH,GAAI,KAAM,KAAK,IAAO,IAAI,IAG5B,KAAM,GAEJ,KAAK,QAEL,GAAM,GAAM,KAAK,MAEjB,OAAS,GAAI,EAAI,OAAS,EAAG,GAAK,EAAG,KACnC,GAAM,GAAM,EAAI,GACV,EAAY,EAAI,GAAK,EAC3B,GAAI,IAAc,EAEhB,KAAK,IAAI,EAAI,EAAG,EAAI,QAEpB,GAAM,GAAS,EAAY,EAE3B,AAAI,EAAS,GACX,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,KAM/B,QACE,KAAK,IAAO,QAAQ,CAAC,EAAO,IAAQ,GAAI,KAAM,EAAK,OAIjD,GAAM,CAAC,EAAM,EAAK,KACtB,GAAM,GAAO,EAAK,IAAO,IAAI,GAC7B,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,GAAI,GAAQ,EAAM,IAEhB,GADA,GAAI,EAAM,GACN,CAAC,EAAK,IACR,WAEF,AAAI,IACE,GAAK,KACP,GAAK,MAAM,IAAM,KAAK,OACxB,EAAK,IAAU,YAAY,IAG/B,MAAO,GAAI,QAIT,GAAU,CAAC,EAAM,KACrB,GAAI,CAAC,GAAQ,CAAC,EAAI,QAAU,CAAC,EAAK,IAChC,MAAO,GAET,GAAM,GAAO,KAAK,MAAQ,EAAI,IAC9B,MAAO,GAAI,OAAS,EAAO,EAAI,OAC3B,EAAK,KAAa,EAAO,EAAK,KAG9B,GAAO,IACX,GAAI,EAAK,IAAU,EAAK,IACtB,OAAS,GAAS,EAAK,IAAU,KAC/B,EAAK,IAAU,EAAK,KAAQ,IAAW,OAIvC,GAAM,GAAO,EAAO,KACpB,GAAI,EAAM,GACV,EAAS,IAKT,GAAM,CAAC,EAAM,KACjB,GAAI,GACF,GAAM,GAAM,EAAK,MACjB,AAAI,EAAK,KACP,EAAK,IAAS,EAAI,IAAK,EAAI,OAE7B,EAAK,KAAW,EAAI,OACpB,EAAK,IAAO,OAAO,EAAI,KACvB,EAAK,IAAU,WAAW,KApT9B,SAyTE,YAAa,EAAK,EAAO,EAAQ,EAAK,GACpC,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,OAAS,GAAU,IAItB,GAAc,CAAC,EAAM,EAAI,EAAM,KACnC,GAAI,GAAM,EAAK,MACf,AAAI,GAAQ,EAAM,IAChB,IAAI,EAAM,GACL,EAAK,KACR,GAAM,SAEN,GACF,EAAG,KAAK,EAAO,EAAI,MAAO,EAAI,IAAK,IAGvC,GAAO,QAAU,KC7UjB,mBACA,GAAI,IAAkB,KAEtB,YAAe,EAAI,GACjB,WAAa,EAAS,GACpB,GAAI,GAAU,GAAQ,GAClB,EAAK,GAAQ,UAAU,GAO3B,WAAc,GACZ,EAAO,GAAO,GAAI,OAAM,YAG1B,WAAiB,EAAK,GACpB,GAAI,EAAI,MACN,EAAK,GACL,OAGF,AAAK,EAAG,MAAM,GAEH,EAAQ,SACjB,EAAQ,QAAQ,EAAK,GAFrB,EAAO,EAAG,aAMd,WAAoB,GAClB,GAAI,GAEJ,IACE,EAAM,EAAG,EAAM,SACR,GACP,EAAQ,EAAK,GACb,OAGF,QAAQ,QAAQ,GACb,KAAK,GACL,MAAM,SAAiB,GACtB,EAAQ,EAAK,KAInB,EAAG,QAAQ,GAGb,MAAO,IAAI,SAAQ,GAGrB,GAAO,QAAU,KCrDjB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,YAAkB,EAAM,GACpB,MAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,EAAS,SAAS,EAAM,CAAE,IAAK,IAAQ,CAAC,EAAK,KACzC,GAAI,EACA,MAAO,GAAO,GAClB,EAAQ,OAIpB,GAAQ,QAAU,KCXlB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,YAAkB,EAAM,GACpB,MAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,EAAS,SAAS,EAAM,CAAE,IAAK,IAAQ,CAAC,EAAK,KACzC,GAAI,EACA,MAAO,GAAO,GAClB,EAAQ,OAIpB,GAAQ,QAAU,KCXlB,2BACA,GAAI,IAAmB,IAAQ,GAAK,iBAAoB,SAAU,GAC9D,MAAQ,IAAO,EAAI,WAAc,EAAM,CAAE,QAAW,IAExD,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,GAAM,IAAQ,GAAwB,gBAChC,GAAc,GAAwB,MACtC,GAAgB,GAAwB,MACxC,GAAa,GAAwB,MACrC,GAAa,GAAwB,MACrC,GAAa,CAAE,IAAK,KACtB,GACA,GACJ,KACA,kBAA0B,EAAM,EAAU,IACtC,GAAM,CAAE,OAAO,GAAO,mBAAmB,IAAK,eAAe,GAAO,YAAY,CAAE,WAAY,GAAI,QAAS,EAAG,OAAQ,GAAK,WAAW,GAAM,SAAY,EAClJ,CAAE,QAAO,WAAY,EACrB,CAAE,MAAO,GAAQ,QAAS,GAAW,SACrC,CAAE,MAAO,GAAQ,QAAS,GAAW,SAC3C,GAAI,EACA,EAAM,IAAI,QAGV,GAAM,GAAK,EAAM,IAAI,GACrB,GAAI,EACA,MAAO,MAAM,GAErB,GAAM,GAAK,WACP,GAAM,GAAM,KAAM,IAAc,QAAQ,IAAM,EAAQ,EAAM,GAAW,GACjE,EAAM,EAAI,KAAK,MAAM,KAAK,SAAW,EAAI,SACzC,EAAM,KAAK,IAAI,EAAI,IAAK,GAC9B,SAAM,IAAI,EAAM,EAAI,QAAS,EAAM,KAC5B,EAAI,YAEf,SAAM,IAAI,EAAM,EAAG,KACZ,EAEX,GAAQ,QAAU,GAClB,cACI,GAAS,GAAI,IAAY,QAAQ,IACjC,GAAS,GAAI,IAAY,QAAQ,IAErC,GAAQ,WAAa,KC1CrB,2BACA,OAAO,eAAe,GAAS,aAAc,CAAE,MAAO,KACtD,GAAI,IAAwB,KAC5B,GAAQ,QAAU,GAAc,UCHhC,cACA,GAAQ,aAAe,OAAO,kBCD9B,sBAAM,CAAE,SAAiB,eACnB,CAAE,UAAQ,UAAkB,eAC5B,GAAU,AAAQ,KAA4B,QAC9C,CAAE,iBAAyB,KAEjC,GAAO,QAAU,GAEjB,GAAM,IAAa,GAAO,GAAI,IAAO,IAAO,EAE5C,YAAe,GACb,AAAK,GACH,GAAgB,MAElB,GAAM,CAAE,WAAY,EAEpB,iBAA8B,EAAK,GACjC,GAAM,GAAS,GAAM,GACf,EAAe,EAAO,KAE5B,AAAI,AADO,GAAK,EAAO,YACZ,GACJ,IAAM,GAAO,IAClB,EAAK,QAAU,GAAI,GAAQ,EAAK,SAC3B,EAAK,QAAQ,IAAI,SACpB,EAAK,QAAQ,IAAI,OAAQ,EAAO,MAElC,EAAK,SAAW,SAChB,EAAO,KAAO,KAAM,IAAQ,EAAO,UAC/B,EAAO,MACT,GAAO,MAAQ,IAAI,EAAO,QAE5B,EAAM,GAAO,IAEf,GAAM,GAAM,KAAM,GAAM,EAAK,GAU7B,GAPA,EAAI,IAAgB,EACpB,OAAO,eAAe,EAAK,MAAO,CAChC,MACE,MAAO,GAAO,QAId,GAAW,EAAI,SACjB,GAAM,GAAe,OAAO,OAAO,GAAI,GACvC,EAAa,QAAU,GAAI,GAAQ,EAAK,SAKtC,GAAI,SAAW,KACb,GAAI,SAAW,KAAO,EAAI,SAAW,MAAQ,EAAK,SAAW,SAE/D,GAAa,OAAS,MACtB,EAAa,KAAO,KACpB,EAAa,QAAQ,OAAO,mBAM9B,GAAM,GAAW,EAAI,QAAQ,IAAI,YAC3B,EAAiB,GAAM,GAC7B,MAAI,GAAe,OAAS,EAAO,MACjC,GAAe,KAAO,GAExB,EAAa,QAAQ,IAAI,OAAQ,EAAe,MAE5C,EAAK,YACP,EAAK,WAAW,EAAK,GAGhB,EAAe,GAAO,GAAiB,GAEhD,MAAO,GAGT,OAAW,KAAO,QAAO,KAAK,GAC5B,EAAe,GAAO,EAAM,GAG9B,SAAe,QAAU,EAElB,KClFT,sBAAM,CAAC,MAAO,IAAoB,eAC5B,GAAoB,KACpB,GAAQ,AAAQ,KAAS,iBACzB,GAA0B,KAC1B,GAA8B,KAC9B,GAAoB,eAEpB,CAAC,eAAc,GACf,CAAC,oBAAmB,GAEpB,GAAgB,CACrB,WAAY,IACZ,eAAgB,GAChB,QAAS,IACT,kBAAmB,IACnB,2BAA4B,KAGzB,GACA,GAEJ,YAAmC,GAClC,MAAQ,IACP,IACC,IAAM,mBAAoB,GAAI,IAAU,IAG3C,YAAoC,GACnC,MAAQ,IACP,IACC,IAAM,oBAAqB,GAAI,IAAW,IAG7C,YAAkB,EAAK,GACtB,MAAO,SAAS,KAAK,GAClB,GAA2B,GAC3B,GAA0B,GAG9B,YAA0B,EAAO,EAAY,IAC5C,MAAO,gBAA2B,EAAK,EAAO,IAC7C,AAAK,EAAK,OAET,GAAK,MAAQ,GAAS,EAAK,CAAC,oBAAkB,KAG/C,EAAK,SAAW,SAChB,EAAK,QAAU,GAAI,GAAM,QAAQ,EAAK,SAEtC,EAAK,QAAQ,IACZ,OACA,EAAK,QAAQ,IAAI,SAAW,GAAS,GAAK,MAK1C,EAAK,MACL,CAAE,GAAK,eAAgB,MACvB,MAAO,GAAK,MAAS,UACrB,CAAC,OAAO,SAAS,EAAK,OAEtB,GAAK,KAAO,KAAK,UAAU,EAAK,MAChC,EAAK,QAAQ,IAAI,eAAgB,oBACjC,EAAK,QAAQ,IAAI,iBAAkB,OAAO,WAAW,EAAK,QAI3D,EAAK,WAAa,CAAC,EAAK,KACvB,EAAa,MAAQ,GAAS,EAAI,QAAQ,IAAI,cAG/C,IACC,UAAM,QAAS,EAAK,QAAU,MAAO,GAC9B,KAAM,GAAM,EAAK,SAChB,GACR,QAAI,IAAM,EACV,EAAI,KAAO,EACL,IAKT,YAAe,EAAO,GACrB,AAAK,GACJ,GAAgB,MAGjB,GAAM,GAAK,EAAM,QAOjB,GANI,GAGH,GAAQ,OAAO,OAAO,IAAI,IAAS,EAAG,GAAG,GAAO,EAAI,IAGjD,MAAO,IAAU,WACpB,KAAM,IAAI,OACT,gGAIF,SAAQ,GAAoB,GAC5B,EAAQ,GAAgB,GACxB,EAAQ,GAAiB,EAAO,GACzB,EAGR,GAAO,QAAU,KC1GjB,sBAAO,QAAU,GACjB,GAAM,KAAO,GAEb,GAAI,IAAa,cAEjB,YAAuB,EAAM,GAC3B,GAAI,GAAU,EAAQ,UAAY,OAChC,EAAQ,QAAU,QAAQ,IAAI,QAOhC,GALI,CAAC,GAIL,GAAU,EAAQ,MAAM,KACpB,EAAQ,QAAQ,MAAQ,IAC1B,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAI,GAAI,EAAQ,GAAG,cACnB,GAAI,GAAK,EAAK,OAAO,CAAC,EAAE,QAAQ,gBAAkB,EAChD,MAAO,GAGX,MAAO,GAGT,YAAoB,EAAM,EAAM,GAC9B,MAAI,CAAC,EAAK,kBAAoB,CAAC,EAAK,SAC3B,GAEF,GAAa,EAAM,GAG5B,YAAgB,EAAM,EAAS,GAC7B,GAAG,KAAK,EAAM,SAAU,EAAI,GAC1B,EAAG,EAAI,EAAK,GAAQ,GAAU,EAAM,EAAM,MAI9C,YAAe,EAAM,GACnB,MAAO,IAAU,GAAG,SAAS,GAAO,EAAM,MCxC5C,sBAAO,QAAU,GACjB,GAAM,KAAO,GAEb,GAAI,IAAa,cAEjB,YAAgB,EAAM,EAAS,GAC7B,GAAG,KAAK,EAAM,SAAU,EAAI,GAC1B,EAAG,EAAI,EAAK,GAAQ,GAAU,EAAM,MAIxC,YAAe,EAAM,GACnB,MAAO,IAAU,GAAG,SAAS,GAAO,GAGtC,YAAoB,EAAM,GACxB,MAAO,GAAK,UAAY,GAAU,EAAM,GAG1C,YAAoB,EAAM,GACxB,GAAI,GAAM,EAAK,KACX,EAAM,EAAK,IACX,EAAM,EAAK,IAEX,EAAQ,EAAQ,MAAQ,OAC1B,EAAQ,IAAM,QAAQ,QAAU,QAAQ,SACtC,EAAQ,EAAQ,MAAQ,OAC1B,EAAQ,IAAM,QAAQ,QAAU,QAAQ,SAEtC,EAAI,SAAS,MAAO,GACpB,EAAI,SAAS,MAAO,GACpB,EAAI,SAAS,MAAO,GACpB,EAAK,EAAI,EAET,EAAO,EAAM,GACd,EAAM,GAAM,IAAQ,GACpB,EAAM,GAAM,IAAQ,GACpB,EAAM,GAAO,IAAU,EAE1B,MAAO,MCvCT,sBAAI,IAAa,cACb,GACJ,AAAI,QAAQ,WAAa,SAAW,OAAO,gBACzC,GAAe,KAEf,GAAe,KAGjB,GAAO,QAAU,GACjB,GAAM,KAAO,GAEb,YAAgB,EAAM,EAAS,GAM7B,GALI,MAAO,IAAY,YACrB,GAAK,EACL,EAAU,IAGR,CAAC,GACH,GAAI,MAAO,UAAY,WACrB,KAAM,IAAI,WAAU,yBAGtB,MAAO,IAAI,SAAQ,SAAU,EAAS,GACpC,GAAM,EAAM,GAAW,GAAI,SAAU,EAAI,GACvC,AAAI,EACF,EAAO,GAEP,EAAQ,OAMhB,GAAK,EAAM,GAAW,GAAI,SAAU,EAAI,GAEtC,AAAI,GACE,GAAG,OAAS,UAAY,GAAW,EAAQ,eAC7C,GAAK,KACL,EAAK,IAGT,EAAG,EAAI,KAIX,YAAe,EAAM,GAEnB,IACE,MAAO,IAAK,KAAK,EAAM,GAAW,UAC3B,GACP,GAAI,GAAW,EAAQ,cAAgB,EAAG,OAAS,SACjD,MAAO,GAEP,KAAM,OCrDZ,sBAAM,IAAY,QAAQ,WAAa,SACnC,QAAQ,IAAI,SAAW,UACvB,QAAQ,IAAI,SAAW,OAErB,GAAe,gBACf,GAAQ,GAAY,IAAM,IAC1B,GAAgB,KAEhB,GAAmB,AAAC,GACxB,OAAO,OAAO,GAAI,OAAM,cAAc,KAAQ,CAAE,KAAM,WAElD,GAAc,CAAC,EAAK,KACxB,GAAM,GAAQ,EAAI,OAAS,GAIrB,EAAU,EAAI,MAAM,OAAS,IAAa,EAAI,MAAM,MAAQ,CAAC,IAE/D,CAEE,GAAI,GAAY,CAAC,QAAQ,OAAS,GAClC,GAAI,GAAI,MAAQ,QAAQ,IAAI,MACe,IAAI,MAAM,IAGrD,EAAa,GACf,EAAI,SAAW,QAAQ,IAAI,SAAW,sBACtC,GACE,EAAU,GAAY,EAAW,MAAM,GAAS,CAAC,IAEvD,MAAI,KACE,EAAI,QAAQ,OAAS,IAAM,EAAQ,KAAO,IAC5C,EAAQ,QAAQ,IAGb,CACL,UACA,UACA,eAIE,GAAQ,CAAC,EAAK,EAAK,KACvB,AAAI,MAAO,IAAQ,YACjB,GAAK,EACL,EAAM,IAEH,GACH,GAAM,IAER,GAAM,CAAE,UAAS,UAAS,cAAe,GAAY,EAAK,GACpD,EAAQ,GAER,EAAO,GAAK,GAAI,SAAQ,CAAC,EAAS,KACtC,GAAI,IAAM,EAAQ,OAChB,MAAO,GAAI,KAAO,EAAM,OAAS,EAAQ,GACrC,EAAO,GAAiB,IAE9B,GAAM,GAAQ,EAAQ,GAChB,EAAW,SAAS,KAAK,GAAS,EAAM,MAAM,EAAG,IAAM,EAEvD,EAAO,GAAK,KAAK,EAAU,GAC3B,EAAI,CAAC,GAAY,YAAY,KAAK,GAAO,EAAI,MAAM,EAAG,GAAK,EAC7D,EAEJ,EAAQ,EAAQ,EAAG,EAAG,MAGlB,EAAU,CAAC,EAAG,EAAG,IAAO,GAAI,SAAQ,CAAC,EAAS,KAClD,GAAI,IAAO,EAAQ,OACjB,MAAO,GAAQ,EAAK,EAAI,IAC1B,GAAM,GAAM,EAAQ,GACpB,GAAM,EAAI,EAAK,CAAE,QAAS,GAAc,CAAC,EAAI,KAC3C,GAAI,CAAC,GAAM,EACT,GAAI,EAAI,IACN,EAAM,KAAK,EAAI,OAEf,OAAO,GAAQ,EAAI,GAEvB,MAAO,GAAQ,EAAQ,EAAG,EAAG,EAAK,QAItC,MAAO,GAAK,EAAK,GAAG,KAAK,GAAO,EAAG,KAAM,GAAM,GAAM,EAAK,IAGtD,GAAY,CAAC,EAAK,KACtB,EAAM,GAAO,GAEb,GAAM,CAAE,UAAS,UAAS,cAAe,GAAY,EAAK,GACpD,EAAQ,GAEd,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAQ,EAAQ,GAChB,EAAW,SAAS,KAAK,GAAS,EAAM,MAAM,EAAG,IAAM,EAEvD,EAAO,GAAK,KAAK,EAAU,GAC3B,EAAI,CAAC,GAAY,YAAY,KAAK,GAAO,EAAI,MAAM,EAAG,GAAK,EAC7D,EAEJ,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,KAClC,GAAM,GAAM,EAAI,EAAQ,GACxB,IAEE,GADW,GAAM,KAAK,EAAK,CAAE,QAAS,IAEpC,GAAI,EAAI,IACN,EAAM,KAAK,OAEX,OAAO,SAEJ,MAIb,GAAI,EAAI,KAAO,EAAM,OACnB,MAAO,GAET,GAAI,EAAI,QACN,MAAO,MAET,KAAM,IAAiB,IAGzB,GAAO,QAAU,GACjB,GAAM,KAAO,KC5Hb,mBAuBA,GAAM,IAAa,cACb,GAAe,gBAErB,YAAc,GACZ,QAAQ,IAAI,mBAAmB,KAGjC,GAAM,IAAU;AAAA,EACV,GAAiB,gCACjB,GAAc,OACd,GAAiB,aAGvB,YAAgB,EAA4B,GAC1C,GAAM,GAAQ,QAAQ,GAAW,EAAQ,OACnC,EAAM,GAGZ,SAAI,WAAW,MAAM,IAAgB,QAAQ,SAAU,EAAM,GAE3D,GAAM,GAAc,EAAK,MAAM,IAE/B,GAAI,GAAe,MACjB,GAAM,GAAM,EAAY,GAEpB,EAAO,EAAY,IAAM,GACvB,EAAM,EAAI,OAAS,EACnB,EAAiB,EAAI,KAAO,KAAO,EAAI,KAAS,IAItD,AAAI,AAHmB,EAAI,KAAO,KAAO,EAAI,KAAS,KAGhC,EACpB,GAAM,EAAI,UAAU,EAAG,GAGnB,GACF,GAAM,EAAI,QAAQ,GAAa,MAIjC,EAAM,EAAI,OAGZ,EAAI,GAAO,MACN,AAAI,IACT,GAAI,iDAAiD,EAAM,MAAM,OAI9D,EAIT,YAAiB,GACf,GAAI,GAAa,GAAK,QAAQ,QAAQ,MAAO,QACzC,EAAyB,OACzB,EAAQ,GAEZ,AAAI,GACE,GAAQ,MAAQ,MAClB,GAAa,EAAQ,MAEnB,EAAQ,UAAY,MACtB,GAAW,EAAQ,UAEjB,EAAQ,OAAS,MACnB,GAAQ,KAIZ,IAEE,GAAM,GAAS,GAAM,GAAG,aAAa,EAAY,CAAE,aAAa,CAAE,UAElE,cAAO,KAAK,GAAQ,QAAQ,SAAU,GACpC,AAAK,OAAO,UAAU,eAAe,KAAK,QAAQ,IAAK,GAE5C,GACT,GAAI,IAAI,wEAFR,QAAQ,IAAI,GAAO,EAAO,KAMvB,CAAE,gBACF,GACP,MAAO,CAAE,MAAO,IAIpB,GAAO,QAAQ,OAAS,GACxB,GAAO,QAAQ,MAAQ,2YCjGvB,QAAQ,IAEgE,GAC1D,GAAA,OAAA,OAAA,OAAA,YAEb,MAAO,IAAI,SAAW,CAAC,EAAmD,KAEzE,GAAI,GAAA,GACA,EAAwB,EACxB,EAA0B,GAExB,EAAyD,IAEzD,GAEJ,GAAA,GACA,EAAQ,KAMJ,EAAyC,IAE9C,EAAiB,KAAK,GAElB,EAAiB,QAAU,GAAe,EAAO,IAItD,OAAS,KAAS,GAIjB,GAFA,IAAA,AAEK,EAAc,OAFnB,QAIC,GAAI,GACH,EAID,AAFA,EAAiB,KAAM,GAAuC,EAAY,IAAA,AAErE,EAAc,QAFuD,QAIvB,EAErC,MAAO,GAAsB,EAAe,q0EC1D9D,OAAyB,6BACzB,GAAe,kBACf,GAAkB,SAClB,GAAiB,SACjB,GAAiB,oBCNjB,wBACE,MAAI,kBAAQ,IAAI,eAAZ,cAA0B,SAA1B,cAAkC,SAAlC,OAA4C,GACvC,QAAQ,IAAI,aAAa,OAezB,KAGX,GAAI,IACG,cACL,MAAI,OAAO,KAAiB,aAC1B,IAAe,MAGV,GDlBT,OAAgB,SAChB,GAAgB,SEThB,OAAwB,SACxB,GAA0B,SAEb,GAAQ,WAAc,IFQnC,OAAkB,SAClB,GAAmB,SAGnB,GAAmB,SAEb,GAAe,WAAK,KAAK,UAAW,UACpC,GAA0B,WAAK,KAAK,UAAW,oBAC/C,GAAuB,WAAK,KAAK,UAAW,iBAElD,YAA2B,GACzB,MAAO,IAAI,SAAQ,CAAC,EAAS,IAAW,WAAW,EAAS,IAY9D,GAAI,IAAU,GAER,GACJ,QAAQ,WAAa,QACjB,WAAK,KAAK,QAAQ,IAAI,UAAW,QAAQ,IAAI,UAC7C,QAAQ,IAAI,KAEZ,GAAoB,WAAK,KAAK,GAAM,aAEtC,GAAe,CAAC,OAAQ,OAAQ,gBAAiB,MAAO,MAExD,GAAa,GAEb,GAAc,QAAQ,IACtB,GAAkB,IAAI,KACxB,AAAI,IACJ,QAAQ,MAAM,GAAG,IAKnB,GAAI,CAAC,WAAG,QACN,GAAM,GAAiB,KACvB,WAAG,OAAS,CAAC,EAAc,KAEzB,GAAI,IAAS,KACT,IAAS,gBACb,MAAO,GAAO,KAAK,IAIvB,kBAA2B,EAAS,GAjEpC,MAkEE,GAAI,GACF,CAAC,GAAW,IAAY,OAAS,QAAQ,IAAI,OAAS,EAExD,GAAI,CAAC,kBAAc,OAAO,QACxB,OAAS,KAAU,IACjB,IACE,EAAe,KAAM,YAAM,GACvB,GAAa,SAAS,SAAW,EAAa,SAAS,UACzD,GAAe,IAAM,EAAe,KAEtC,YACO,IAIb,MAAI,EAAC,GAAgB,CAAC,qBAAc,SAAd,cAAsB,UACrC,IACH,QAAQ,KACN,wFAEJ,EAAe,QAGV,EAGT,GAAM,IAAgB,WAAG,WAAW,IAEpC,AAAI,MAAO,SAAQ,KAAQ,YACjB,KAGV,GAAK,IAAL,UAAK,GACH,2CACA,2CACA,2BAHG,aAML,GAAM,IAAe,CACnB,QAAS,GACT,QAAS,GAIX,YAAuB,GACrB,MAAI,GAAC,EAAI,SAAS,KAAuB,CAAC,EAAI,SAAS,WAOzD,kBAAyC,GACvC,GAAI,GAAO,EAAI,QAAQ,WAAW,KAAsB,IAClD,CAAC,EAAI,EAAO,EAAM,EAAG,GAAiB,EAAK,MAAM,KAEjD,EAAS,WAAW,YAA2B,KAAS,WAAc,IAEtE,EAAS,KAAM,IAAY,GACjC,AAAK,EAAO,IACV,SAAQ,MACN,yCACA,EAAO,OACP;AAAA,EACA,KAAM,GAAO,QAEf,QAAQ,QAGV,GAAM,GAAO,KAAM,GAAO,OAEpB,CAAE,QAAO,OAAQ,EAAK,KAC5B,MAAO,CAAC,EAAM,MAAM,KAAK,GAAI,EAAM,GAGrC,kBAAiC,EAAe,GA7IhD,MA8IE,GAAM,GAAS,WAAW,YAA2B,KAAS,IAC9D,AAAI,QAAQ,IAAI,SACd,QAAQ,IAAI,2DAEd,GAAM,GAAS,KAAM,IAAY,GACjC,MAAK,GAAO,IACV,SAAQ,MACN,mCACA,EAAO,OACP;AAAA,EACA,KAAM,GAAO,QAEf,QAAQ,QAKH,GAFM,MAAM,GAAO,QAEd,iBAAL,OAAuB,OAGhC,GAAI,IAAY,GAEZ,GAGJ,GAAI,IAEE,GAAiB,CACrB,SAAU,UAEP,GAAL,UAAK,GACH,YAAU,GAAV,UACA,WAAS,GAAT,SACA,YAAU,GAAV,UACA,QAAM,GAAN,QAJG,aAOL,YAAqB,GACnB,GAAM,GAAQ,KACd,MAAI,IAAS,CAAC,GAAe,SAC3B,IAAe,QAAU,CAAE,cAAe,UAAU,MAE/C,GAAM,EAAK,IAGpB,eACA,GAAI,IAAa,EACb,GAAkB,GACtB,cA9LA,QA+LE,GAAI,GAAa,GAGjB,GAFA,GAAU,GAEN,CAAC,IAAa,CAAC,IAAc,GAC/B,IACE,aAAQ,iBACR,GAAS,KACT,GAAY,SACL,IAGX,GAAI,oBAAU,OACR,CAAC,GAAS,KAAK,cACjB,IACE,GAAS,KAAK,KAAO,GACrB,GAAS,KAAK,cACP,IAIb,GAAI,oBAAU,WAAY,GAAa,UAAY,GAC7C,GAAS,SAAS,UACpB,IACE,GAAS,SAAS,OAClB,GAAS,SAAS,mBACX,IAIb,GAAI,CAAC,IAAc,uBAAU,cAAV,cAAuB,SAAU,GAAa,IAE/D,GAAI,QAAQ,WAAa,QACvB,IACE,WAAO,KAAK,GAAS,YAAc,SACnC,WAAO,KAAK,GAAS,mBACd,GACP,AAAI,QAAQ,IAAI,SAAS,QAAQ,MAAM,OAGzC,KACE,WAAO,KAAK,GAAS,mBACd,GACP,AAAI,QAAQ,IAAI,SAAS,QAAQ,MAAM,GAI3C,GAAI,WAAG,WAAW,GAAS,cACzB,WAAW,GAAQ,IACf,QAAQ,IAAI,SACd,QAAQ,IAAI,oCAAoC,SAElD,KACA,QAIJ,AACE,CAAC,IACD,uBAAU,cAAV,cAAuB,SACvB,CAAC,WAAG,WAAW,GAAS,cACxB,CAAC,IAED,IAAS,SAAW,KACpB,GAAS,IAAI,iCACb,GAAkB,IAGpB,QAAQ,YAAc,GACtB,QAAQ,OAGV,QAAQ,KAAK,SAAU,IAtQvB,2BA8QE,gBAAyB,EAQzB,eAAY,GAiDZ,cAAsC,KA2BtC,oBAAiB,GAzFjB,IAAI,GACF,AAAI,KAAK,aAAe,GAAkB,KAAK,UAC/C,QAAQ,IAAI,QAYR,iBACJ,EACA,EACA,EACA,EACA,GAEA,GAAM,GAAM,+BAA+B,KAAS,KAAQ,KAC1D,GAAY,cAGR,EAAO,KAAM,IAAM,EAAK,CAC5B,SAAU,WAIZ,GAAI,CAAC,EAAK,IAAM,EAAK,SAAW,IAC9B,MAAO,GAGT,GAAI,GAAS,OAEb,GAAM,GAAO,KAAM,GAAK,OAExB,GAAI,EAAK,OAAO,OAGd,MAFI,KACJ,MAAM,YAAG,SAAS,MAAM,WAAK,QAAQ,GAAc,CAAE,UAAW,KAC5D,IAAS,OACb,MAAM,YAAG,SAAS,UAAU,EAAa,EAAM,QACxC,IAGT,KAAM,OAER,eACE,EACA,EACA,EACA,EACA,EACA,GAEA,MAAO,SAAQ,IAAI,CACjB,KAAK,gBAAgB,EAAM,EAAO,EAAU,EAAK,GACjD,KAAK,gBAAgB,EAAM,EAAO,EAAU,EAAU,KAM1D,OAAO,GAEL,GAAM,GAAkB,QAAQ,YAChC,QAAQ,YAAc,OACtB,GAAM,CAAE,aAAsB,AAAR,QAAQ,IAC9B,eAAQ,YAAc,EAEf,EAAU,QAGb,QAAO,GACX,GAAM,GAAW,KAAM,IAAY,GACnC,GAAI,EAAS,GACX,MAAO,GAAS,KACX,GAAI,EAAS,SAAW,KAAO,EAAS,SAAW,KACxD,GAAM,GAAQ,iCAAiC,EAAS;AAAA,EAC5D,KAAM,GAAS;AAAA;AAAA,6HAGX,cAAQ,MAAM,GACR,MAEN,MAAM,MAAM,GAAS,OAOzB,MAAM,EAAO,EAAM,EAAK,EAAU,GAChC,MAAO,IAAI,SAAQ,CAAC,EAAU,KAC5B,KAAK,oBAAsB,GAAI,SAAQ,CAAC,EAAU,KAChD,KAAK,aAAe,GAAI,SAAQ,MAAO,EAAS,KAC9C,GAAM,GAAU,KAAM,MAAK,WACzB,WAAW,YAA2B,KAAS,aAAgB,IAC/D,WAAW,YAA2B,KAAS,aAAgB,KAEjE,IAEA,KAAK,IAAI,kDACT,EAAQ,KACL,KAAK,KAAO,WAAI,EAAE,CACjB,IAAK,EACL,MAAO,EACP,mBAAoB,GACpB,QAAS,MAMb,EAAQ,GAAG,MAAO,KAChB,AAAI,IACJ,MAAK,IAAI,8CACT,IACA,OAEF,EAAQ,GAAG,QAAS,AAAC,IACnB,AAAI,IAAa,IAEjB,MAAK,IAAI,4CACT,EAAO,GACP,EAAQ,YAOlB,MAAM,EAAgB,GACpB,GAAM,GAAM,uDAAuD,KAAU,IAC7E,YAAK,IAAI,WAAW,uBACb,GAAI,SAAQ,CAAC,EAAS,KAC3B,GAAM,GAAQ,WAAa,KAAK,EAAK,IACrC,EAAM,OAAO,KAAK,QAAQ,QAC1B,EAAM,KAAK,QAAS,KAClB,MAGF,EAAM,KAAK,OAAQ,KACjB,MAGF,EAAM,KAAK,QAAS,AAAC,IACnB,EAAO,OAKb,QAlaF,cAojBI,MAjJY,YACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAcF,YAAQ,IAAI,SAAZ,cAAoB,QAAS,QAAQ,IAAI,OAAS;AAAA,gCAEtB,GAAa,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA8BrC,YAAQ,IAAI,SAAZ,cAAoB,QAAS,QAAQ,IAAI,OAAS;AAAA,mBAE3D,YAAQ,IAAI,eAAZ,cAA0B,QACtB,GAAI,OAAM,QAAQ,IAAI,aAAa,QAAQ,KAAK,KAAK,KAAK,IAC1D;AAAA,yBAGJ,YAAQ,IAAI,qBAAZ,cAAgC,QAC5B,QAAQ,IAAI,mBACZ;AAAA,wBAGJ,YAAQ,IAAI,oBAAZ,cAA+B,QAC3B,QAAQ,IAAI,kBACZ;AAAA,UAEE,GAAgB,SAAM,YAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrC,OACI,CACE,MAAO,CACL,WAAY,CACV,KAAM,UACN,QAAS,IAEX,SAAU,CACR,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,6BAEf,QAAS,CACP,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,2BAEf,IAAK,CACH,KAAM,SACN,QAAS,GACT,MAAO,IACP,YACE,gFAEJ,OAAQ,CACN,KAAM,SACN,QAAS,GACT,MAAO,IACP,YAAa,mCAEf,cAAe,CACb,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,wBAEf,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,YAAa,wCAEf,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,YACE,2HAEJ,KAAM,CACJ,KAAM,UACN,QAAS,GACT,MAAO,IACP,WAAY,IAEd,QAAS,CACP,KAAM,UACN,QAAS,GACT,MAAO,IACP,WAAY,IAEd,OAAQ,CACN,KAAM,SACN,WAAY,GACZ,WAAY,GACZ,QAAS,OACT,MAAO,IACP,YAAa,iKASjB,YAAW,EAAgB,GAC/B,GAAI,GACJ,IACE,EAAU,KAAM,MAAK,OAAO,SACrB,GACP,IACE,KAAK,eAAiB,GACtB,EAAU,KAAM,MAAK,OAAO,SACrB,GACP,GAAI,GAAS,OACb,QAAQ,MACN;AAAA,KAAuC;AAAA,KAAc,KAEvD,KACA,QAAQ,QAIZ,YAAK,QAAU,EACR,OAGH,OA7kBR,UA8kBI,GAAM,GAAM,KAAK,QACX,CACJ,OACA,UACA,IAAK,EACL,SACA,gBACA,YACE,EAAI,MAER,GAAa,EAAI,MAAM,KAGrB,EAAI,MAAM,YACV,YAAQ,IAAI,YAAZ,cAAuB,SACvB,QAAQ,WAAa,UAErB,SAAQ,IAAM,IAAI,IAChB,WAAa,KAAK,sBAAsB,EAAK,KAAK,UAElD,GACF,GAAI,SAAS,GACb,QAAQ,KAAK,IAGX,GACF,SAAQ,IAAI,AAAQ,KAAgB,SACpC,QAAQ,KAAK,IAGf,GAAM,CACJ,MAAO,CAAE,OAAQ,EAAU,SACzB,EAEJ,GAAI,GACF,KAAM,AAAQ,AAAR,SAAQ,IAAwB,SACpC,KAAM,IAAY,EAAS,KAE7B,OAGF,GAAI,GAAM,QAAI,MAAM,KAAV,cAAc,SAAd,OAAwB,GAElC,AAAI,EAAI,SAAS,gBACf,GAAM,EAAI,QAAQ,cAAe,IAAI,QAKvC,GAAI,GAEA,EAAc,GAClB,GAAI,CAAC,EAAI,SAAS,QAAU,EAAI,MAAM,KAAK,SAAW,GACpD,GAAM,CAAC,EAAO,GAAQ,EAAI,MAAM,KAEhC,AAAI,EAAK,OAAO,OACd,EAAM,WAAW,MAAsB,KAAS,IAEhD,EAAc,GAQlB,IAJK,GACH,GAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,MAGpD,CAAC,IACN,AAAI,GACF,GAAM,KAAM,MAAK,OAAO,GACxB,EAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,MAG3D,IACE,EAAO,WAAM,SACN,GACP,IACE,EAAM,KAAM,MAAK,OAAO,GACxB,EAAc,CAAC,GAAO,CAAC,EAAI,SAAS,MAAQ,EAAI,SAAS,WAClD,GACP,KAAK,IAAI,KAKf,GAAI,GAAM,EAAK,IAef,GAbA,AACE,EAAK,WAAa,IACjB,KAAW,WACV,GACC,EAAK,MAAQ,IAAM,EAAI,MAAM,YAEhC,EAAM,KAAM,IAAkB,EAAK,MAAO,EAAK,MAC1C,AAAI,IAAW,GACpB,EAAM,EACI,GACV,GAAM,UAGJ,GAAO,EAAI,QAAU,GAAc,IACrC,AAAI,QAAQ,IAAI,SAAS,KAAK,IAAI,sCAClC,GAAM,CAAC,EAAU,EAAS,GAAU,KAAM,IAA0B,GACpE,EAAK,KAAO,EACZ,EAAK,MAAQ,EACb,EAAM,EAGR,AAAI,QAAQ,IAAI,SACd,KAAK,IAAI,YAAY,EAAK,SAAS,EAAK,QAAQ,QAElD,GAAM,GAAQ,GAAI,QAAO,UAErB,EAAS,EAAK,KAAO,IAAM,EAE/B,GAAS,WAAI,QACX,kBAAa,QACT,CACE,cAAe,GACf,KAAM,GACN,SACA,QAAS,AAAC,EAAI,MAAM,KAA2B,GAApB,kBAC3B,OAAQ,WAAK,QAAQ,QAAQ,MAAO,IAEtC,CACE,cAAe,GACf,KAAM,GACN,OAAQ,EACR,QAAS,AAAC,EAAI,MAAM,KAA2B,GAApB,oBAGnC,KAAK,YAAc,GAAO,KAC1B,GAAI,GAAsB,GAAY,EAAS,IAE/C,GAAY,GACZ,QAAQ,KAAK,aAAc,IAC3B,QAAQ,KAAK,UAAW,IACxB,QAAQ,KAAK,UAAW,IAExB,GAAI,GAAe,EAAK,SACpB,EAAmB,CAAC,EAExB,AAAI,GACF,GAAe,aAGjB,GAAI,GAAW,WAAK,KAAK,GAAO,KAAM,GAGtC,GAAI,EAAK,WAAa,IACpB,GAAI,GAAW,IAAQ,OAAS,SAAW,OAEvC,EACJ,AAAI,IACF,GAAkB,KAAK,eACrB,EAAK,KACL,EAAK,MACL,EACA,EACA,EACA,IAGJ,GAAI,GAAe,KAAK,MACtB,EAAK,MACL,EAAK,KACL,EACA,EACA,GAAO,MAEL,EAAsB,KAAK,oBAAoB,KAAK,IACtD,GAAkB,MAGpB,AAAI,EACF,KAAM,SAAQ,IAAI,CAAC,EAAiB,EAAc,IAElD,KAAM,SAAQ,IAAI,CAAC,EAAc,QAGnC,MAAM,MAAK,MAAM,EAAK,KAAM,GAAO,MAGrC,GAAI,GAAyB,GAI7B,KAAK,WAAa,EAClB,GAAI,GAAe,KAAM,GAwLzB,GAnLA,AAAI,EAAa,SAAS,QACxB,IAAa,QAAU,EAAI,MAAM,QACjC,GAAa,QAAU,EACvB,EAAe,EAAa,QAAQ,SAAU,GAAI,KAAM,IAAI,OAE5D,KAAK,WAAa,EAClB,EAAuB,KAAK,KAAM,MAE9B,GACF,EAAuB,KAAK,OAAO,WAAK,QAAQ,YAO7C,AAAI,EAAa,SAAS,QAC/B,CAAI,EAAI,MAAM,WACZ,GAAa,QAAU,EAEvB,GAAa,QAAU,EAGzB,GAAa,GACb,KAAK,WAAa,EAClB,EAAe,EAAa,QAAQ,SAAU,GAAI,KAAM,IAAI,OAC5D,EAAuB,KAAK,MAExB,GACF,EAAuB,KAAK,IAAI,WAAK,QAAQ,YAG1C,AAAI,EAAa,SAAS,MAC/B,MAAK,WAAa,EAClB,GAAa,QAAU,EAAI,MAAM,QACjC,GAAa,QAAU,GAIlB,AAAI,EAAI,MAAM,WACnB,IAAa,QAAU,EACvB,GAAa,QAAU,EAAI,MAAM,SAEjC,IAAa,QAAU,EACvB,GAAa,QAAU,EAAI,MAAM,SAI/B,MAAK,aAAe,GAAkB,GACtC,EAAI,MAAM,OACZ,KAAK,cAEL,MAAM,MAAK,aACX,KAAK,aAAe,QAAQ,QAAQ,KAGtC,KAAM,IAAI,SAAQ,CAAC,EAAS,KAC1B,GAAI,KAAK,aAAe,GAkBtB,GAAS,GAAT,WAz1BR,QA01BU,AAAK,GACC,kCAAS,QAAT,cAAgB,aAAY,QAAQ,MAAM,WAAW,IACrD,iCAAS,QAAT,cAAgB,SAAQ,QAAQ,MAAM,SAE1C,IACA,EAAa,KAvBjB,QAAQ,MAAM,WAAW,IACzB,QAAQ,MAAM,QAEd,KAAK,SAAW,WAAa,MAC3B,EACA,CACE,EAAmB,GAAO,KAAO,EACjC,GAAG,GAEL,CACE,IAAK,QAAQ,IACb,MAAO,UACP,SAAU,GACV,IAAK,GAAO,OAGhB,GAAI,GAAa,GAWjB,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,OAAQ,GAC3B,KAAK,SAAS,KAAK,QAAS,QAE5B,KAAK,IACH,gCACG,KAAI,QAAO,UAAY,GACxB,KACA,QAAQ,OAGZ,GAAM,GAAM,GAAG,MAAiB,WAAK,KACnC,GAAO,UACH,EAAuB,KAAK,OAAO,OAErC,EAAa,GAEX,EACJ,QAAQ,WAAa,QACjB,WAAK,KAAK,GAAO,KAAM,OACvB,GAAO,KAoCb,GAnCA,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,QAC/C,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MAAO,SAEP,SAAU,GAEV,QAEG,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,SACtD,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MAAO,OAEP,SAAU,GACV,QAGF,KAAK,SAAW,WAAa,MAAM,EAAK,CACtC,IAAK,QAAQ,IACb,MAAO,GACP,YAAa,GACb,MACE,GAAa,UAAY,EACrB,SACA,UACN,SAAU,GAAa,UAAY,EACnC,QAIA,GAAa,UAAY,EAC3B,AAAI,EAAI,MAAM,YAAc,QAAQ,WAAa,QAC/C,MAAK,SAAS,QACd,KAAK,SAAW,KAEhB,KAAK,aAAa,KAChB,IAAM,IACN,IAAM,MAGR,KAAK,aAAa,KAChB,IAAM,IACN,IAAM,UAKV,GAAS,GAAT,WA56BV,SA66BY,AAAK,GACC,mCAAS,QAAT,eAAgB,aAAY,QAAQ,MAAM,WAAW,IACrD,iCAAS,QAAT,cAAgB,SAAQ,QAAQ,MAAM,SAE1C,MAIJ,KAAK,SAAS,KAAK,OAAQ,GAC3B,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,QAAS,GAC5B,KAAK,SAAS,KAAK,aAAc,OAKnC,KAAc,GAAa,UAAY,IACzC,IAAY,IAGV,CAAC,EAAI,MAAM,MAAQ,GAAa,UAAY,GAE9C,GAAM,GAAkB,QAAQ,YAChC,QAAQ,YAAc,OACtB,GAAM,CAAE,iBAA0B,AAAR,QAAQ,IAClC,QAAQ,YAAc,EAEtB,GAAa,GAAY,CADJ,KAAM,KAI7B,OA3rBK,AAhRT,GAgRS,YACL,4FACK,AAlRT,GAkRS,MAAQ,4BAER,AApRT,GAoRS,KAAO,CAAC,CAAE,KAAM,QAisBzB,QAAQ,GAAG,qBAAsB,IACjC,QAAQ,GAAG,qBAAsB,IAEjC,AAAI,IACF,WAAO,OAAO,CAAE,KAAM,KAGxB,GAAM,IAAqB,QAAQ,IAAI,oBAAsB,aACvD,GAAoB,QAAQ,IAAI,mBAAqB,iBACrD,GAAiB,KAAsB,iBAC7C,GAAW,GAAI,IACf,GAAS", "names": [] } diff --git a/src/index.ts b/src/index.ts index 231b646..b92a244 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,9 +15,9 @@ import type { Writable } from "stream"; import zlib from "zlib"; import rimraf from "rimraf"; -const _SEARCH_PATH = "src/Search"; -const _REGISTER_PROTOCOL_PATH = "src/registerProtocol"; -const _CONFIRM_PROMPT_PATH = "src/confirmPrompt"; +const _SEARCH_PATH = path.join(__dirname, "Search"); +const _REGISTER_PROTOCOL_PATH = path.join(__dirname, "registerProtocol"); +const _CONFIRM_PROMPT_PATH = path.join(__dirname, "confirmPrompt"); function resolveAfterDelay(delay) { return new Promise((resolve, reject) => setTimeout(resolve, delay));