diff --git a/dist/main.js b/dist/main.js index b06e9a47..ab237315 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,4 +1,4 @@ -var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("assert"),s=require("timers"),a=require("util"),c=require("stream"),u=c,l=c.Transform,f=T(require("typescript")),p=require("atom"),h=(t={},e=p,Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t),d=p.CompositeDisposable,g=p.TextBuffer,m=p.Emitter,v=p.BufferedNodeProcess,y=(p.BufferedProcess,p.Disposable),w=require("path"),b=w,_=w.dirname,S=require("fs"),x=S,k=T(S),E=require("child_process"),C=require("os");function T(t){return t&&t.__esModule?t.default:t}var A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},P={};Object.defineProperty(P,"__esModule",{value:!0});var I=E,O=x,j=b;function N(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var D=N(C),F=N(O),L=N(j);const M=/\s+at.*(?:\(|\s)(.*)\)?/,R=/^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/,B=void 0===D.default.homedir?"":D.default.homedir();class z extends Error{constructor(t){if(!Array.isArray(t))throw new TypeError("Expected input to be an Array, got "+typeof t);let e=(t=[...t].map((t=>t instanceof Error?t:null!==t&&"object"==typeof t?Object.assign(new Error(t.message),t):new Error(t)))).map((t=>{return"string"==typeof t.stack?(t=>t.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,""))((e=t.stack,n=Object.assign({pretty:!1},n),e.replace(/\\/g,"/").split("\n").filter((t=>{const e=t.match(M);if(null===e||!e[1])return!0;const n=e[1];return!n.includes(".app/Contents/Resources/electron.asar")&&!n.includes(".app/Contents/Resources/default_app.asar")&&!R.test(n)})).filter((t=>""!==t.trim())).map((t=>n.pretty?t.replace(M,((t,e)=>t.replace(e,e.replace(B,"~")))):t)).join("\n"))):String(t);var e,n})).join("\n");e="\n"+((t,e=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof t)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if("number"!=typeof e)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===e)return t;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(r,n.indent.repeat(e))})(e,4),super(e),this.name="AggregateError",Object.defineProperty(this,"_errors",{value:t})}*[Symbol.iterator](){for(const t of this._errors)yield t}}var q=z;const H=(t,e,n)=>new Promise(((r,i)=>{if(n=Object.assign({concurrency:1/0},n),"function"!=typeof e)throw new TypeError("Mapper function is required");const{concurrency:o}=n;if(!("number"==typeof o&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);const s=[],a=t[Symbol.iterator]();let c=!1,u=!1,l=0,f=0;const p=()=>{if(c)return;const t=a.next(),n=f;if(f++,t.done)return u=!0,void(0===l&&r(s));l++,Promise.resolve(t.value).then((t=>e(t,n))).then((t=>{s[n]=t,l--,p()}),(t=>{c=!0,i(t)}))};for(let t=0;t(await $(t,((t,n)=>Promise.all([e(t,n),t])),n)).filter((t=>Boolean(t[0]))).map((t=>t[1]));var W=V,G=V;W.default=G;const K="undefined"!=typeof atom,Q="undefined"!=typeof atom&&(atom.inDevMode()||atom.inSpecMode()); +var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("assert"),s=require("timers"),a=require("util"),c=require("stream"),u=c,l=c.Transform,f=T(require("typescript")),p=require("atom"),h=(t={},e=p,Object.keys(e).forEach((function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})})),t),d=p.CompositeDisposable,g=p.TextBuffer,m=p.Emitter,v=p.BufferedNodeProcess,y=(p.BufferedProcess,p.Disposable),w=require("path"),b=w,_=w.dirname,S=require("fs"),x=S,k=T(S),E=require("child_process"),C=require("os");function T(t){return t&&t.__esModule?t.default:t}var A="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},P={};Object.defineProperty(P,"__esModule",{value:!0});var O=E,I=x,j=b;function N(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var L=N(C),F=N(I),D=N(j);const M=/\s+at.*(?:\(|\s)(.*)\)?/,R=/^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/,B=void 0===L.default.homedir?"":L.default.homedir();class z extends Error{constructor(t){if(!Array.isArray(t))throw new TypeError("Expected input to be an Array, got "+typeof t);let e=(t=[...t].map((t=>t instanceof Error?t:null!==t&&"object"==typeof t?Object.assign(new Error(t.message),t):new Error(t)))).map((t=>{return"string"==typeof t.stack?(t=>t.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,""))((e=t.stack,n=Object.assign({pretty:!1},n),e.replace(/\\/g,"/").split("\n").filter((t=>{const e=t.match(M);if(null===e||!e[1])return!0;const n=e[1];return!n.includes(".app/Contents/Resources/electron.asar")&&!n.includes(".app/Contents/Resources/default_app.asar")&&!R.test(n)})).filter((t=>""!==t.trim())).map((t=>n.pretty?t.replace(M,((t,e)=>t.replace(e,e.replace(B,"~")))):t)).join("\n"))):String(t);var e,n})).join("\n");e="\n"+((t,e=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof t)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if("number"!=typeof e)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===e)return t;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(r,n.indent.repeat(e))})(e,4),super(e),this.name="AggregateError",Object.defineProperty(this,"_errors",{value:t})}*[Symbol.iterator](){for(const t of this._errors)yield t}}var q=z;const H=(t,e,n)=>new Promise(((r,i)=>{if(n=Object.assign({concurrency:1/0},n),"function"!=typeof e)throw new TypeError("Mapper function is required");const{concurrency:o}=n;if(!("number"==typeof o&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);const s=[],a=t[Symbol.iterator]();let c=!1,u=!1,l=0,f=0;const p=()=>{if(c)return;const t=a.next(),n=f;if(f++,t.done)return u=!0,void(0===l&&r(s));l++,Promise.resolve(t.value).then((t=>e(t,n))).then((t=>{s[n]=t,l--,p()}),(t=>{c=!0,i(t)}))};for(let t=0;t(await $(t,((t,n)=>Promise.all([e(t,n),t])),n)).filter((t=>Boolean(t[0]))).map((t=>t[1]));var W=V,G=V;W.default=G;const K="undefined"!=typeof atom,Q="undefined"!=typeof atom&&(atom.inDevMode()||atom.inSpecMode()); /*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk @@ -6,5 +6,5 @@ var t,e,n=require("crypto"),r=require("module"),i=require("events"),o=require("a * Copyright(c) 2015 Tiancheng "Timothy" Gu * MIT Licensed */ -var Z=/["'&<>]/,J=function(t){var e,n=""+t,r=Z.exec(n);if(!r)return n;var i="",o=0,s=0;for(o=r.index;o{const i={stdout:r.stdout?[]:null,stderr:r.stderr?[]:null};r.on("error",e),r.stdout&&r.stdout.on("data",(function(t){i.stdout.push(t),n.handleStdout&&n.handleStdout(t)})),r.stderr&&r.stderr.on("data",(function(t){i.stderr.push(t),n.handleStderr&&n.handleStderr(t)})),r.on("close",(e=>{let r=null;null!=i.stdout&&(r=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stdout):i.stdout.join(""));let o=null;null!=i.stderr&&(o=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stderr):i.stderr.join("")),t({exitCode:e,stdout:r,stderr:o})}))}));return n.handleChildProcess(r),i}(t,e,{...n,handleChildProcess(t){r=t}});return i.kill=function(t){return r.kill(t)},i}async function X(t){if(K){const e=await async function(t){var e;const n=atom.packages.getLoadedPackage(t.name);return null==n?null:null!==(e=n.metadata.version)&&void 0!==e?e:null}(t);if(e)return e}return async function(t){var e,n;const{directory:r}=t;if(null==r)return null;let i=null;try{i=JSON.parse(await F.default.promises.readFile(L.default.join(r,"package.json"),"utf8"))}catch(t){return null}return null!==(e=null===(n=i)||void 0===n?void 0:n.version)&&void 0!==e?e:null}(t)}const tt=K?async function(t){return atom.packages.resolvePackagePath(t)}:async function(t){var e;const n=L.default.join(null!==(e=process.env.ATOM_HOME)&&void 0!==e?e:L.default.join(D.default.homedir(),".atom"),"packages",t);try{return await F.default.promises.access(n,F.default.constants.R_OK),n}catch(t){return null}};function et(t,e){if(!t)throw new Error(null!=e?e:"Invariant violation")}async function nt(t){const e=await(K?async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?n:[]}(t):async function(t){let e=null;try{e=await F.default.promises.stat(t)}catch(t){}if(null==e||!e.isDirectory())throw new Error("[Package-Deps] Expected packageName to be a readable directory in Node.js invocation");let n=null;try{const e=await F.default.promises.readFile(L.default.join(t,"package.json"),"utf8");n=JSON.parse(e)}catch(t){}const r=null==n||"object"!=typeof n?[]:n["package-deps"];return Array.isArray(r)?r:[]}(t));return Q&&(et(Array.isArray(e),`Dependencies for ${t} are not a valid array`),e.forEach(((e,n)=>{if(Array.isArray(e))e.forEach(((e,r)=>{const i=`Dependency#${n}#${r} for ${t} is invalid`;et("string"==typeof e.name&&e.name.length>0,i),et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,i)})),et(e.length>0,`Dependency#${n} for ${t} has no group items`);else{const r=`Dependency#${n} for ${t} is invalid`;et("string"==typeof e.name&&e.name.length>0,r),et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,r)}}))),e}async function rt(t){if(null==t.directory)return!0;if(null==t.minimumVersion)return!1;const e=await X(t);return null==e||1===function(t,e){for(var n=t.split("."),r=e.split("."),i=0;i<3;i++){var o=Number(n[i]),s=Number(r[i]);if(o>s)return 1;if(s>o)return-1;if(!isNaN(o)&&isNaN(s))return 1;if(isNaN(o)&&!isNaN(s))return-1}return 0}(t.minimumVersion,e)}const it=new Set(["✓","done"]),ot=/(?:Installing|Moving) (.*?) to .* (.*)/;let st=!0;const at=K?function({packageName:t,dependencies:e}){const n=[],r=atom.notifications.addInfo(`Installing ${t} dependencies`,{detail:"Installing "+e.map((t=>t.name)).join(", "),dismissable:!0}),i=document.createElement("progress");i.max=e.length,i.style.width="100%";try{var o;const t=atom.views.getView(r),e=null!==(o=null==t?void 0:t.element)&&void 0!==o?o:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");n.appendChild(i)}catch(t){console.error("[Package-Deps] Error during showing installation progress to user",t)}return{handleFailure({dependency:t,error:e}){var r;n.push(t.name),i.value+=1,console.error(`[Package-Deps] Unable to install ${t.name}, Error:`,null!==(r=null==e?void 0:e.stack)&&void 0!==r?r:e)},handleDependencyInstalled(t){i.value+=1},handleComplete(){r.dismiss(),n.length>0?atom.notifications.addWarning(`Failed to install ${t} dependencies`,{detail:"These packages were not installed, check your console\nfor more info.\n"+n.join("\n"),dismissable:!0}):atom.notifications.addSuccess(`Installed ${t} dependencies`,{detail:"Installed "+e.map((t=>t.name)).join(", ")}),Promise.all(e.map((t=>n.includes(t.name)?null:atom.packages.activatePackage(t.name)))).catch((e=>{console.error("[Package-Deps] Error activating installed packages for "+t,e)}))}}}:function({dependencies:t}){let e=!1;return console.log("Installing dependencies:\n"+t.map((t=>" - "+t.name)).join("\n")),{handleFailure({dependency:t,error:n}){var r;e=!0,console.error(`Unable to install ${t.name}, Error:`,null!==(r=null==n?void 0:n.stack)&&void 0!==r?r:n)},handleDependencyInstalled(t){console.log("Successfully installed",t.name)},handleComplete(){console.log("Installation complete"),e&&(process.exitCode=1)}}},ct=K?function({packageName:t,dependencies:e}){return new Promise((n=>{const r=e.filter((t=>!Array.isArray(t))),i=e.filter((t=>Array.isArray(t))),o=0===i.length,s=o?r.map((t=>t.name)).join(", "):"Something went wrong. Check your developer console",a=i.map((t=>t[0]));atom.packages.isPackageDisabled("notifications")&&console.warn("Enable notifications to install dependencies for "+t);const c=atom.notifications.addInfo(t+" needs to install dependencies",{dismissable:!0,icon:"cloud-download",detail:s,description:`Install dependenc${1===e.length?"y":"ies"}?`,buttons:[{text:"Yes",onDidClick:()=>{n(o?[]:r.concat(a)),c.dismiss()}},{text:"No Thanks",onDidClick:()=>{c.dismiss()}},{text:"Never",onDidClick:()=>{!function(t){var e;if(!K)return;const n=new Set(null!==(e=atom.config.get("atom-package-deps.ignored"))&&void 0!==e?e:[]);n.add(t),atom.config.set("atom-package-deps.ignored",Array.from(n))}(t),st&&(st=!1,atom.notifications.addInfo("How to reset package-deps memory",{dismissable:!0,description:"To modify the list of ignored files invoke 'Application: Open Your Config' and change the 'atom-package-deps' section"})),c.dismiss()}}]});if(c.onDidDismiss((()=>n([]))),!o)try{var u;const t=atom.views.getView(c),e=null!==(u=null==t?void 0:t.element)&&void 0!==u?u:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");if(n.innerHTML="",r.length>0){const t=document.createElement("div");t.innerHTML=`Packages without choices:
  • ${r.map((t=>J(t.name))).join("
  • ")}
`,n.appendChild(t)}const o=document.createElement("div");o.innerHTML="Packages with choices:",n.appendChild(o);const s=document.createElement("ul");i.forEach(((t,e)=>{const n=document.createElement("li"),r=document.createElement("select");r.innerHTML=t.map((t=>``)).join("\n"),r.addEventListener("change",(()=>{const n=t.find((t=>t.name===r.value));null!=n&&(a[e]=n)})),n.style.marginTop="5px",n.appendChild(r),s.appendChild(n)})),n.appendChild(s)}catch(t){console.error("[Package-Deps] Error during showing package choices to user",t)}}))}:async function({dependencies:t}){return t.map((t=>Array.isArray(t)?t[0]:t))};var ut=async function(t){if(et("string"==typeof t&&t.length>0,"[Package-Deps] Package name is required"),e=t,K&&(null!==(n=atom.config.get("atom-package-deps.ignored"))&&void 0!==n?n:[]).includes(e))return;var e,n;const r=await nt(t);if(0===r.length)return;const i=await Promise.all(r.map((async t=>Array.isArray(t)?Promise.all(t.map((async t=>({...t,directory:await tt(t.name)})))):{...t,directory:await tt(t.name)}))),o=await W(i,(async function(t){return Array.isArray(t)?(await Promise.all(t.map((t=>rt(t))))).every(Boolean):rt(t)}));if(0===o.length)return;const s=await ct({packageName:t,dependencies:o});if(0===s.length)return;const a=at({packageName:t,dependencies:s});await(async(t,e,{concurrency:n=1/0,stopOnError:r=!0}={})=>new Promise(((i,o)=>{if("function"!=typeof e)throw new TypeError("Mapper function is required");if(!Number.isSafeInteger(n)&&n!==1/0||!(n>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);const s=[],a=[],c=t[Symbol.iterator]();let u=!1,l=!1,f=0,p=0;const h=()=>{if(u)return;const t=c.next(),n=p;if(p++,t.done)return l=!0,void(0===f&&(r||0===a.length?i(s):o(new q(a))));f++,(async()=>{try{const r=await t.value;s[n]=await e(r,n),f--,h()}catch(t){r?(u=!0,o(t)):(a.push(t),f--,h())}})()};for(let t=0;tdt(t,e,...n);for(const t of ht)dt[t]=(e,...n)=>dt(t,e,...n);lt=dt;var mt,vt={},yt={};yt=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var wt;function bt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in ft||i&&o in i||("dataset"===o?bt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&ht.has(e.tag)?t.removeAttribute(yt.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in ft)){var s=n&&n[o],a=i[o];"dataset"===o?_t(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),_t(t.style,s,a,!0)):"attributes"===o?St(t,s,a):a!==s&&("innerHTML"!==o&&r&&ht.has(r.tag)?t.setAttribute(yt.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function _t(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function St(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function xt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else ht.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&kt(n,i,e),o&&mt(n,null,t,e)):(n=document.createElement(r),i&&kt(n,i,e),o&&mt(n,null,t,e))}return t.domNode=n,n}function kt(t,e,n){for(let r=0;r0?(i=At.pop()).clear():i=new Map,jt(i,e,o,s));var h=Ot(f),d=h?i.get(h):null;if(null==d)t.insertBefore(vt(f,r),a.domNode),f=n[++u];else{var g=e[d];Tt(g,f,r),e[d]=void 0,t.insertBefore(g.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var m=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(vt(n[e],r),m)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Pt(v,r&&r.refs)}i&&At.push(i)}(r,t.children,e.children,n),mt(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Pt(t,n&&n.refs);const s=vt(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let At=[new Map,new Map,new Map,new Map];function Pt(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let Dt=null;var Ft=function(){return Dt||(Dt=new Nt),Dt};const Lt=new WeakSet;let Mt=0,Rt=0;function Bt(t){return null!=t&&!1!==t}function zt(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function qt(t,e=!0){if(!Bt(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!Bt(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}zt(t,n),Mt++;let r=t.virtualNode,i=t.element,o=Ct(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&Ft().readDocument((function(){t.readAfterUpdate()})),Mt--}function Ht(t,e=!0){Rt++,$t(t.virtualNode),1===Rt&&e&&t.element.remove(),Rt--}function $t(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach($t)}Et={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!Bt(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}zt(t,e),t.refs={},t.virtualNode=e,t.element=vt(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(Mt>0)return qt(t,e),Promise.resolve();let n=Ft();return Lt.has(t)||(Lt.add(t),n.updateDocument((function(){Lt.delete(t),qt(t,e)}))),n.getNextUpdatePromise()},updateSync:qt,destroy:function(t,e=!0){if(Mt>0||Rt>0)return Ht(t,e),Promise.resolve();let n=Ft();return n.updateDocument((function(){Ht(t,e)})),n.getNextUpdatePromise()},destroySync:Ht};const{initialize:Ut,update:Vt,updateSync:Wt,destroy:Gt,destroySync:Kt}=Et;function Qt(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError("Atom-Typescript error: "+t.message,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}pt={dom:lt,render:vt,initialize:Ut,update:Vt,updateSync:Wt,destroy:Gt,destroySync:Kt,setScheduler:function(t){Dt=t},getScheduler:Ft};var Zt=function(){var t=this,e={exports:this};return function(){var n,r="Expected a function",i="__lodash_hash_undefined__",o="__lodash_placeholder__",s=16,a=32,c=64,u=128,l=256,f=1/0,p=9007199254740991,h=NaN,d=4294967295,g=[["ary",u],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",a],["partialRight",c],["rearg",l]],m="[object Arguments]",v="[object Array]",y="[object Boolean]",w="[object Date]",b="[object Error]",_="[object Function]",S="[object GeneratorFunction]",x="[object Map]",k="[object Number]",E="[object Object]",C="[object Promise]",T="[object RegExp]",P="[object Set]",I="[object String]",O="[object Symbol]",j="[object WeakMap]",N="[object ArrayBuffer]",D="[object DataView]",F="[object Float32Array]",L="[object Float64Array]",M="[object Int8Array]",R="[object Int16Array]",B="[object Int32Array]",z="[object Uint8Array]",q="[object Uint8ClampedArray]",H="[object Uint16Array]",$="[object Uint32Array]",U=/\b__p \+= '';/g,V=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,Q=RegExp(G.source),Z=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+/,st=/\s/,at=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,ut=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,pt=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,gt=/^[-+]0x[0-9a-f]+$/i,mt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,_t=/($^)/,St=/['\n\r\u2028\u2029\\]/g,xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",kt="\\u2700-\\u27bf",Et="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",Tt="\\ufe0e\\ufe0f",At="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Pt="['’]",It="[\\ud800-\\udfff]",Ot="["+At+"]",jt="["+xt+"]",Nt="\\d+",Dt="[\\u2700-\\u27bf]",Ft="["+Et+"]",Lt="[^\\ud800-\\udfff"+At+Nt+kt+Et+Ct+"]",Mt="\\ud83c[\\udffb-\\udfff]",Rt="[^\\ud800-\\udfff]",Bt="(?:\\ud83c[\\udde6-\\uddff]){2}",zt="[\\ud800-\\udbff][\\udc00-\\udfff]",qt="["+Ct+"]",Ht="(?:"+Ft+"|"+Lt+")",$t="(?:"+qt+"|"+Lt+")",Ut="(?:['’](?:d|ll|m|re|s|t|ve))?",Vt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Wt="(?:"+jt+"|"+Mt+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Kt=Gt+Wt+("(?:\\u200d(?:"+[Rt,Bt,zt].join("|")+")"+Gt+Wt+")*"),Qt="(?:"+[Dt,Bt,zt].join("|")+")"+Kt,Zt="(?:"+[Rt+jt+"?",jt,Bt,zt,It].join("|")+")",Jt=RegExp(Pt,"g"),Yt=RegExp(jt,"g"),Xt=RegExp(Mt+"(?="+Mt+")|"+Zt+Kt,"g"),te=RegExp([qt+"?"+Ft+"+"+Ut+"(?="+[Ot,qt,"$"].join("|")+")",$t+"+"+Vt+"(?="+[Ot,qt+Ht,"$"].join("|")+")",qt+"?"+Ht+"+"+Ut,qt+"+"+Vt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Nt,Qt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+xt+Tt+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[F]=oe[L]=oe[M]=oe[R]=oe[B]=oe[z]=oe[q]=oe[H]=oe[$]=!0,oe[m]=oe[v]=oe[N]=oe[y]=oe[D]=oe[w]=oe[b]=oe[_]=oe[x]=oe[k]=oe[E]=oe[T]=oe[P]=oe[I]=oe[j]=!1;var se={};se[m]=se[v]=se[N]=se[D]=se[y]=se[w]=se[F]=se[L]=se[M]=se[R]=se[B]=se[x]=se[k]=se[E]=se[T]=se[P]=se[I]=se[O]=se[z]=se[q]=se[H]=se[$]=!0,se[b]=se[_]=se[j]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,ue=parseInt,le="object"==typeof A&&A&&A.Object===Object&&A,fe="object"==typeof self&&self&&self.Object===Object&&self,pe=le||fe||Function("return this")(),he="object"==typeof t&&t&&!t.nodeType&&t,de=he&&"object"==typeof e&&e&&!e.nodeType&&e,ge=de&&de.exports===he,me=ge&&le.process,ve=function(){try{var t=de&&de.require&&de.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,_e=ve&&ve.isRegExp,Se=ve&&ve.isSet,xe=ve&&ve.isTypedArray;function ke(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ee(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Oe(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function tn(t,e){for(var n=t.length;n--&&ze(e,t[n],0)>-1;);return n}function en(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var nn=Ve({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),rn=Ve({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ae[t]}function sn(t){return ee.test(t)}function an(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function cn(t,e){return function(n){return t(e(n))}}function un(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var mn=function t(e){var A,st=(e=null==e?pe:mn.defaults(pe.Object(),e,mn.pick(pe,re))).Array,xt=e.Date,kt=e.Error,Et=e.Function,Ct=e.Math,Tt=e.Object,At=e.RegExp,Pt=e.String,It=e.TypeError,Ot=st.prototype,jt=Et.prototype,Nt=Tt.prototype,Dt=e["__core-js_shared__"],Ft=jt.toString,Lt=Nt.hasOwnProperty,Mt=0,Rt=(A=/[^.]+$/.exec(Dt&&Dt.keys&&Dt.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"",Bt=Nt.toString,zt=Ft.call(Tt),qt=pe._,Ht=At("^"+Ft.call(Lt).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$t=ge?e.Buffer:n,Ut=e.Symbol,Vt=e.Uint8Array,Wt=$t?$t.allocUnsafe:n,Gt=cn(Tt.getPrototypeOf,Tt),Kt=Tt.create,Qt=Nt.propertyIsEnumerable,Zt=Ot.splice,Xt=Ut?Ut.isConcatSpreadable:n,ee=Ut?Ut.iterator:n,ae=Ut?Ut.toStringTag:n,le=function(){try{var t=ho(Tt,"defineProperty");return t({},"",{}),t}catch(t){}}(),fe=e.clearTimeout!==pe.clearTimeout&&e.clearTimeout,he=xt&&xt.now!==pe.Date.now&&xt.now,de=e.setTimeout!==pe.setTimeout&&e.setTimeout,me=Ct.ceil,ve=Ct.floor,Me=Tt.getOwnPropertySymbols,Ve=$t?$t.isBuffer:n,vn=e.isFinite,yn=Ot.join,wn=cn(Tt.keys,Tt),bn=Ct.max,_n=Ct.min,Sn=xt.now,xn=e.parseInt,kn=Ct.random,En=Ot.reverse,Cn=ho(e,"DataView"),Tn=ho(e,"Map"),An=ho(e,"Promise"),Pn=ho(e,"Set"),In=ho(e,"WeakMap"),On=ho(Tt,"create"),jn=In&&new In,Nn={},Dn=qo(Cn),Fn=qo(Tn),Ln=qo(An),Mn=qo(Pn),Rn=qo(In),Bn=Ut?Ut.prototype:n,zn=Bn?Bn.valueOf:n,qn=Bn?Bn.toString:n;function Hn(t){if(ia(t)&&!Gs(t)&&!(t instanceof Wn)){if(t instanceof Vn)return t;if(Lt.call(t,"__wrapped__"))return Ho(t)}return new Vn(t)}var $n=function(){function t(){}return function(e){if(!ra(e))return{};if(Kt)return Kt(e);t.prototype=e;var r=new t;return t.prototype=n,r}}();function Un(){}function Vn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=n}function Wn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Gn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function lr(t,e,r,i,o,s){var a,c=1&e,u=2&e,l=4&e;if(r&&(a=o?r(t,i,o,s):r(t)),a!==n)return a;if(!ra(t))return t;var f=Gs(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Lt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return Oi(t,a)}else{var p=vo(t),h=p==_||p==S;if(Js(t))return Ei(t,c);if(p==E||p==m||h&&!o){if(a=u||h?{}:wo(t),!c)return u?function(t,e){return ji(t,mo(t),e)}(t,function(t,e){return t&&ji(e,Fa(e),t)}(a,t)):function(t,e){return ji(t,go(t),e)}(t,sr(a,t))}else{if(!se[p])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case N:return Ci(t);case y:case w:return new r(+t);case D:return function(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case F:case L:case M:case R:case B:case z:case q:case H:case $:return Ti(t,n);case x:return new r;case k:case I:return new r(t);case T:return function(t){var e=new t.constructor(t.source,dt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case P:return new r;case O:return i=t,zn?Tt(zn.call(i)):{}}var i}(t,p,c)}}s||(s=new Jn);var d=s.get(t);if(d)return d;s.set(t,a),ua(t)?t.forEach((function(n){a.add(lr(n,e,r,n,t,s))})):oa(t)&&t.forEach((function(n,i){a.set(i,lr(n,e,r,i,t,s))}));var g=f?n:(l?u?so:oo:u?Fa:Da)(t);return Ce(g||t,(function(n,i){g&&(n=t[i=n]),rr(a,i,lr(n,e,r,i,t,s))})),a}function fr(t,e,r){var i=r.length;if(null==t)return!i;for(t=Tt(t);i--;){var o=r[i],s=e[o],a=t[o];if(a===n&&!(o in t)||!s(a))return!1}return!0}function pr(t,e,i){if("function"!=typeof t)throw new It(r);return Do((function(){t.apply(n,i)}),e)}function hr(t,e,n,r){var i=-1,o=Ie,s=!0,a=t.length,c=[],u=e.length;if(!a)return c;n&&(e=je(e,Ze(n))),r?(o=Oe,s=!1):e.length>=200&&(o=Ye,s=!1,e=new Zn(e));t:for(;++i-1},Kn.prototype.set=function(t,e){var n=this.__data__,r=ir(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Qn.prototype.clear=function(){this.size=0,this.__data__={hash:new Gn,map:new(Tn||Kn),string:new Gn}},Qn.prototype.delete=function(t){var e=fo(this,t).delete(t);return this.size-=e?1:0,e},Qn.prototype.get=function(t){return fo(this,t).get(t)},Qn.prototype.has=function(t){return fo(this,t).has(t)},Qn.prototype.set=function(t,e){var n=fo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Zn.prototype.add=Zn.prototype.push=function(t){return this.__data__.set(t,i),this},Zn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.clear=function(){this.__data__=new Kn,this.size=0},Jn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Jn.prototype.get=function(t){return this.__data__.get(t)},Jn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Kn){var r=n.__data__;if(!Tn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Qn(r)}return n.set(t,e),this.size=n.size,this};var dr=Fi(Sr),gr=Fi(xr,!0);function mr(t,e){var n=!0;return dr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function vr(t,e,r){for(var i=-1,o=t.length;++i0&&n(a)?e>1?wr(a,e-1,n,r,i):Ne(i,a):r||(i[i.length]=a)}return i}var br=Li(),_r=Li(!0);function Sr(t,e){return t&&br(t,e,Da)}function xr(t,e){return t&&_r(t,e,Da)}function kr(t,e){return Pe(e,(function(e){return ta(t[e])}))}function Er(t,e){for(var r=0,i=(e=_i(e,t)).length;null!=t&&re}function Pr(t,e){return null!=t&&Lt.call(t,e)}function Ir(t,e){return null!=t&&e in Tt(t)}function Or(t,e,r){for(var i=r?Oe:Ie,o=t[0].length,s=t.length,a=s,c=st(s),u=1/0,l=[];a--;){var f=t[a];a&&e&&(f=je(f,Ze(e))),u=_n(f.length,u),c[a]=!r&&(e||o>=120&&f.length>=120)?new Zn(a&&f):n}f=t[0];var p=-1,h=c[0];t:for(;++p=a?c:c*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Gr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Zt.call(a,c,1),Zt.call(t,c,1);return t}function Qr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;_o(i)?Zt.call(t,i,1):hi(t,i)}}return t}function Zr(t,e){return t+ve(kn()*(e-t+1))}function Jr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=ve(e/2))&&(t+=t)}while(e);return n}function Yr(t,e){return Fo(Po(t,e,sc),t+"")}function Xr(t){return Xn($a(t))}function ti(t,e){var n=$a(t);return Ro(n,ur(e,0,n.length))}function ei(t,e,r,i){if(!ra(t))return t;for(var o=-1,s=(e=_i(e,t)).length,a=s-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=st(i);++r>>1,s=t[o];null!==s&&!fa(s)&&(n?s<=e:s=200){var u=e?null:Ji(t);if(u)return ln(u);s=!1,i=Ye,c=new Zn}else c=e?[]:a;t:for(;++r=i?t:oi(t,e,r)}var ki=fe||function(t){return pe.clearTimeout(t)};function Ei(t,e){if(e)return t.slice();var n=t.length,r=Wt?Wt(n):new t.constructor(n);return t.copy(r),r}function Ci(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function Ti(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ai(t,e){if(t!==e){var r=t!==n,i=null===t,o=t==t,s=fa(t),a=e!==n,c=null===e,u=e==e,l=fa(e);if(!c&&!l&&!s&&t>e||s&&a&&u&&!c&&!l||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!l&&t1?r[o-1]:n,a=o>2?r[2]:n;for(s=t.length>3&&"function"==typeof s?(o--,s):n,a&&So(r[0],r[1],a)&&(s=o<3?n:s,o=1),e=Tt(e);++i-1?o[s?e[a]:a]:n}}function qi(t){return io((function(e){var i=e.length,o=i,s=Vn.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new It(r);if(s&&!c&&"wrapper"==co(a))var c=new Vn([],!0)}for(o=c?o:i;++o1&&y.reverse(),p&&lc))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var p=-1,h=!0,d=2&r?new Zn:n;for(s.set(t,e),s.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(at,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ce(g,(function(n){var r="_."+n[0];e&n[1]&&!Ie(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ct);return e?e[1].split(ut):[]}(r),n)))}function Mo(t){var e=0,r=0;return function(){var i=Sn(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(n,arguments)}}function Ro(t,e){var r=-1,i=t.length,o=i-1;for(e=e===n?i:e;++r1?t[e-1]:n;return r="function"==typeof r?(t.pop(),r):n,cs(t,r)}));function gs(t){var e=Hn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var vs=io((function(t){var e=t.length,r=e?t[0]:0,i=this.__wrapped__,o=function(e){return cr(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Wn&&_o(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:n}),new Vn(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(n),t}))):this.thru(o)}));var ys=Ni((function(t,e,n){Lt.call(t,n)?++t[n]:ar(t,n,1)}));var ws=zi(Wo),bs=zi(Go);function _s(t,e){return(Gs(t)?Ce:dr)(t,lo(e,3))}function Ss(t,e){return(Gs(t)?Te:gr)(t,lo(e,3))}var xs=Ni((function(t,e,n){Lt.call(t,n)?t[n].push(e):ar(t,n,[e])}));var ks=Yr((function(t,e,n){var r=-1,i="function"==typeof e,o=Qs(t)?st(t.length):[];return dr(t,(function(t){o[++r]=i?ke(e,t,n):jr(t,e,n)})),o})),Es=Ni((function(t,e,n){ar(t,n,e)}));function Cs(t,e){return(Gs(t)?je:qr)(t,lo(e,3))}var Ts=Ni((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var As=Yr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&So(t,e[0],e[1])?e=[]:n>2&&So(e[0],e[1],e[2])&&(e=[e[0]]),Wr(t,wr(e,1),[])})),Ps=he||function(){return pe.Date.now()};function Is(t,e,r){return e=r?n:e,e=t&&null==e?t.length:e,Xi(t,u,n,n,n,n,e)}function Os(t,e){var i;if("function"!=typeof e)throw new It(r);return t=va(t),function(){return--t>0&&(i=e.apply(this,arguments)),t<=1&&(e=n),i}}var js=Yr((function(t,e,n){var r=1;if(n.length){var i=un(n,uo(js));r|=a}return Xi(t,r,e,n,i)})),Ns=Yr((function(t,e,n){var r=3;if(n.length){var i=un(n,uo(Ns));r|=a}return Xi(e,r,t,n,i)}));function Ds(t,e,i){var o,s,a,c,u,l,f=0,p=!1,h=!1,d=!0;if("function"!=typeof t)throw new It(r);function g(e){var r=o,i=s;return o=s=n,f=e,c=t.apply(i,r)}function m(t){return f=t,u=Do(y,e),p?g(t):c}function v(t){var r=t-l;return l===n||r>=e||r<0||h&&t-f>=a}function y(){var t=Ps();if(v(t))return w(t);u=Do(y,function(t){var n=e-(t-l);return h?_n(n,a-(t-f)):n}(t))}function w(t){return u=n,d&&o?g(t):(o=s=n,c)}function b(){var t=Ps(),r=v(t);if(o=arguments,s=this,l=t,r){if(u===n)return m(l);if(h)return ki(u),u=Do(y,e),g(l)}return u===n&&(u=Do(y,e)),c}return e=wa(e)||0,ra(i)&&(p=!!i.leading,a=(h="maxWait"in i)?bn(wa(i.maxWait)||0,e):a,d="trailing"in i?!!i.trailing:d),b.cancel=function(){u!==n&&ki(u),f=0,o=l=s=u=n},b.flush=function(){return u===n?c:w(Ps())},b}var Fs=Yr((function(t,e){return pr(t,1,e)})),Ls=Yr((function(t,e,n){return pr(t,wa(e)||0,n)}));function Ms(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new It(r);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ms.Cache||Qn),n}function Rs(t){if("function"!=typeof t)throw new It(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ms.Cache=Qn;var Bs=Si((function(t,e){var n=(e=1==e.length&&Gs(e[0])?je(e[0],Ze(lo())):je(wr(e,1),Ze(lo()))).length;return Yr((function(r){for(var i=-1,o=_n(r.length,n);++i=e})),Ws=Nr(function(){return arguments}())?Nr:function(t){return ia(t)&&Lt.call(t,"callee")&&!Qt.call(t,"callee")},Gs=st.isArray,Ks=ye?Ze(ye):function(t){return ia(t)&&Tr(t)==N};function Qs(t){return null!=t&&na(t.length)&&!ta(t)}function Zs(t){return ia(t)&&Qs(t)}var Js=Ve||wc,Ys=we?Ze(we):function(t){return ia(t)&&Tr(t)==w};function Xs(t){if(!ia(t))return!1;var e=Tr(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!aa(t)}function ta(t){if(!ra(t))return!1;var e=Tr(t);return e==_||e==S||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ea(t){return"number"==typeof t&&t==va(t)}function na(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function ra(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ia(t){return null!=t&&"object"==typeof t}var oa=be?Ze(be):function(t){return ia(t)&&vo(t)==x};function sa(t){return"number"==typeof t||ia(t)&&Tr(t)==k}function aa(t){if(!ia(t)||Tr(t)!=E)return!1;var e=Gt(t);if(null===e)return!0;var n=Lt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Ft.call(n)==zt}var ca=_e?Ze(_e):function(t){return ia(t)&&Tr(t)==T};var ua=Se?Ze(Se):function(t){return ia(t)&&vo(t)==P};function la(t){return"string"==typeof t||!Gs(t)&&ia(t)&&Tr(t)==I}function fa(t){return"symbol"==typeof t||ia(t)&&Tr(t)==O}var pa=xe?Ze(xe):function(t){return ia(t)&&na(t.length)&&!!oe[Tr(t)]};var ha=Ki(zr),da=Ki((function(t,e){return t<=e}));function ga(t){if(!t)return[];if(Qs(t))return la(t)?hn(t):Oi(t);if(ee&&t[ee])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ee]());var e=vo(t);return(e==x?an:e==P?ln:$a)(t)}function ma(t){return t?(t=wa(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function va(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function ya(t){return t?ur(va(t),0,d):0}function wa(t){if("number"==typeof t)return t;if(fa(t))return h;if(ra(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ra(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Qe(t);var n=mt.test(t);return n||yt.test(t)?ue(t.slice(2),n?2:8):gt.test(t)?h:+t}function ba(t){return ji(t,Fa(t))}function _a(t){return null==t?"":fi(t)}var Sa=Di((function(t,e){if(Co(e)||Qs(e))ji(e,Da(e),t);else for(var n in e)Lt.call(e,n)&&rr(t,n,e[n])})),xa=Di((function(t,e){ji(e,Fa(e),t)})),ka=Di((function(t,e,n,r){ji(e,Fa(e),t,r)})),Ea=Di((function(t,e,n,r){ji(e,Da(e),t,r)})),Ca=io(cr);var Ta=Yr((function(t,e){t=Tt(t);var r=-1,i=e.length,o=i>2?e[2]:n;for(o&&So(e[0],e[1],o)&&(i=1);++r1),e})),ji(t,so(t),n),r&&(n=lr(n,7,no));for(var i=e.length;i--;)hi(n,e[i]);return n}));var Ba=io((function(t,e){return null==t?{}:function(t,e){return Gr(t,e,(function(e,n){return Ia(t,n)}))}(t,e)}));function za(t,e){if(null==t)return{};var n=je(so(t),(function(t){return[t]}));return e=lo(e),Gr(t,n,(function(t,n){return e(t,n[0])}))}var qa=Yi(Da),Ha=Yi(Fa);function $a(t){return null==t?[]:Je(t,Da(t))}var Ua=Ri((function(t,e,n){return e=e.toLowerCase(),t+(n?Va(e):e)}));function Va(t){return Xa(_a(t).toLowerCase())}function Wa(t){return(t=_a(t))&&t.replace(bt,nn).replace(Yt,"")}var Ga=Ri((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Ka=Ri((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Qa=Mi("toLowerCase");var Za=Ri((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Ja=Ri((function(t,e,n){return t+(n?" ":"")+Xa(e)}));var Ya=Ri((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Xa=Mi("toUpperCase");function tc(t,e,r){return t=_a(t),(e=r?n:e)===n?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(e)||[]}var ec=Yr((function(t,e){try{return ke(t,n,e)}catch(t){return Xs(t)?t:new kt(t)}})),nc=io((function(t,e){return Ce(e,(function(e){e=zo(e),ar(t,e,js(t[e],t))})),t}));function rc(t){return function(){return t}}var ic=qi(),oc=qi(!0);function sc(t){return t}function ac(t){return Mr("function"==typeof t?t:lr(t,1))}var cc=Yr((function(t,e){return function(n){return jr(n,t,e)}})),uc=Yr((function(t,e){return function(n){return jr(t,n,e)}}));function lc(t,e,n){var r=Da(e),i=kr(e,r);null!=n||ra(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=kr(e,Da(e)));var o=!(ra(n)&&"chain"in n&&!n.chain),s=ta(t);return Ce(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Oi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ne([this.value()],arguments))})})),t}function fc(){}var pc=Vi(je),hc=Vi(Ae),dc=Vi(Le);function gc(t){return xo(t)?Ue(zo(t)):function(t){return function(e){return Er(e,t)}}(t)}var mc=Gi(),vc=Gi(!0);function yc(){return[]}function wc(){return!1}var bc=Ui((function(t,e){return t+e}),0),_c=Zi("ceil"),Sc=Ui((function(t,e){return t/e}),1),xc=Zi("floor");var kc=Ui((function(t,e){return t*e}),1),Ec=Zi("round"),Cc=Ui((function(t,e){return t-e}),0);return Hn.after=function(t,e){if("function"!=typeof e)throw new It(r);return t=va(t),function(){if(--t<1)return e.apply(this,arguments)}},Hn.ary=Is,Hn.assign=Sa,Hn.assignIn=xa,Hn.assignInWith=ka,Hn.assignWith=Ea,Hn.at=Ca,Hn.before=Os,Hn.bind=js,Hn.bindAll=nc,Hn.bindKey=Ns,Hn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Gs(t)?t:[t]},Hn.chain=gs,Hn.chunk=function(t,e,r){e=(r?So(t,e,r):e===n)?1:bn(va(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=st(me(i/e));oo?0:o+r),(i=i===n||i>o?o:va(i))<0&&(i+=o),i=r>i?0:ya(i);r>>0)?(t=_a(t))&&("string"==typeof e||null!=e&&!ca(e))&&!(e=fi(e))&&sn(t)?xi(hn(t),0,r):t.split(e,r):[]},Hn.spread=function(t,e){if("function"!=typeof t)throw new It(r);return e=null==e?0:bn(va(e),0),Yr((function(n){var r=n[e],i=xi(n,0,e);return r&&Ne(i,r),ke(t,this,i)}))},Hn.tail=function(t){var e=null==t?0:t.length;return e?oi(t,1,e):[]},Hn.take=function(t,e,r){return t&&t.length?oi(t,0,(e=r||e===n?1:va(e))<0?0:e):[]},Hn.takeRight=function(t,e,r){var i=null==t?0:t.length;return i?oi(t,(e=i-(e=r||e===n?1:va(e)))<0?0:e,i):[]},Hn.takeRightWhile=function(t,e){return t&&t.length?gi(t,lo(e,3),!1,!0):[]},Hn.takeWhile=function(t,e){return t&&t.length?gi(t,lo(e,3)):[]},Hn.tap=function(t,e){return e(t),t},Hn.throttle=function(t,e,n){var i=!0,o=!0;if("function"!=typeof t)throw new It(r);return ra(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),Ds(t,e,{leading:i,maxWait:e,trailing:o})},Hn.thru=ms,Hn.toArray=ga,Hn.toPairs=qa,Hn.toPairsIn=Ha,Hn.toPath=function(t){return Gs(t)?je(t,zo):fa(t)?[t]:Oi(Bo(_a(t)))},Hn.toPlainObject=ba,Hn.transform=function(t,e,n){var r=Gs(t),i=r||Js(t)||pa(t);if(e=lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:ra(t)&&ta(o)?$n(Gt(t)):{}}return(i?Ce:Sr)(t,(function(t,r,i){return e(n,t,r,i)})),n},Hn.unary=function(t){return Is(t,1)},Hn.union=is,Hn.unionBy=os,Hn.unionWith=ss,Hn.uniq=function(t){return t&&t.length?pi(t):[]},Hn.uniqBy=function(t,e){return t&&t.length?pi(t,lo(e,2)):[]},Hn.uniqWith=function(t,e){return e="function"==typeof e?e:n,t&&t.length?pi(t,n,e):[]},Hn.unset=function(t,e){return null==t||hi(t,e)},Hn.unzip=as,Hn.unzipWith=cs,Hn.update=function(t,e,n){return null==t?t:di(t,e,bi(n))},Hn.updateWith=function(t,e,r,i){return i="function"==typeof i?i:n,null==t?t:di(t,e,bi(r),i)},Hn.values=$a,Hn.valuesIn=function(t){return null==t?[]:Je(t,Fa(t))},Hn.without=us,Hn.words=tc,Hn.wrap=function(t,e){return zs(bi(e),t)},Hn.xor=ls,Hn.xorBy=fs,Hn.xorWith=ps,Hn.zip=hs,Hn.zipObject=function(t,e){return yi(t||[],e||[],rr)},Hn.zipObjectDeep=function(t,e){return yi(t||[],e||[],ei)},Hn.zipWith=ds,Hn.entries=qa,Hn.entriesIn=Ha,Hn.extend=xa,Hn.extendWith=ka,lc(Hn,Hn),Hn.add=bc,Hn.attempt=ec,Hn.camelCase=Ua,Hn.capitalize=Va,Hn.ceil=_c,Hn.clamp=function(t,e,r){return r===n&&(r=e,e=n),r!==n&&(r=(r=wa(r))==r?r:0),e!==n&&(e=(e=wa(e))==e?e:0),ur(wa(t),e,r)},Hn.clone=function(t){return lr(t,4)},Hn.cloneDeep=function(t){return lr(t,5)},Hn.cloneDeepWith=function(t,e){return lr(t,5,e="function"==typeof e?e:n)},Hn.cloneWith=function(t,e){return lr(t,4,e="function"==typeof e?e:n)},Hn.conformsTo=function(t,e){return null==e||fr(t,e,Da(e))},Hn.deburr=Wa,Hn.defaultTo=function(t,e){return null==t||t!=t?e:t},Hn.divide=Sc,Hn.endsWith=function(t,e,r){t=_a(t),e=fi(e);var i=t.length,o=r=r===n?i:ur(va(r),0,i);return(r-=e.length)>=0&&t.slice(r,o)==e},Hn.eq=$s,Hn.escape=function(t){return(t=_a(t))&&Z.test(t)?t.replace(K,rn):t},Hn.escapeRegExp=function(t){return(t=_a(t))&&it.test(t)?t.replace(rt,"\\$&"):t},Hn.every=function(t,e,r){var i=Gs(t)?Ae:mr;return r&&So(t,e,r)&&(e=n),i(t,lo(e,3))},Hn.find=ws,Hn.findIndex=Wo,Hn.findKey=function(t,e){return Re(t,lo(e,3),Sr)},Hn.findLast=bs,Hn.findLastIndex=Go,Hn.findLastKey=function(t,e){return Re(t,lo(e,3),xr)},Hn.floor=xc,Hn.forEach=_s,Hn.forEachRight=Ss,Hn.forIn=function(t,e){return null==t?t:br(t,lo(e,3),Fa)},Hn.forInRight=function(t,e){return null==t?t:_r(t,lo(e,3),Fa)},Hn.forOwn=function(t,e){return t&&Sr(t,lo(e,3))},Hn.forOwnRight=function(t,e){return t&&xr(t,lo(e,3))},Hn.get=Pa,Hn.gt=Us,Hn.gte=Vs,Hn.has=function(t,e){return null!=t&&yo(t,e,Pr)},Hn.hasIn=Ia,Hn.head=Qo,Hn.identity=sc,Hn.includes=function(t,e,n,r){t=Qs(t)?t:$a(t),n=n&&!r?va(n):0;var i=t.length;return n<0&&(n=bn(i+n,0)),la(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&ze(t,e,n)>-1},Hn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:va(n);return i<0&&(i=bn(r+i,0)),ze(t,e,i)},Hn.inRange=function(t,e,r){return e=ma(e),r===n?(r=e,e=0):r=ma(r),function(t,e,n){return t>=_n(e,n)&&t=-9007199254740991&&t<=p},Hn.isSet=ua,Hn.isString=la,Hn.isSymbol=fa,Hn.isTypedArray=pa,Hn.isUndefined=function(t){return t===n},Hn.isWeakMap=function(t){return ia(t)&&vo(t)==j},Hn.isWeakSet=function(t){return ia(t)&&"[object WeakSet]"==Tr(t)},Hn.join=function(t,e){return null==t?"":yn.call(t,e)},Hn.kebabCase=Ga,Hn.last=Xo,Hn.lastIndexOf=function(t,e,r){var i=null==t?0:t.length;if(!i)return-1;var o=i;return r!==n&&(o=(o=va(r))<0?bn(i+o,0):_n(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):Be(t,He,o,!0)},Hn.lowerCase=Ka,Hn.lowerFirst=Qa,Hn.lt=ha,Hn.lte=da,Hn.max=function(t){return t&&t.length?vr(t,sc,Ar):n},Hn.maxBy=function(t,e){return t&&t.length?vr(t,lo(e,2),Ar):n},Hn.mean=function(t){return $e(t,sc)},Hn.meanBy=function(t,e){return $e(t,lo(e,2))},Hn.min=function(t){return t&&t.length?vr(t,sc,zr):n},Hn.minBy=function(t,e){return t&&t.length?vr(t,lo(e,2),zr):n},Hn.stubArray=yc,Hn.stubFalse=wc,Hn.stubObject=function(){return{}},Hn.stubString=function(){return""},Hn.stubTrue=function(){return!0},Hn.multiply=kc,Hn.nth=function(t,e){return t&&t.length?Vr(t,va(e)):n},Hn.noConflict=function(){return pe._===this&&(pe._=qt),this},Hn.noop=fc,Hn.now=Ps,Hn.pad=function(t,e,n){t=_a(t);var r=(e=va(e))?pn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Wi(ve(i),n)+t+Wi(me(i),n)},Hn.padEnd=function(t,e,n){t=_a(t);var r=(e=va(e))?pn(t):0;return e&&re){var i=t;t=e,e=i}if(r||t%1||e%1){var o=kn();return _n(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Zr(t,e)},Hn.reduce=function(t,e,n){var r=Gs(t)?De:We,i=arguments.length<3;return r(t,lo(e,4),n,i,dr)},Hn.reduceRight=function(t,e,n){var r=Gs(t)?Fe:We,i=arguments.length<3;return r(t,lo(e,4),n,i,gr)},Hn.repeat=function(t,e,r){return e=(r?So(t,e,r):e===n)?1:va(e),Jr(_a(t),e)},Hn.replace=function(){var t=arguments,e=_a(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Hn.result=function(t,e,r){var i=-1,o=(e=_i(e,t)).length;for(o||(o=1,t=n);++ip)return[];var n=d,r=_n(t,d);e=lo(e),t-=d;for(var i=Ke(r,e);++n=s)return t;var c=r-pn(i);if(c<1)return i;var u=a?xi(a,0,c).join(""):t.slice(0,c);if(o===n)return u+i;if(a&&(c+=u.length-c),ca(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=At(o.source,_a(dt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===n?c:p)}}else if(t.indexOf(fi(o),c)!=c){var h=u.lastIndexOf(o);h>-1&&(u=u.slice(0,h))}return u+i},Hn.unescape=function(t){return(t=_a(t))&&Q.test(t)?t.replace(G,gn):t},Hn.uniqueId=function(t){var e=++Mt;return _a(t)+e},Hn.upperCase=Ya,Hn.upperFirst=Xa,Hn.each=_s,Hn.eachRight=Ss,Hn.first=Qo,lc(Hn,function(){var t={};return Sr(Hn,(function(e,n){Lt.call(Hn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),Hn.VERSION="4.17.21",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Hn[t].placeholder=Hn})),Ce(["drop","take"],(function(t,e){Wn.prototype[t]=function(r){r=r===n?1:bn(va(r),0);var i=this.__filtered__&&!e?new Wn(this):this.clone();return i.__filtered__?i.__takeCount__=_n(r,i.__takeCount__):i.__views__.push({size:_n(r,d),type:t+(i.__dir__<0?"Right":"")}),i},Wn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ce(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Wn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ce(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Wn.prototype[t]=function(){return this[n](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Wn.prototype[t]=function(){return this.__filtered__?new Wn(this):this[n](1)}})),Wn.prototype.compact=function(){return this.filter(sc)},Wn.prototype.find=function(t){return this.filter(t).head()},Wn.prototype.findLast=function(t){return this.reverse().find(t)},Wn.prototype.invokeMap=Yr((function(t,e){return"function"==typeof t?new Wn(this):this.map((function(n){return jr(n,t,e)}))})),Wn.prototype.reject=function(t){return this.filter(Rs(lo(t)))},Wn.prototype.slice=function(t,e){t=va(t);var r=this;return r.__filtered__&&(t>0||e<0)?new Wn(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),e!==n&&(r=(e=va(e))<0?r.dropRight(-e):r.take(e-t)),r)},Wn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Wn.prototype.toArray=function(){return this.take(d)},Sr(Wn.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=Hn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(Hn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof Wn,u=a[0],l=c||Gs(e),f=function(t){var e=o.apply(Hn,Ne([t],a));return i&&p?e[0]:e};l&&r&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,h=!!this.__actions__.length,d=s&&!p,g=c&&!h;if(!s&&l){e=g?e:new Wn(this);var m=t.apply(e,a);return m.__actions__.push({func:ms,args:[f],thisArg:n}),new Vn(m,p)}return d&&g?t.apply(this,a):(m=this.thru(f),d?i?m.value()[0]:m.value():m)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=Ot[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Hn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Gs(i)?i:[],t)}return this[n]((function(n){return e.apply(Gs(n)?n:[],t)}))}})),Sr(Wn.prototype,(function(t,e){var n=Hn[e];if(n){var r=n.name+"";Lt.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:e,func:n})}})),Nn[Hi(n,2).name]=[{name:"wrapper",func:n}],Wn.prototype.clone=function(){var t=new Wn(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t},Wn.prototype.reverse=function(){if(this.__filtered__){var t=new Wn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Wn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Gs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},Hn.prototype.plant=function(t){for(var e,r=this;r instanceof Un;){var i=Ho(r);i.__index__=0,i.__values__=n,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,e},Hn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Wn){var e=t;return this.__actions__.length&&(e=new Wn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[rs],thisArg:n}),new Vn(e,this.__chain__)}return this.thru(rs)},Hn.prototype.toJSON=Hn.prototype.valueOf=Hn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},Hn.prototype.first=Hn.prototype.head,ee&&(Hn.prototype[ee]=function(){return this}),Hn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(pe._=mn,define((function(){return mn}))):de?((de.exports=mn)._=mn,he._=mn):pe._=mn}.call(this),e.exports}.call({});const Jt=f.DiagnosticCategory;function Yt(t){return{line:t.row+1,offset:t.column+1}}function Xt(t){return new h.Point(t.line-1,t.offset-1)}function te(t){return ee(t.start,t.end)}function ee(t,e){return new h.Range(Xt(t),Xt(e))}function ne(t){const e=re(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function re(t){".json"!==b.extname(t)&&(t+=".json");let{config:e}=f.readConfigFile(t,(t=>f.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=re(b.join(b.dirname(t),e.extends));e=Object.assign({},n,e)}return e}function ie(t){return{label:se(t.prefixDisplayParts)+t.parameters.map((t=>se(t.displayParts))).join(se(t.separatorDisplayParts))+se(t.suffixDisplayParts),documentation:se(t.documentation),parameters:t.parameters.map(oe)}}function oe(t){return{label:se(t.displayParts),documentation:se(t.documentation)}}function se(t){return t.map((t=>t.text)).join("")}const ae=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(f.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function ce(t,e){const n=new Error("Max time reached");return atom.notifications.addError(`${t} took more than ${e} seconds to complete`,{dismissable:!0,description:t+" took too long to complete and was terminated.",stack:n.stack}),n}async function ue(t,e){const n=function(t,e){const n=performance.now();let r=n;return async function(){const i=performance.now();return i-r>t&&(await new Promise(setImmediate),r=i),i-n<=e}}(100,5e3),r=new g;try{const i=atom.grammars.grammarForId(e),o=atom.grammars.languageModeForGrammarAndBuffer(i,r);r.setLanguageMode(o),r.setText(t);const s=r.getEndPosition();o.startTokenizing&&o.startTokenizing(),await async function(t){return new Promise((e=>{if(t.fullyTokenized||t.tree)e(void 0);else if(t.onDidTokenize){const n=t.onDidTokenize((()=>{n.dispose(),e(void 0)}))}else e(void 0)}))}(o);const a=o.buildHighlightIterator();if(a.getOpenScopeIds&&a.getCloseScopeIds){let t={row:0,column:0};a.seek(t);const e=[];for(;t.row"")),...a.getOpenScopeIds().map((t=>``))),a.moveToSuccessor();const i=a.getPosition();if(e.push(r.getTextInRange([t,i]).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")),!await n()){console.error(ce("Atom-TypeScript: Highlighter",5));break}t=i}return e.join("")}return t}finally{r.destroy()}}function le(t){return void 0!==t&&ge(b.extname(t))}function fe(){const t=atom.config.get("atom-typescript"),e=t.tsSyntaxScopes;return t.allowJS&&e.push(...t.jsSyntaxScopes),e}function pe(t){return le(t.getPath())&&he(t)}function he(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return fe().includes(e)}function de(t){return null!=t}const ge=function(t,e){const n=Zt.memoize((n=>Zt.throttle(t,e,{leading:!0})));return t=>n(t)(t)}((t=>{const e=atom.config.get("atom-typescript"),n=e.tsFileExtensions;if(e.allowJS&&n.push(...e.jsFileExtensions),e.extensionsFromGrammars){var r;const t=null!==(r=atom.config.get("core.customFileTypes"))&&void 0!==r?r:{},e=fe();n.push(...[].concat(...e.map((t=>{var e;return null===(e=atom.grammars.grammarForScopeName(t))||void 0===e?void 0:e.fileTypes})),...e.map((e=>t[e]))).filter(de).map((t=>"."+t)))}return n.includes(t)}),5e3);function me(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Yt(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}function ve(t){const e=t.dataset.startLine;return void 0!==e?parseInt(e,10)-1:0}function ye(t){const e=t.dataset.endLine;return void 0!==e?parseInt(e,10)-1:0}function we(t,e,n){const r=n.querySelectorAll(":scope > ol > li.node");if(0===r.length)return;for(const n of Array.from(r)){const r=ve(n),i=ye(n);if(isFinite(r)&&isFinite(i)){if(t>=r&&e<=i){const r=we(t,e,n);return r||n}if(isFinite(i)&&e=i&&e<=o?n:void 0}function be(t){return t.spans.length>0?t.spans[0].start.line-1:0}function _e(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;ibe(t)-be(e)));for(const e of t.childItems)Se(e)}}class xe{constructor(t){this.props=t,pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}async destroy(){await pt.destroy(this)}render(){var t,e,n,r;const i=this.props.navTree,{ctrl:o}=this.props,s=(i.childItems?"nested-":"")+"item"+(i.collapsed?" collapsed":" expanded"),a=this.getStyles();return pt.dom("li",{className:"node entry exanded list-"+s,dataset:{startLine:null===(t=this.props.navTree.spans[0])||void 0===t||null===(e=t.start)||void 0===e?void 0:e.line,endLine:null===(n=this.props.navTree.spans[0])||void 0===n||null===(r=n.end)||void 0===r?void 0:r.line}},pt.dom("div",{className:"header list-item",on:{click:t=>this.entryClicked(t,i)}},pt.dom("span",{className:a},i.text)),pt.dom("ol",{className:"entries list-tree"},i.childItems?i.childItems.map((t=>pt.dom(xe,{navTree:t,ctrl:o}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e="icon icon-"+t;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>"modifier-"+t.trim())).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,Qt(pt.update(this))):this.props.ctrl.gotoNode(e)}}class ke{constructor(t){this.props=t,this.subscriptions=new d,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await pt.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=({newBufferPosition:t})=>{var e,n;const r=this.firstNode();if(!r)return;const i=t.row,o=null!==(e=null===(n=we(i,i,r))||void 0===n?void 0:n.querySelector(".header"))&&void 0!==e?e:void 0,s=this.getSelectedNode();o!==s&&(s&&s.classList.remove("selected"),o&&o.classList.add("selected"))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!pe(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree(),this.editorScrolling=t.onDidChangeCursorPosition(this.selectAtCursorLine),this.editorChanging=t.onDidStopChanging(this.loadNavTree)},Se(t.navTree),pt.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await pt.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.subscriptions.dispose(),await pt.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){var t;return null!==(t=this.element.querySelector(".header.selected"))&&void 0!==t?t:void 0}clearSelection(){const t=this.element.querySelectorAll(".header.selected");for(let e=0;e0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(Se(t),Zt.isEqual(t,this.props.navTree))return;_e(t,this.props.navTree),this.props.navTree=t;const e=this.firstNode();if(e){const t=this.getCursorLine();void 0!==t&&this.markSelection(we(t,t,e))}}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}}class Ee{constructor(t){this.comp=new ke({navTree:t.navTree})}static create(t){return Ee.instance||(Ee.instance=new Ee(t)),Ee.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){Ee.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}Ee.instance=null;var Ce,Te=u,Ae=a,Pe=s;Ce=function(t,e){return Ie(t,e)};var Ie=function(t,e){return t?Oe(t,e):new je(e)};Ce.createStream=Ie;function Oe(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new je(e);return t.pipe(n),n}function je(t){Te.Transform.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof Te.Readable&&(e.encoding=t._readableState.encoding)}))}Ce.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),Oe(t)},Ce.LineStream=je,Ae.inherits(je,Te.Transform),je.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},je.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void Pe.setImmediate((function(){i._pushBuffer(t,e,n)}))}}n()},je.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},je.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};class Ne{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const De=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),Fe=new Set(Object.keys({geterr:!0,geterrForProject:!0})),Le=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class Me{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new m,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new Ne(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};window.atom_typescript_debug&&console.log("sending request",n);let r=void 0;(function(t){return De.has(t)}(t)||this.multistepSupported&&function(t){return Fe.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new v({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error("exited with code: "+t)):null!==n&&e(new Error("terminated on signal: "+n))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(Be()).pipe(new ze)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,Le.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}var Re,Be=T(Ce);class ze extends l{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function qe(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,c=0,u=0,l=0,f=0;function p(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(He(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(He(e));return s=15}if($e(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,u=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if($e(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=p(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var h=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:h,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function He(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function $e(t){return 10===t||13===t||8232===t||8233===t}function Ue(t){return t>=48&&t<=57}(Re||(Re={})).DEFAULT={allowTrailingComma:!1};var Ve,We,Ge=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=Re.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return function(t,e,n){void 0===n&&(n=Re.DEFAULT);var r=qe(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),c=i(e.onObjectEnd),u=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),p=o(e.onSeparator),h=i(e.onComment),d=o(e.onError),g=n&&n.disallowComments,m=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:g||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:g?y(10):h();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),d(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function _(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(w(!1),6===r.getToken()?(p(":"),v(),k()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function S(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),2===r.getToken()&&m)break}else t&&y(6,[],[]);_()||y(4,[],[2,5]),t=!0}return c(),2!==r.getToken()?y(7,[2],[]):v(),!0}function x(){u(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),4===r.getToken()&&m)break}else t&&y(6,[],[]);k()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function k(){switch(r.getToken()){case 3:return x();case 1:return S();case 10:return w(!0);default:return b()}}if(v(),17===r.getToken())return!!n.allowEmptyContent||(y(4,[],[]),!1);if(!k())return y(4,[],[]),!1;17!==r.getToken()&&y(9,[],[])}(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},Ke=x,Qe=b;We=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()};var Ze,Je,Ye,Xe,tn,en,nn,rn,on,sn,an=b,cn=!1;function un(){Je={},Ye="win32"===process.platform,Xe=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,tn=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(en={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=Xe.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=tn.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},nn=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(rn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,nn.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},Je=Ye?en.parse:rn.parse,on=rn.parse,Je.posix=on,sn=en.parse,Je.win32=sn}var ln=an.parse||(cn||(cn=!0,un()),Je),fn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=ln(t);i.dir!==r[r.length-1];)r.push(i.dir),i=ln(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return an.resolve(n,r,t)})))}),[])};Ze=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return fn(t,r)}),e);var i=fn(t,r);return e&&e.paths?i.concat(e.paths):i};var pn;pn=function(t,e){return e||{}};var hn,dn,gn={},mn={},vn=Array.prototype.slice,yn=Object.prototype.toString;function wn(t,e){for(var n=t.split("."),r=e.split(" "),i=r.length>1?r[0]:"=",o=(r.length>1?r[1]:r[0]).split("."),s=0;s<3;++s){var a=parseInt(n[s]||0,10),c=parseInt(o[s]||0,10);if(a!==c)return"<"===i?a="===i&&a>=c}return">="===i}function bn(t,e){var n=e.split(/ ?&& ?/);if(0===n.length)return!1;for(var r=0;r= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'),hn=function(t,e){return gn(_n,t)&&function(t,e){if("boolean"==typeof e)return e;var n=void 0===t?process.versions&&process.versions.node&&process.versions.node:t;if("string"!=typeof n)throw new TypeError(void 0===t?"Unable to determine current node version":"If provided, a valid node version is required");if(e&&"object"==typeof e){for(var r=0;r1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=parseInt(An[i]||0,10),s=parseInt(r[i]||0,10);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function In(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}');var Nn={};for(var Dn in jn)Object.prototype.hasOwnProperty.call(jn,Dn)&&(Nn[Dn]=On(jn[Dn]));Ve.core=Nn;Ve.isCore=function(t){return hn(t)};var Fn=x,Ln=b,Mn=Fn.realpathSync&&"function"==typeof Fn.realpathSync.native?Fn.realpathSync.native:Fn.realpathSync,Rn=function(t){try{var e=Fn.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isFile()||e.isFIFO()},Bn=function(t){try{var e=Fn.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isDirectory()},zn=function(t){try{return Mn(t)}catch(t){if("ENOENT"!==t.code)throw t}return t},qn=function(t,e,n){return n&&!1===n.preserveSymlinks?t(e):e},Hn=function(t,e){var n=t(e);try{return JSON.parse(n)}catch(t){}};async function $n(t,e){const{NODE_PATH:n}=process.env,r=e+".js",i=await async function(t,e){return new Promise(((n,r)=>Un(t,e,((t,e)=>{t?r(t):void 0===e?r(new Error("Module path is undefined")):n(e)}))))}("typescript/lib/"+r,{basedir:b.dirname(t),paths:void 0!==n?n.split(b.delimiter):void 0}).catch((async()=>{const e=await async function(t){const e=await async function(t){let e=t,n=b.dirname(e);for(;e!==n;){const t=await Wn(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=b.dirname(e)}}(t);if(e)try{const t=Ge(await async function(t){return new Promise(((e,n)=>x.readFile(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let r;if("object"==typeof(n=t)&&null!==n&&"string"==typeof n.tsdkPath)r=t.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(t))return;r=b.dirname(t["typescript.tsdk"])}return b.isAbsolute(r)?r:b.join(e.basedir,r)}catch(t){console.warn(t)}var n}(b.dirname(t));if(void 0!==e){const t=b.join(e,"lib",r);if(await Vn(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=b.join(n,"lib",r);if(await Vn(t))return t}return require.resolve("typescript/lib/"+r)})),o=b.resolve(i,"../../package.json");return{version:require(o).version,pathToBin:i}}Ve.sync=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=pn(0,e),r=n.isFile||Rn,i=n.readFileSync||Fn.readFileSync,o=n.isDirectory||Bn,s=n.realpathSync||zn,a=n.readPackageSync||Hn;if(n.readFileSync&&n.readPackageSync)throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive.");var c=n.packageIterator,u=n.extensions||[".js"],l=!1!==n.includeCoreModules,f=n.basedir||Ln.dirname(We()),p=n.filename||f;n.paths=n.paths||[];var h=qn(s,Ln.resolve(f),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var d=Ln.resolve(h,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(d+="/");var g=y(d)||b(d);if(g)return qn(s,g,n)}else{if(l&&hn(t))return t;var m=function(t,e){for(var r=function(){return function(t,e,n){for(var r=Ze(e,n,t),i=0;ix.access(t,x.constants.F_OK,(t=>{e(!t)}))))}async function Wn(t,e){for(const n of e){const e=b.join(t,...n);if(await Vn(e))return e}}class Gn{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new m,this.subscriptions=new d,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await $n(t,"tsserver"),r=this.tsserverInstancePerTsconfig?f.findConfigFile(t,(t=>f.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new Me(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function Kn(t){return{grammarScopes:fe(),priority:100,async highlight(e,n){if(!pe(e))return;const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(te))}(r.file,o.body)):void 0}}}async function Qn(t,e,n){if(void 0===t)return null;const r=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),i=t.tags?t.tags.map((t=>{const n="atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-"+t.name;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null,o=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},t.documentation,i),s=t.displayString.replace(/^\(.+?\)\s+/,"");return[await n(s),r,o]}const Zn=Symbol.for("react.element"),Jn={dom:(t,e,...n)=>n.length>0?{$$typeof:Zn,type:t,ref:null,props:{...e,children:n}}:{$$typeof:Zn,type:t,ref:null,props:{...e}}};class Yn{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=fe()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await Qn(i,Jn,Xn);return{component:()=>Jn.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:h.Range.fromObject([Xt(i.start),Xt(i.end)])}}catch(t){return}}}async function Xn(t){const e=atom.config.get("editor.fontFamily"),n=await ue(t.replace(/\r?\n$/,""),"source.ts");return Jn.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n}})}function tr(t){const e=te(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function er(t){return{uri:t.file,range:ee(t.start,t.end),name:void 0}}class nr{constructor(t){this.props=t,pt.initialize(this)}async update(t){return this.props={...this.props,...t},pt.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return pt.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var rr,ir,or,sr={},ar=!1;function cr(){return ar||(ar=!0,function(){var t,e;t=b.sep,rr=function(e,n,r){var i,o,s,a,c;for(o=e.length-1;e[o]===t;)o--;for(c=0,s=o,i=null;o>=0;)e[o]===t?(c++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=u&&(r=r.slice(0,u)),r}}.call(ur={})),ur}var pr,hr,dr,gr=!1;function mr(){return gr||(gr=!0,function(){var t;t=b.sep,pr=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)p.push(e);return p}.apply(this);for(u=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(c=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!c)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),u=null,s=0;spt.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=sr.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var yr={},wr=yr&&yr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yr,"__esModule",{value:!0});const br=h,_r=wr(pt),Sr=_r.default.dom,xr=wr(sr);yr=class{constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new br.CompositeDisposable,_r.default.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new br.Disposable((()=>{e.removeEventListener("blur",n)})))}static setScheduler(t){_r.default.setScheduler(t)}static getScheduler(){return _r.default.getScheduler()}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),_r.default.destroy(this)}registerAtomCommands(){return atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t){let e=!1;return"items"in t&&(this.props.items=t.items,e=!0),"maxResults"in t&&(this.props.maxResults=t.maxResults,e=!0),"filter"in t&&(this.props.filter=t.filter,e=!0),"filterQuery"in t&&(this.props.filterQuery=t.filterQuery,e=!0),"query"in t&&(this.refs.queryEditor.setText(t.query),e=!1),"selectQuery"in t&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),"order"in t&&(this.props.order=t.order),"emptyMessage"in t&&(this.props.emptyMessage=t.emptyMessage),"errorMessage"in t&&(this.props.errorMessage=t.errorMessage),"infoMessage"in t&&(this.props.infoMessage=t.infoMessage),"loadingMessage"in t&&(this.props.loadingMessage=t.loadingMessage),"loadingBadge"in t&&(this.props.loadingBadge=t.loadingBadge),"itemsClassList"in t&&(this.props.itemsClassList=t.itemsClassList),"initialSelectionIndex"in t&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),_r.default.update(this)}render(){return Sr.div({},Sr(br.TextEditor,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&_r.default.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),Sr.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?Sr.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?Sr.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?Sr.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?Sr.div({className:"loading"},Sr.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?Sr.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r,i=xr.default.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),_r.default.getScheduler().getNextUpdatePromise()):_r.default.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class kr{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new br.Disposable((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),_r.default.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,_r.default.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var Er=T(yr);async function Cr({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,c="Loading...",u=!1;const l=t=>{u||Qt(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},c=void 0,a="Please enter a search value");const f=new Er({items:[],elementForItem:t=>pt.render(e(t,f)),filterKeyForItem:t=>""+t[n],didChangeSelection:r,didCancelSelection:()=>{u=!0,o(void 0)},didConfirmSelection:t=>{u=!0,o(t)},loadingMessage:c,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&Qt(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const Tr=[];function Ar(t,e,n){Tr.push({selector:t,command:e,desc:n})}async function Pr(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e,n;const r=(await new Promise(((e,n)=>x.readFile(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),i=void 0!==t.contextStart&&void 0!==t.contextEnd?r.slice(t.contextStart.line-1,t.contextEnd.line):r,o=(await ue(i.join("\n"),"source.tsx")).split("\n")[t.start.line-(null!==(e=null===(n=t.contextStart)||void 0===n?void 0:n.line)&&void 0!==e?e:1)];return{...t,hlText:o}}))),i=await Cr({items:r,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(vr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),pt.dom("div",{className:"pull-right"},"line: ",t.start.line),pt.dom(nr,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function Ir(t,e,n){if(t.body)if(t.body.length>1){const r=await Cr({items:t.body,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(vr,{label:t.file,query:e.getFilterQuery()}),pt.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function Or(t){const e=t.spans.map(te).reduce(((t,e)=>e.union(t)));return{kind:Nr[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?te(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(Or).sort(jr):[]}}function jr(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}Ar("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await Pr(i,e,t.histGoForward)}}))),Ar("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await Ir(i,e,t.histGoForward)}})));const Nr={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class Dr{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=fe(),this.priority=100,this.disposables=new d;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(ie),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function Fr(t){return pt.dom("li",null,t.description)}class Lr{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=fe().map((t=>t.includes(".")?"."+t:t)).join(", "),this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(Mr);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if($r.has(e))return e;return}(function(t,e){let n;const r=new h.Range([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(Br(t.scopeDescriptor.getScopesArray(),"string.template.")&&!Br(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=sr.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...qr(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);Qt((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),!(null===(t=r)||void 0===t?void 0:t.details.codeActions))return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await Cr({items:r.details.codeActions,itemTemplate:Fr,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?r.codeActions[0].description+"\n\n":"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=Rr(this.lastSuggestions.prefix,n.offset),i=Rr(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(zr.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(zr.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const Mr=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function Rr(t,e){return e-("."===t?0:t.length)}function Br(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function zr(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?te(e.replacementSpan):void 0,type:Hr[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function qr(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:e.text+"($1)",text:void 0}:e}const Hr={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},$r=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function Ur(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function Vr(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}Ar("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",async didDispatch(e){const n=me(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await Ur(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await Cr({items:s,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(vr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await Vr(a,i,t)}})));class Wr{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>te(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const c=await Ur(r,{file:n,...Yt(e)});return a.push(...c),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return Vr(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function Gr(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new v({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error("Tsc ended with nonzero exit code "+t))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}Ar("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),Ar("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",async didDispatch(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${b.sep}node_modules${b.sep}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),Ar("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch(){t.clearErrors()}}))),Ar("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(te(e[n]),e[n].newText)}(e,s)}))}}))),Ar("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",async didDispatch(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await $n(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await Gr(i,t.getPath()),atom.notifications.addSuccess("Successfully created tsconfig.json in "+t.getPath()))}}))),Ar("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),Ar("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var Kr,Qr,Zr={},Jr=!1;function Yr(){return Jr||(Jr=!0,Kr={},function(){var t="object"==typeof self&&self.self===self&&self||"object"==typeof A&&A.global===A&&A||this||{},e=t._,n=Array.prototype,r=Object.prototype,i="undefined"!=typeof Symbol?Symbol.prototype:null,o=n.push,s=n.slice,a=r.toString,c=r.hasOwnProperty,u=Array.isArray,l=Object.keys,f=Object.create,p=function(){},h=function(t){return t instanceof h?t:this instanceof h?void(this._wrapped=t):new h(t)};void 0===Kr||Kr.nodeType?t._=h:(!module.nodeType&&Kr&&(Kr=h),Qr=h,Kr._=Qr),h.VERSION="1.9.1";var d,g=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},m=function(t,e,n){return h.iteratee!==d?h.iteratee(t,e):null==t?h.identity:h.isFunction(t)?g(t,e,n):h.isObject(t)&&!h.isArray(t)?h.matcher(t):h.property(t)};h.iteratee=d=function(t,e){return m(t,e,1/0)};var v=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&e<=S};h.each=h.forEach=function(t,e,n){var r,i;if(e=g(e,n),k(t))for(r=0,i=t.length;r0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,g(n,i,4),r,o)}};h.reduce=h.foldl=h.inject=E(1),h.reduceRight=h.foldr=E(-1),h.find=h.detect=function(t,e,n){var r=(k(t)?h.findIndex:h.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},h.filter=h.select=function(t,e,n){var r=[];return e=m(e,n),h.each(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r},h.reject=function(t,e,n){return h.filter(t,h.negate(m(e)),n)},h.every=h.all=function(t,e,n){e=m(e,n);for(var r=!k(t)&&h.keys(t),i=(r||t).length,o=0;o=0},h.invoke=v((function(t,e,n){var r,i;return h.isFunction(e)?i=e:h.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),h.map(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=_(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),h.pluck=function(t,e){return h.map(t,h.property(e))},h.where=function(t,e){return h.filter(t,h.matcher(e))},h.findWhere=function(t,e){return h.find(t,h.matcher(e))},h.max=function(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ao&&(o=r);else e=m(e,n),h.each(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o},h.min=function(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ar||void 0===n)return 1;if(n0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+c,a):c=o>=0?Math.min(o+1,c):o+c+1;else if(n&&o&&c)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(s.call(r,a,c),h.isNaN))>=0?o+a:-1;for(o=t>0?a:c-1;o>=0&&oe?(r&&(clearTimeout(r),r=null),a=u,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,l)),s};return u.cancel=function(){clearTimeout(r),a=0,r=i=o=null},u},h.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=v((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=h.delay(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s},h.wrap=function(t,e){return h.partial(e,t)},h.negate=function(t){return function(){return!t.apply(this,arguments)}},h.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},h.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},h.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},h.once=h.partial(h.before,2),h.restArguments=v;var N=!{toString:null}.propertyIsEnumerable("toString"),D=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],F=function(t,e){var n=D.length,i=t.constructor,o=h.isFunction(i)&&i.prototype||r,s="constructor";for(b(t,s)&&!h.contains(e,s)&&e.push(s);n--;)(s=D[n])in t&&t[s]!==o[s]&&!h.contains(e,s)&&e.push(s)};h.keys=function(t){if(!h.isObject(t))return[];if(l)return l(t);var e=[];for(var n in t)b(t,n)&&e.push(n);return N&&F(t,e),e},h.allKeys=function(t){if(!h.isObject(t))return[];var e=[];for(var n in t)e.push(n);return N&&F(t,e),e},h.values=function(t){for(var e=h.keys(t),n=e.length,r=Array(n),i=0;i1&&(r=g(r,e[1])),e=h.allKeys(t)):(r=B,e=P(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=h.map(P(e,!1,!1),String),r=function(t,n){return!h.contains(e,n)}),h.pick(t,r,n)})),h.defaults=L(h.allKeys,!0),h.create=function(t,e){var n=y(t);return e&&h.extendOwn(n,e),n},h.clone=function(t){return h.isObject(t)?h.isArray(t)?t.slice():h.extend({},t):t},h.tap=function(t,e){return e(t),t},h.isMatch=function(t,e){var n=h.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},H=h.invert(q),$=function(t){var e=function(e){return t[e]},n="(?:"+h.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};h.escape=$(q),h.unescape=$(H),h.result=function(t,e,n){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(n)?n.call(t):n;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var V=/(.)^/,W={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},G=/\\|'|\r|\n|\u2028|\u2029/g,K=function(t){return"\\"+W[t]};h.template=function(t,e,n){!e&&n&&(e=n),e=h.defaults({},e,h.templateSettings);var r,i=RegExp([(e.escape||V).source,(e.interpolate||V).source,(e.evaluate||V).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(G,K),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,h)},c=e.variable||"obj";return a.source="function("+c+"){\n"+s+"}",a},h.chain=function(t){var e=h(t);return e._chain=!0,e};var Q=function(t,e){return t._chain?h(e).chain():e};h.mixin=function(t){return h.each(h.functions(t),(function(e){var n=h[e]=t[e];h.prototype[e]=function(){var t=[this._wrapped];return o.apply(t,arguments),Q(this,n.apply(h,t))}})),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=n[t];h.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],Q(this,n)}})),h.each(["concat","join","slice"],(function(t){var e=n[t];h.prototype[t]=function(){return Q(this,e.apply(this._wrapped,arguments))}})),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],(function(){return h}))}()),Kr}var Xr,ti=!1;function ei(){return ti||(ti=!0,function(){var t,e,n,r,i,o,s,a,c=[].slice;a=Yr(),n={cmd:"⌘",ctrl:"⌃",alt:"⌥",option:"⌥",shift:"⇧",enter:"⏎",left:"←",right:"→",up:"↑",down:"↓"},r={cmd:"Cmd",ctrl:"Ctrl",alt:"Alt",option:"Alt",shift:"Shift",enter:"Enter",left:"Left",right:"Right",up:"Up",down:"Down"},o={"~":"`",_:"-","+":"=","|":"\\","{":"[","}":"]",":":";",'"':"'","<":",",">":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)u.push(t.splice.apply(t,[e+o,0].concat(c.call(r.slice(o,o+i)))));return u},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function p(t,e){for(var n=-1,r=t.length;++n3?t(r,i,c,a):(s=o,o=i,t(r,c,a))}}function N(t,e){return e}function D(t,e,r){r=r||n;var i=f(e)?[]:{};t(e,(function(t,e,n){t(b((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){r(t,i)}))}function F(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function L(t,r,i){if(null==r)r=1;else if(0===r)throw new Error("Concurrency must not be zero");function o(t,r,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,l(r)||(r=[r]),0===r.length&&t.idle())return e.setImmediate((function(){t.drain()}));p(r,(function(e){var r={data:e,callback:o||n};i?t.tasks.unshift(r):t.tasks.push(r),t.tasks.length===t.concurrency&&t.saturated()})),e.setImmediate(t.process)}function s(t,e){return function(){c-=1;var n=!1,r=arguments;p(e,(function(t){p(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+c===0&&t.drain(),t.process()}}var c=0,u=[],f={tasks:[],concurrency:r,payload:i,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(t,e){o(f,t,!1,e)},kill:function(){f.drain=n,f.tasks=[]},unshift:function(t,e){o(f,t,!0,e)},process:function(){for(;!f.paused&&cr?1:0}e.map(t,(function(t,e){n(t,(function(n,r){n?e(n):e(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,h(e.sort(i),(function(t){return t.value})))}))},e.auto=function(t,r,i){"function"==typeof arguments[1]&&(i=r,r=null),i=c(i||n);var o=y(t),s=o.length;if(!s)return i(null);r||(r=s);var a={},u=0,f=!1,h=[];function d(t){h.unshift(t)}function w(t){var e=v(h,t);e>=0&&h.splice(e,1)}function _(){s--,p(h.slice(0),(function(t){t()}))}d((function(){s||i(null,a)})),p(o,(function(n){if(!f){for(var o,s=l(t[n])?t[n]:[t[n]],c=b((function(t,r){if(u--,r.length<=1&&(r=r[0]),t){var o={};m(a,(function(t,e){o[e]=t})),o[n]=r,f=!0,i(t,o)}else a[n]=r,e.setImmediate(_)})),p=s.slice(0,s.length-1),h=p.length;h--;){if(!(o=t[p[h]]))throw new Error("Has nonexistent dependency in "+p.join(", "));if(l(o)&&v(o,n)>=0)throw new Error("Has cyclic dependencies")}y()?(u++,s[s.length-1](c,a)):d((function t(){y()&&(u++,w(t),s[s.length-1](c,a))}))}function y(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,n){function r(t,e){return function(r){t((function(t,n){r(!t||e,{err:t,result:n})}),n)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}e.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return u<=2&&"function"==typeof t&&(r=n,n=t),"function"!=typeof t&&c(a,t),a.callback=r,a.task=n,a.callback?l():l},e.waterfall=function(t,r){if(r=c(r||n),!l(t)){var i=new Error("First argument to waterfall must be an array of functions");return r(i)}if(!t.length)return r();!function t(e){return b((function(n,i){if(n)r.apply(null,[n].concat(i));else{var o=e.next();o?i.push(t(o)):i.push(r),z(e).apply(null,i)}}))}(e.iterator(t))()},e.parallel=function(t,n){D(e.eachOf,t,n)},e.parallelLimit=function(t,e,n){D(k(e),t,n)},e.series=function(t,n){D(e.eachOfSeries,t,n)},e.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),e.setImmediate(t.process)}))}(o,t,r,s)},delete o.unshift,o},e.cargo=function(t,e){return L(t,1,e)},e.log=M("log"),e.dir=M("dir"),e.memoize=function(t,n){var i={},o={},s=Object.prototype.hasOwnProperty;n=n||r;var a=b((function(r){var a=r.pop(),c=n.apply(null,r);s.call(i,c)?e.setImmediate((function(){a.apply(null,i[c])})):s.call(o,c)?o[c].push(a):(o[c]=[a],t.apply(null,r.concat([b((function(t){i[c]=t;var e=o[c];delete o[c];for(var n=0,r=e.length;n=t.length)return e&&(e[a]=t),n(null,t);vi.lastIndex=r;var c=vi.exec(t);return s=i,i+=c[0],o=s+c[1],r=vi.lastIndex,u[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?d(e[o]):gi.lstat(o,p)}function p(t,r){if(t)return n(t);if(!r.isSymbolicLink())return u[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!di){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(c.hasOwnProperty(i))return h(null,c[i],o)}gi.stat(o,(function(t){if(t)return n(t);gi.readlink(o,(function(t,e){di||(c[i]=e),h(t,e)}))}))}function h(t,r,i){if(t)return n(t);var o=hi.resolve(s,r);e&&(e[i]=o),d(o)}function d(e){t=hi.resolve(e,t.slice(r)),l()}l()},pi.realpath=bi),pi}var ki,Ei,Ci,Ti,Ai,Pi,Ii,Oi=!1;function ji(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function Ni(t,e,n){if(Pi)return Ci(t,e,n);"function"==typeof e&&(n=e,e=null),Ci(t,e,(function(r,i){ji(r)?Ii.realpath(t,e,n):n(r,i)}))}function Di(t,e){if(Pi)return Ti(t,e);try{return Ti(t,e)}catch(n){if(ji(n))return Ii.realpathSync(t,e);throw n}}function Fi(){Ei.realpath=Ni,Ei.realpathSync=Di}function Li(){Ei.realpath=Ci,Ei.realpathSync=Ti}function Mi(){return Oi||(Oi=!0,ki={},ki=Ni,Ni.realpath=Ni,Ni.sync=Di,Ni.realpathSync=Di,Ni.monkeypatch=Fi,Ni.unmonkeypatch=Li,Ci=(Ei=x).realpath,Ti=Ei.realpathSync,Ai=process.version,Pi=/^v[0-5]\./.test(Ai),Ii=xi()),ki}var Ri,Bi,zi=!1;function qi(){return zi||(zi=!0,Ri={},Ri=function(t,e){for(var n=[],r=0;r=0&&u>0){for(r=[],o=n.length;l>=0&&!a;)l==c?(r.push(l),c=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())=0?c:u;r.length&&(a=[o,s])}return a}function Gi(){return $i||($i=!0,Hi={},Hi=Ui,Ui.range=Wi),Hi}var Ki,Qi,Zi,Ji,Yi,Xi,to,eo,no=!1;function ro(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function io(t){return t.split(Ji).join("\\").split(Yi).join("{").split(Xi).join("}").split(to).join(",").split(eo).join(".")}function oo(t){if(!t)return[""];var e=[],n=Zi("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=oo(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function so(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),fo(function(t){return t.split("\\\\").join(Ji).split("\\{").join(Yi).split("\\}").join(Xi).split("\\,").join(to).split("\\.").join(eo)}(t),!0).map(io)):[]}function ao(t){return"{"+t+"}"}function co(t){return/^-?0\d/.test(t)}function uo(t,e){return t<=e}function lo(t,e){return t>=e}function fo(t,e){var n=[],r=Zi("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,c=r.body.indexOf(",")>=0;if(!a&&!c)return r.post.match(/,.*\}/)?fo(t=r.pre+"{"+r.body+Xi+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=oo(r.body)).length&&1===(i=fo(i[0],!1).map(ao)).length)return(f=r.post.length?fo(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var u,l=r.pre,f=r.post.length?fo(r.post,!1):[""];if(a){var p=ro(i[0]),h=ro(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(ro(i[2])):1,m=uo;h0){var _=new Array(b+1).join("0");w=y<0?"-"+_+w.slice(1):_+w}}u.push(w)}}else u=Qi(i,(function(t){return fo(t,!1)}));for(var S=0;S65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return mo;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,p="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+=bo,o=!0;break;case"?":i+=wo,o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var g,m=0,v=t.length;m-1;k--){var E=c[k],C=i.slice(0,E.reStart),T=i.slice(E.reStart,E.reEnd-8),A=i.slice(E.reEnd-8,E.reEnd),P=i.slice(E.reEnd);A+=P;var I=C.split("(").length-1,O=P;for(m=0;m=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,p),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function Ro(){return Co||(Co=!0,Mo()),ho}var Bo,zo=!1;function qo(){return zo||(zo=!0,Bo={},Bo="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}),Bo}var Ho,$o,Uo,Vo=!1;function Wo(t){return"/"===t.charAt(0)}function Go(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function Ko(){return Vo||(Vo=!0,Ho={},Ho="win32"===process.platform?Go:Wo,$o=Wo,Ho.posix=$o,Uo=Go,Ho.win32=Uo),Ho}var Qo,Zo,Jo,Yo,Xo,ts,es,ns,rs,is,os,ss,as,cs=!1;function us(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ls(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function fs(t,e){return t.localeCompare(e)}function ps(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new as(n,{dot:!0})}return{matcher:new as(t,{dot:!0}),gmatcher:e}}function hs(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(ps))}(t,n),t.changedCwd=!1;var r=process.cwd();us(n,"cwd")?(t.cwd=is.resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||is.resolve(t.cwd,"/"),t.root=is.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=ss(t.cwd)?t.cwd:ms(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new as(e,n),t.options=t.minimatch.options}function ds(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&Ps(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=_s.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=_s.statSync(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},Ds.prototype._mark=function(t){return Ts.mark(this,t)},Ds.prototype._makeAbs=function(t){return Ts.makeAbs(this,t)}),bs}var Ls,Ms=!1;function Rs(t,e){if(t&&e)return Rs(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Qs[t]}}))}(t))}function Xs(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&ha(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,c=da("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return na.stat(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));c&&na.lstat(n,c)},_a.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function xa(){return wa||(wa=!0,Sa()),ea}var ka,Ea,Ca,Ta,Aa,Pa,Ia,Oa,ja,Na=!1;function Da(t){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||Ta[e],t[e+="Sync"]=t[e]||Ta[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),t.disableGlob=t.disableGlob||!1,t.glob=t.glob||Ia}function Fa(t,e,n){"function"==typeof e&&(n=e,e={}),Ea(t,"rimraf: missing path"),Ea.equal(typeof t,"string","rimraf: path should be a string"),Ea.equal(typeof n,"function","rimraf: callback function required"),Ea(e,"rimraf: invalid options argument provided"),Ea.equal(typeof e,"object","rimraf: options should be object"),Da(e);var r=0,i=null,o=0;if(e.disableGlob||!Aa.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){La(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=l.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return v.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return _.include(e,v.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},l.traverseTreeSync(t,e,e),n},move:function(t,e,n){return p(t,e,(function(r,i){var o,s;if(!r)return i?(s=v.dirname(e),u.exists(s,(function(r){if(!r)return l.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!h(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=v.dirname(e),u.existsSync(r)||l.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return y.sync(t)},remove:function(t,e){return y(t,e)},writeFileSync:function(t,e,n){return m.sync(v.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=_.last(arguments),m(v.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return m(v.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,c;for(o=u.readdirSync(t),m.sync(e),c=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!l.isDirectorySync(t))return m.sync(t)},makeTree:function(t,e){return l.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:m(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),l.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},p=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},h=function(t,e){var n,r;return r=w(t),n=w(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},Zr=new Proxy({},{get:function(t,e){var n;return null!=(n=l[e])?n:u[e]},set:function(t,e,n){return l[e]=n}})}).call(Zr);class $a{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class Ua{constructor(t){this.props=t,pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom("div",{className:"atomts-rename-view",ref:"main"},pt.dom("div",{className:"block"},pt.dom("div",null,pt.dom("span",{ref:"title"},this.props.title),pt.dom("span",{className:"subtle-info-message"},pt.dom("span",null,"Close this panel with "),pt.dom("span",{className:"highlight"},"esc"),pt.dom("span",null," key. And commit with the "),pt.dom("span",{className:"highlight"},"enter"),pt.dom("span",null," key."))),pt.dom("div",{className:"find-container block"},pt.dom("div",{className:"editor-container"},pt.dom($a,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await pt.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?pt.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function Va(t){const e=new Ua({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new d;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?Qt(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function Wa(t){const e=new d;for(const n of Tr)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(t){try{const e=t.currentTarget.getModel();pe(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),he(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){Ga(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(){try{await r.didDispatch()}catch(t){Ga(t)}}}))}return e}function Ga(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}Ar("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",async didDispatch(e){const n=e.getPath();if(!n)return;const r=await Va({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{Zr.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),Ar("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await Va({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),Ar("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",async didDispatch(){t.killAllServers()}}))),Ar("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histGoBack()}}))),Ar("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histShowHistory()}}))),Ar("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch(){t.toggleSemanticViewController()}}))),Ar("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async e=>t.showTooltipAt(e)}))),Ar("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async e=>t.showSigHelpAt(e)}))),Ar("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",async didDispatch(e,n){t.hideSigHelpAt(e)||n()}}))),Ar("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,1)||n()}}))),Ar("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,-1)||n()}}))),Ar("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleFileSymbolsView(e)}}))),Ar("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleProjectSymbolsView(e)}})));class Ka{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},pt.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await pt.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return pt.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await pt.destroy(this),this.tooltipDisposable.dispose()}}class Qa{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new d,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),pt.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),Qt(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await pt.update(this)}render(){if(this.hiddenBuildStatus)return pt.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),pt.dom(Ka,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},pt.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await pt.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Zt.debounce((()=>{this.hiddenBuildStatus=!0,Qt(pt.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class Za{constructor(t){this.props={...t},pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom(Ka,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":"Click to open "+atom.project.relativize(this.props.tsConfigPath)},pt.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":_((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await pt.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):Qt(atom.workspace.open(this.props.tsConfigPath))}}class Ja{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await pt.destroy(this)}dispose(){Qt(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?pt.dom(Ka,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?pt.dom(Ka,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},pt.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),pt.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?pt.dom(Za,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?pt.dom(Qa,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=me(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await Cr({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(vr,{label:t.file,query:e.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class Xa{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new d,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Zt.debounce((()=>{Qt(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!pe(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=te(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class tc{constructor(t){this.disposables=new d,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new Xa(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function ec(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const c=e.clientWidth,u=getComputedStyle(t),l=parseInt(u.width,10),f=parseInt(u.height,10);if(o+l>=c&&(o=c-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=o+"px",t.style.top=i+"px",!1!==s&&(t.style.right=s+"px"),a&&(t.style.whiteSpace=a)}class nc{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},pt.initialize(this)}async destroy(){return pt.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await pt.update(this)}writeAfterUpdate(){ec(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return pt.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},pt.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>pt.dom("div",{className:i(n)},pt.dom("div",null,se(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),se(e.suffixDisplayParts),pt.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},se(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>pt.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,pt.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},se(t.displayParts)))))}}class rc{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new h.CompositeDisposable;const r=atom.views.getView(this.editor);this.view=new nc(r),r.appendChild(this.view.element);const i=Zt.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,Qt(i(n))})),r.onDidChangeScrollTop((()=>{setImmediate((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{setImmediate((()=>this.updateTooltipPosition(n)))}))),Qt(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),Qt(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);Qt(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,c=.7*i;return{left:a,right:a,top:s-c,bottom:s+c}}async getMessage(t){if(!pe(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class ic{constructor(t){this.deps=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&Qt(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new h.CompositeDisposable;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(Qt(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new rc(this.deps,t,e))}}function oc(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new y((()=>{t.removeEventListener(e,i)}))}class sc{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},pt.initialize(this)}async destroy(){return pt.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await Qn(this.props.info,pt,(t=>pt.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await pt.update(this)}writeAfterUpdate(){ec(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return pt.dom("div",{className:"atom-typescript-tooltip tooltip"},pt.dom("div",{className:"tooltip-inner"},this.tooltip))}}class ac{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,Qt(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(Qt(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},c=await this.getMessage(t,n);this.cancelled||void 0!==c&&await this.showTooltip(a,c)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new sc,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class cc{constructor(t){this.getClientInternal=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&pe(t)&&k.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new h.CompositeDisposable;r.add(oc(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),oc(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),oc(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new ac(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class uc{constructor(t){this.getClient=t,this.subscriptions=new d;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&Qt(this.view.setGetClient(this.getClient)),this.subscriptions.add(new y((()=>{this.view&&(atom.workspace.hide(this.view),Qt(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?Qt(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=Ee.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class lc{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new lc({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new lc({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function fc(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from(hc(n.childItems)):[]}async function pc(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield lc.fromNavto(n,e)}(r)):[]}function*hc(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=lc.fromNavTree(n,e);yield t,n.childItems&&(yield*hc(n.childItems,t))}}async function dc(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function gc(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await Cr({items:fc(n,e),itemTemplate:({name:t,position:e},n)=>pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(vr,{label:t,query:n.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},"Line "+(e.row+1))),didChangeSelection(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await dc(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class mc{constructor(t){this.deps=t}toggleFileView(t){Qt(gc(t,this.deps))}toggleProjectView(t){Qt(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await Cr({items:t=>pc(n,t,e),itemTemplate({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(vr,{label:t,query:r.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await dc(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class vc{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Zt.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(b.normalize(t));r&&(yield*r.filter((t=>te(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(b.normalize(t));r&&(yield*r.filter((t=>te(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(b.normalize(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!yc("suppressAllDiagnostics",i))for(const e of r){if(yc("ignoredDiagnosticCodes",i).includes(""+e.code))continue;if(yc("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&yc("ignoredSuggestionDiagnostics",i).includes(""+e.code))continue;if(yc("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!ae(e.code,Jt.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(yc("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:ee(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function yc(t,e){return atom.config.get("atom-typescript."+t,{scope:[e]})}class wc{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new h.Emitter,this.compileOnSave=!1,this.subscriptions=new h.CompositeDisposable,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),Qt(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),Qt(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{Qt(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Zt.debounce((()=>{Qt(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{Qt(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{Qt(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=wc.bufferMap.get(t);if(n)return n;{const n=new wc(t,e);return wc.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())pe(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Zt.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!le(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new h.CompositeDisposable},this.state.subscriptions.add(e.on("restarted",(()=>Qt(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new h.File(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>Qt(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=ne(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:"auto"===e.importModuleSpecifierPreference?void 0:e.importModuleSpecifierPreference,...t.preferences}})}}wc.bufferMap=new WeakMap;class bc{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new d,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=pe(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=wc.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=bc.editorMap.get(e);return n||(n=new bc(e,t),bc.editorMap.set(e,n)),n}}static lookupPane(t){return bc.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}bc.editorMap=new WeakMap;class _c{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{Qt(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=b.normalize(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await h.TextBuffer.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{Qt(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{Qt(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{Qt(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:te(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Zt.throttle((t=>Qt(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new d,this.clientResolver=new Gn(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new Ja,this.subscriptions.add(this.statusPanel),this.errorPusher=new vc,this.subscriptions.add(this.errorPusher),this.codefixProvider=new Wr(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new uc(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new Ya(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new mc({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new cc(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new ic({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new tc(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=bc.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(Wa({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{Qt(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=bc.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new h.Disposable((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new Yn(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new Dr(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new Lr(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({bufferPosition:e,textEditor:n})=>(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{Qt(t.applyFix(e))}})))};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({visibleRange:e,textEditor:n})=>(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:fe(),priority:0,getCodeActions:async(e,n)=>(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getSuggestionForWord(n,r,i){if(!pe(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),c=await a.execute("definition",s),u=c.body?c.body[0]:void 0;if(1===(null===(r=c.body)||void 0===r?void 0:r.length)&&(null==u?void 0:u.start.line)===s.line&&(null==u?void 0:u.start.offset)===s.offset){const t=await a.execute("references",s);await Pr(t,n,e)}else await Ir(c,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async t=>pe(t),async findReferences(e,n){const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(er)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:fe(),priority:100,updateOnEdit:!0,async getOutline(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[Or(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{name:"atom-typescript",priority:0,grammarScopes:fe(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getDefinition(e,n){if(!pe(e))return;const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(tr)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),Kn(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&pe(t)){Qt(this.statusPanel.show());const e=bc.lookupPane(t);e&&e.didActivate()}else Qt(this.statusPanel.hide())})))}}let Sc;var xc=T(pt);exports.activate=function(t){xc.setScheduler(atom.views),Sc=new _c(t),setImmediate((()=>Qt(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await P.install("atom-typescript",!0)}())))},exports.deactivate=function(){Sc&&Sc.destroy(),Sc=void 0},exports.serialize=function(){return Sc?Sc.serialize():void 0},exports.deserializeSemanticView=function(t){return Ee.create(t.data)},exports.consumeLinter=function(t){if(Sc)return Sc.consumeLinter(t)},exports.consumeStatusBar=function(t){if(Sc)return Sc.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(Sc)return Sc.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(Sc)return Sc.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(Sc)return Sc.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(Sc)return Sc.provideAutocomplete()},exports.provideIntentions=function(){if(Sc)return Sc.provideIntentions()},exports.provideIntentionsHighlight=function(){if(Sc)return Sc.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(Sc)return Sc.provideCodeActions()},exports.provideHyperclick=function(){if(Sc)return Sc.provideHyperclick()},exports.provideReferences=function(){if(Sc)return Sc.provideReferences()},exports.provideOutlines=function(){if(Sc)return Sc.provideOutlines()},exports.provideDefinitions=function(){if(Sc)return Sc.provideDefinitions()},exports.provideCodeHighlight=function(){if(Sc)return Sc.provideCodeHighlight()}; +var Z=/["'&<>]/,J=function(t){var e,n=""+t,r=Z.exec(n);if(!r)return n;var i="",o=0,s=0;for(o=r.index;o{const i={stdout:r.stdout?[]:null,stderr:r.stderr?[]:null};r.on("error",e),r.stdout&&r.stdout.on("data",(function(t){i.stdout.push(t),n.handleStdout&&n.handleStdout(t)})),r.stderr&&r.stderr.on("data",(function(t){i.stderr.push(t),n.handleStderr&&n.handleStderr(t)})),r.on("close",(e=>{let r=null;null!=i.stdout&&(r=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stdout):i.stdout.join(""));let o=null;null!=i.stderr&&(o=null===n.encoding||"buffer"===n.encoding?Buffer.concat(i.stderr):i.stderr.join("")),t({exitCode:e,stdout:r,stderr:o})}))}));return n.handleChildProcess(r),i}(t,e,{...n,handleChildProcess(t){r=t}});return i.kill=function(t){return r.kill(t)},i}async function X(t){if(K){const e=await async function(t){var e;const n=atom.packages.getLoadedPackage(t.name);return null==n?null:null!==(e=n.metadata.version)&&void 0!==e?e:null}(t);if(e)return e}return async function(t){var e,n;const{directory:r}=t;if(null==r)return null;let i=null;try{i=JSON.parse(await F.default.promises.readFile(D.default.join(r,"package.json"),"utf8"))}catch(t){return null}return null!==(e=null===(n=i)||void 0===n?void 0:n.version)&&void 0!==e?e:null}(t)}const tt=K?async function(t){return atom.packages.resolvePackagePath(t)}:async function(t){var e;const n=D.default.join(null!==(e=process.env.ATOM_HOME)&&void 0!==e?e:D.default.join(L.default.homedir(),".atom"),"packages",t);try{return await F.default.promises.access(n,F.default.constants.R_OK),n}catch(t){return null}};function et(t,e){if(!t)throw new Error(null!=e?e:"Invariant violation")}async function nt(t){const e=await(K?async function(t){const e=atom.packages.getLoadedPackage(t),n=e&&e.metadata["package-deps"];return Array.isArray(n)?n:[]}(t):async function(t){let e=null;try{e=await F.default.promises.stat(t)}catch(t){}if(null==e||!e.isDirectory())throw new Error("[Package-Deps] Expected packageName to be a readable directory in Node.js invocation");let n=null;try{const e=await F.default.promises.readFile(D.default.join(t,"package.json"),"utf8");n=JSON.parse(e)}catch(t){}const r=null==n||"object"!=typeof n?[]:n["package-deps"];return Array.isArray(r)?r:[]}(t));return Q&&(et(Array.isArray(e),`Dependencies for ${t} are not a valid array`),e.forEach(((e,n)=>{if(Array.isArray(e))e.forEach(((e,r)=>{const i=`Dependency#${n}#${r} for ${t} is invalid`;et("string"==typeof e.name&&e.name.length>0,i),et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,i)})),et(e.length>0,`Dependency#${n} for ${t} has no group items`);else{const r=`Dependency#${n} for ${t} is invalid`;et("string"==typeof e.name&&e.name.length>0,r),et(null==e.minimumVersion||"string"==typeof e.minimumVersion&&e.minimumVersion.length>0,r)}}))),e}async function rt(t){if(null==t.directory)return!0;if(null==t.minimumVersion)return!1;const e=await X(t);return null==e||1===function(t,e){for(var n=t.split("."),r=e.split("."),i=0;i<3;i++){var o=Number(n[i]),s=Number(r[i]);if(o>s)return 1;if(s>o)return-1;if(!isNaN(o)&&isNaN(s))return 1;if(isNaN(o)&&!isNaN(s))return-1}return 0}(t.minimumVersion,e)}const it=new Set(["✓","done"]),ot=/(?:Installing|Moving) (.*?) to .* (.*)/;let st=!0;const at=K?function({packageName:t,dependencies:e}){const n=[],r=atom.notifications.addInfo(`Installing ${t} dependencies`,{detail:"Installing "+e.map((t=>t.name)).join(", "),dismissable:!0}),i=document.createElement("progress");i.max=e.length,i.style.width="100%";try{var o;const t=atom.views.getView(r),e=null!==(o=null==t?void 0:t.element)&&void 0!==o?o:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");n.appendChild(i)}catch(t){console.error("[Package-Deps] Error during showing installation progress to user",t)}return{handleFailure({dependency:t,error:e}){var r;n.push(t.name),i.value+=1,console.error(`[Package-Deps] Unable to install ${t.name}, Error:`,null!==(r=null==e?void 0:e.stack)&&void 0!==r?r:e)},handleDependencyInstalled(t){i.value+=1},handleComplete(){r.dismiss(),n.length>0?atom.notifications.addWarning(`Failed to install ${t} dependencies`,{detail:"These packages were not installed, check your console\nfor more info.\n"+n.join("\n"),dismissable:!0}):atom.notifications.addSuccess(`Installed ${t} dependencies`,{detail:"Installed "+e.map((t=>t.name)).join(", ")}),Promise.all(e.map((t=>n.includes(t.name)?null:atom.packages.activatePackage(t.name)))).catch((e=>{console.error("[Package-Deps] Error activating installed packages for "+t,e)}))}}}:function({dependencies:t}){let e=!1;return console.log("Installing dependencies:\n"+t.map((t=>" - "+t.name)).join("\n")),{handleFailure({dependency:t,error:n}){var r;e=!0,console.error(`Unable to install ${t.name}, Error:`,null!==(r=null==n?void 0:n.stack)&&void 0!==r?r:n)},handleDependencyInstalled(t){console.log("Successfully installed",t.name)},handleComplete(){console.log("Installation complete"),e&&(process.exitCode=1)}}},ct=K?function({packageName:t,dependencies:e}){return new Promise((n=>{const r=e.filter((t=>!Array.isArray(t))),i=e.filter((t=>Array.isArray(t))),o=0===i.length,s=o?r.map((t=>t.name)).join(", "):"Something went wrong. Check your developer console",a=i.map((t=>t[0]));atom.packages.isPackageDisabled("notifications")&&console.warn("Enable notifications to install dependencies for "+t);const c=atom.notifications.addInfo(t+" needs to install dependencies",{dismissable:!0,icon:"cloud-download",detail:s,description:`Install dependenc${1===e.length?"y":"ies"}?`,buttons:[{text:"Yes",onDidClick:()=>{n(o?[]:r.concat(a)),c.dismiss()}},{text:"No Thanks",onDidClick:()=>{c.dismiss()}},{text:"Never",onDidClick:()=>{!function(t){var e;if(!K)return;const n=new Set(null!==(e=atom.config.get("atom-package-deps.ignored"))&&void 0!==e?e:[]);n.add(t),atom.config.set("atom-package-deps.ignored",Array.from(n))}(t),st&&(st=!1,atom.notifications.addInfo("How to reset package-deps memory",{dismissable:!0,description:"To modify the list of ignored files invoke 'Application: Open Your Config' and change the 'atom-package-deps' section"})),c.dismiss()}}]});if(c.onDidDismiss((()=>n([]))),!o)try{var u;const t=atom.views.getView(c),e=null!==(u=null==t?void 0:t.element)&&void 0!==u?u:null;if(null==e)throw new Error("Unable to get notification element from view");const n=e.querySelector(".detail-content");if(null==n)throw new Error("Content detail container not found inside the notification");if(n.innerHTML="",r.length>0){const t=document.createElement("div");t.innerHTML=`Packages without choices:
  • ${r.map((t=>J(t.name))).join("
  • ")}
`,n.appendChild(t)}const o=document.createElement("div");o.innerHTML="Packages with choices:",n.appendChild(o);const s=document.createElement("ul");i.forEach(((t,e)=>{const n=document.createElement("li"),r=document.createElement("select");r.innerHTML=t.map((t=>``)).join("\n"),r.addEventListener("change",(()=>{const n=t.find((t=>t.name===r.value));null!=n&&(a[e]=n)})),n.style.marginTop="5px",n.appendChild(r),s.appendChild(n)})),n.appendChild(s)}catch(t){console.error("[Package-Deps] Error during showing package choices to user",t)}}))}:async function({dependencies:t}){return t.map((t=>Array.isArray(t)?t[0]:t))};var ut=async function(t){if(et("string"==typeof t&&t.length>0,"[Package-Deps] Package name is required"),e=t,K&&(null!==(n=atom.config.get("atom-package-deps.ignored"))&&void 0!==n?n:[]).includes(e))return;var e,n;const r=await nt(t);if(0===r.length)return;const i=await Promise.all(r.map((async t=>Array.isArray(t)?Promise.all(t.map((async t=>({...t,directory:await tt(t.name)})))):{...t,directory:await tt(t.name)}))),o=await W(i,(async function(t){return Array.isArray(t)?(await Promise.all(t.map((t=>rt(t))))).every(Boolean):rt(t)}));if(0===o.length)return;const s=await ct({packageName:t,dependencies:o});if(0===s.length)return;const a=at({packageName:t,dependencies:s});await(async(t,e,{concurrency:n=1/0,stopOnError:r=!0}={})=>new Promise(((i,o)=>{if("function"!=typeof e)throw new TypeError("Mapper function is required");if(!Number.isSafeInteger(n)&&n!==1/0||!(n>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);const s=[],a=[],c=t[Symbol.iterator]();let u=!1,l=!1,f=0,p=0;const h=()=>{if(u)return;const t=c.next(),n=p;if(p++,t.done)return l=!0,void(0===f&&(r||0===a.length?i(s):o(new q(a))));f++,(async()=>{try{const r=await t.value;s[n]=await e(r,n),f--,h()}catch(t){r?(u=!0,o(t)):(a.push(t),f--,h())}})()};for(let t=0;tdt(t,e,...n);for(const t of ht)dt[t]=(e,...n)=>dt(t,e,...n);lt=dt;var mt,vt={},yt={};yt=new Map([["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["className","class"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["panose1","panose-1"],["paintOrder","paint-order"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xHeight","x-height"]]);var wt;function bt(t,e,n,r,i){if(n)for(var o in n)"ref"!==o&&"on"!==o&&(o in ft||i&&o in i||("dataset"===o?bt(t.dataset,null,n&&n.dataset,null,null):"innerHTML"!==o&&e&&ht.has(e.tag)?t.removeAttribute(yt.get(o)||o):(t[o]="",delete t[o])));if(i)for(var o in i)if("ref"!==o&&"on"!==o&&!(o in ft)){var s=n&&n[o],a=i[o];"dataset"===o?_t(t.dataset,s,a,!1):"style"===o&&"string"!=typeof a?("string"==typeof s&&(t.style="",s=null),_t(t.style,s,a,!0)):"attributes"===o?St(t,s,a):a!==s&&("innerHTML"!==o&&r&&ht.has(r.tag)?t.setAttribute(yt.get(o)||o,a):r&&"input"===r.tag&&"value"===o&&t[o]===a||(t[o]=a))}}function _t(t,e,n,r){if(e)for(var i in e)n&&i in n||(r?t[i]="":delete t[i]);if(n)for(var i in n){const r=e&&e[i],o=n[i];o!==r&&(t[i]=o)}}function St(t,e,n){if(e)for(var r in e)n&&r in n||t.removeAttribute(r);if(n)for(var r in n){const i=e&&e[r],o=n[r];o!==i&&t.setAttribute(r,o)}}function xt(t,e){let n;if(null!=t.text)n=document.createTextNode(t.text);else{const{tag:r,children:i}=t;let{props:o,context:s}=t;if(s&&(e={refs:s.refs,listenerContext:s}),"function"==typeof r){let s;o&&o.ref&&(s=o.ref);const a=new r(o||{},i);t.component=a,n=a.element,"function"==typeof s?s(a):e&&e.refs&&s&&(e.refs[s]=a)}else ht.has(r)?(n=document.createElementNS("http://www.w3.org/2000/svg",r),i&&kt(n,i,e),o&&mt(n,null,t,e)):(n=document.createElement(r),i&&kt(n,i,e),o&&mt(n,null,t,e))}return t.domNode=n,n}function kt(t,e,n){for(let r=0;r0?(i=At.pop()).clear():i=new Map,jt(i,e,o,s));var h=It(f),d=h?i.get(h):null;if(null==d)t.insertBefore(vt(f,r),a.domNode),f=n[++u];else{var g=e[d];Tt(g,f,r),e[d]=void 0,t.insertBefore(g.domNode,a.domNode),f=n[++u]}}else c=e[--s];else a=e[++o];if(o>s){var m=n[l+1]?n[l+1].domNode:null;for(let e=u;e<=l;e++)t.insertBefore(vt(n[e],r),m)}else if(u>l)for(let t=o;t<=s;t++){var v=e[t];v&&Pt(v,r&&r.refs)}i&&At.push(i)}(r,t.children,e.children,n),mt(r,t,e,n),i=r),e.domNode=i,i!==r&&r.parentNode&&r.parentNode.replaceChild(i,r),i}{const i=r.parentNode,o=r.nextSibling;Pt(t,n&&n.refs);const s=vt(e,n);return i&&i.insertBefore(s,o),e.domNode=s,s}}let At=[new Map,new Map,new Map,new Map];function Pt(t,e,n=!0){const{domNode:r,props:i,children:o,component:s}=t,a=i&&i.ref;if(s)"function"==typeof a?a(null):e&&a&&e[a]===s&&delete e[a],s.destroy&&s.destroy();else if("function"==typeof a?a(null):e&&a&&e[a]===r&&delete e[a],o)for(let t=0;t{this.resolveNextUpdatePromise=t}))),this.nextUpdatePromise}performUpdates(){for(;this.updateRequests.length>0;)this.updateRequests.shift()();for(this.pendingAnimationFrame=null;this.readRequests.length>0;)this.readRequests.shift()();if(this.nextUpdatePromise){let t=this.resolveNextUpdatePromise;this.nextUpdatePromise=null,this.resolveNextUpdatePromise=null,t()}}};let Lt=null;var Ft=function(){return Lt||(Lt=new Nt),Lt};const Dt=new WeakSet;let Mt=0,Rt=0;function Bt(t){return null!=t&&!1!==t}function zt(t,e){e.context=t,e.ambiguous&&(e.ambiguous.forEach((e=>{e.context=t})),delete e.ambiguous)}function qt(t,e=!0){if(!Bt(t.virtualNode))throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a valid virtualNode. Perhaps this component was never initialized?");if(null==t.element)throw new Error((t.constructor?t.constructor.name+" instance":t)+" is not associated with a DOM element. Perhaps this component was never initialized?");let n=t.render();if(!Bt(n)){const e=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+n+" returned from render()"+e)}zt(t,n),Mt++;let r=t.virtualNode,i=t.element,o=Ct(r,n,{refs:t.refs,listenerContext:t});if(t.virtualNode=n,o!==i&&!e)throw new Error("The root node type changed on update, but the update was performed with the replaceNode option set to false");t.element=o,"function"==typeof t.writeAfterUpdate&&t.writeAfterUpdate(),"function"==typeof t.readAfterUpdate&&Ft().readDocument((function(){t.readAfterUpdate()})),Mt--}function Ht(t,e=!0){Rt++,$t(t.virtualNode),1===Rt&&e&&t.element.remove(),Rt--}function $t(t){t.component&&"function"==typeof t.component.destroy?t.component.destroy():t.children&&t.children.forEach($t)}Et={initialize:function(t){if("function"!=typeof t.update)throw new Error("Etch components must implement `update(props, children)`.");let e=t.render();if(!Bt(e)){let n=t.constructor&&t.constructor.name?" in "+t.constructor.name:"";throw new Error("invalid falsy value "+e+" returned from render()"+n)}zt(t,e),t.refs={},t.virtualNode=e,t.element=vt(t.virtualNode,{refs:t.refs,listenerContext:t})},update:function(t,e=!0){if(Mt>0)return qt(t,e),Promise.resolve();let n=Ft();return Dt.has(t)||(Dt.add(t),n.updateDocument((function(){Dt.delete(t),qt(t,e)}))),n.getNextUpdatePromise()},updateSync:qt,destroy:function(t,e=!0){if(Mt>0||Rt>0)return Ht(t,e),Promise.resolve();let n=Ft();return n.updateDocument((function(){Ht(t,e)})),n.getNextUpdatePromise()},destroySync:Ht};const{initialize:Ut,update:Vt,updateSync:Wt,destroy:Gt,destroySync:Kt}=Et;function Qt(t){void 0!==t&&("function"==typeof t.catch?t.catch((t=>{atom.notifications.addFatalError("Atom-Typescript error: "+t.message,{detail:t.toString(),stack:t.stack,dismissable:!0})})):atom.notifications.addFatalError("Atom-Typescript: non-promise passed to handlePromise. Please report this.",{stack:(new Error).stack,dismissable:!0}))}pt={dom:lt,render:vt,initialize:Ut,update:Vt,updateSync:Wt,destroy:Gt,destroySync:Kt,setScheduler:function(t){Lt=t},getScheduler:Ft};var Zt=function(){var t=this,e={exports:this};return function(){var n,r="Expected a function",i="__lodash_hash_undefined__",o="__lodash_placeholder__",s=16,a=32,c=64,u=128,l=256,f=1/0,p=9007199254740991,h=NaN,d=4294967295,g=[["ary",u],["bind",1],["bindKey",2],["curry",8],["curryRight",s],["flip",512],["partial",a],["partialRight",c],["rearg",l]],m="[object Arguments]",v="[object Array]",y="[object Boolean]",w="[object Date]",b="[object Error]",_="[object Function]",S="[object GeneratorFunction]",x="[object Map]",k="[object Number]",E="[object Object]",C="[object Promise]",T="[object RegExp]",P="[object Set]",O="[object String]",I="[object Symbol]",j="[object WeakMap]",N="[object ArrayBuffer]",L="[object DataView]",F="[object Float32Array]",D="[object Float64Array]",M="[object Int8Array]",R="[object Int16Array]",B="[object Int32Array]",z="[object Uint8Array]",q="[object Uint8ClampedArray]",H="[object Uint16Array]",$="[object Uint32Array]",U=/\b__p \+= '';/g,V=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,G=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,Q=RegExp(G.source),Z=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,tt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,et=/^\w*$/,nt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rt=/[\\^$.*+?()[\]{}|]/g,it=RegExp(rt.source),ot=/^\s+/,st=/\s/,at=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ct=/\{\n\/\* \[wrapped with (.+)\] \*/,ut=/,? & /,lt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ft=/[()=,{}\[\]\/\s]/,pt=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dt=/\w*$/,gt=/^[-+]0x[0-9a-f]+$/i,mt=/^0b[01]+$/i,vt=/^\[object .+?Constructor\]$/,yt=/^0o[0-7]+$/i,wt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,_t=/($^)/,St=/['\n\r\u2028\u2029\\]/g,xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",kt="\\u2700-\\u27bf",Et="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",Tt="\\ufe0e\\ufe0f",At="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Pt="['’]",Ot="[\\ud800-\\udfff]",It="["+At+"]",jt="["+xt+"]",Nt="\\d+",Lt="[\\u2700-\\u27bf]",Ft="["+Et+"]",Dt="[^\\ud800-\\udfff"+At+Nt+kt+Et+Ct+"]",Mt="\\ud83c[\\udffb-\\udfff]",Rt="[^\\ud800-\\udfff]",Bt="(?:\\ud83c[\\udde6-\\uddff]){2}",zt="[\\ud800-\\udbff][\\udc00-\\udfff]",qt="["+Ct+"]",Ht="(?:"+Ft+"|"+Dt+")",$t="(?:"+qt+"|"+Dt+")",Ut="(?:['’](?:d|ll|m|re|s|t|ve))?",Vt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Wt="(?:"+jt+"|"+Mt+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Kt=Gt+Wt+("(?:\\u200d(?:"+[Rt,Bt,zt].join("|")+")"+Gt+Wt+")*"),Qt="(?:"+[Lt,Bt,zt].join("|")+")"+Kt,Zt="(?:"+[Rt+jt+"?",jt,Bt,zt,Ot].join("|")+")",Jt=RegExp(Pt,"g"),Yt=RegExp(jt,"g"),Xt=RegExp(Mt+"(?="+Mt+")|"+Zt+Kt,"g"),te=RegExp([qt+"?"+Ft+"+"+Ut+"(?="+[It,qt,"$"].join("|")+")",$t+"+"+Vt+"(?="+[It,qt+Ht,"$"].join("|")+")",qt+"?"+Ht+"+"+Ut,qt+"+"+Vt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Nt,Qt].join("|"),"g"),ee=RegExp("[\\u200d\\ud800-\\udfff"+xt+Tt+"]"),ne=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,re=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ie=-1,oe={};oe[F]=oe[D]=oe[M]=oe[R]=oe[B]=oe[z]=oe[q]=oe[H]=oe[$]=!0,oe[m]=oe[v]=oe[N]=oe[y]=oe[L]=oe[w]=oe[b]=oe[_]=oe[x]=oe[k]=oe[E]=oe[T]=oe[P]=oe[O]=oe[j]=!1;var se={};se[m]=se[v]=se[N]=se[L]=se[y]=se[w]=se[F]=se[D]=se[M]=se[R]=se[B]=se[x]=se[k]=se[E]=se[T]=se[P]=se[O]=se[I]=se[z]=se[q]=se[H]=se[$]=!0,se[b]=se[_]=se[j]=!1;var ae={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ce=parseFloat,ue=parseInt,le="object"==typeof A&&A&&A.Object===Object&&A,fe="object"==typeof self&&self&&self.Object===Object&&self,pe=le||fe||Function("return this")(),he="object"==typeof t&&t&&!t.nodeType&&t,de=he&&"object"==typeof e&&e&&!e.nodeType&&e,ge=de&&de.exports===he,me=ge&&le.process,ve=function(){try{var t=de&&de.require&&de.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}(),ye=ve&&ve.isArrayBuffer,we=ve&&ve.isDate,be=ve&&ve.isMap,_e=ve&&ve.isRegExp,Se=ve&&ve.isSet,xe=ve&&ve.isTypedArray;function ke(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ee(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Ie(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function tn(t,e){for(var n=t.length;n--&&ze(e,t[n],0)>-1;);return n}function en(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var nn=Ve({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),rn=Ve({"&":"&","<":"<",">":">",'"':""","'":"'"});function on(t){return"\\"+ae[t]}function sn(t){return ee.test(t)}function an(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function cn(t,e){return function(n){return t(e(n))}}function un(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var mn=function t(e){var A,st=(e=null==e?pe:mn.defaults(pe.Object(),e,mn.pick(pe,re))).Array,xt=e.Date,kt=e.Error,Et=e.Function,Ct=e.Math,Tt=e.Object,At=e.RegExp,Pt=e.String,Ot=e.TypeError,It=st.prototype,jt=Et.prototype,Nt=Tt.prototype,Lt=e["__core-js_shared__"],Ft=jt.toString,Dt=Nt.hasOwnProperty,Mt=0,Rt=(A=/[^.]+$/.exec(Lt&&Lt.keys&&Lt.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"",Bt=Nt.toString,zt=Ft.call(Tt),qt=pe._,Ht=At("^"+Ft.call(Dt).replace(rt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$t=ge?e.Buffer:n,Ut=e.Symbol,Vt=e.Uint8Array,Wt=$t?$t.allocUnsafe:n,Gt=cn(Tt.getPrototypeOf,Tt),Kt=Tt.create,Qt=Nt.propertyIsEnumerable,Zt=It.splice,Xt=Ut?Ut.isConcatSpreadable:n,ee=Ut?Ut.iterator:n,ae=Ut?Ut.toStringTag:n,le=function(){try{var t=ho(Tt,"defineProperty");return t({},"",{}),t}catch(t){}}(),fe=e.clearTimeout!==pe.clearTimeout&&e.clearTimeout,he=xt&&xt.now!==pe.Date.now&&xt.now,de=e.setTimeout!==pe.setTimeout&&e.setTimeout,me=Ct.ceil,ve=Ct.floor,Me=Tt.getOwnPropertySymbols,Ve=$t?$t.isBuffer:n,vn=e.isFinite,yn=It.join,wn=cn(Tt.keys,Tt),bn=Ct.max,_n=Ct.min,Sn=xt.now,xn=e.parseInt,kn=Ct.random,En=It.reverse,Cn=ho(e,"DataView"),Tn=ho(e,"Map"),An=ho(e,"Promise"),Pn=ho(e,"Set"),On=ho(e,"WeakMap"),In=ho(Tt,"create"),jn=On&&new On,Nn={},Ln=qo(Cn),Fn=qo(Tn),Dn=qo(An),Mn=qo(Pn),Rn=qo(On),Bn=Ut?Ut.prototype:n,zn=Bn?Bn.valueOf:n,qn=Bn?Bn.toString:n;function Hn(t){if(ia(t)&&!Gs(t)&&!(t instanceof Wn)){if(t instanceof Vn)return t;if(Dt.call(t,"__wrapped__"))return Ho(t)}return new Vn(t)}var $n=function(){function t(){}return function(e){if(!ra(e))return{};if(Kt)return Kt(e);t.prototype=e;var r=new t;return t.prototype=n,r}}();function Un(){}function Vn(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=n}function Wn(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function Gn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function lr(t,e,r,i,o,s){var a,c=1&e,u=2&e,l=4&e;if(r&&(a=o?r(t,i,o,s):r(t)),a!==n)return a;if(!ra(t))return t;var f=Gs(t);if(f){if(a=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Dt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return Ii(t,a)}else{var p=vo(t),h=p==_||p==S;if(Js(t))return Ei(t,c);if(p==E||p==m||h&&!o){if(a=u||h?{}:wo(t),!c)return u?function(t,e){return ji(t,mo(t),e)}(t,function(t,e){return t&&ji(e,Fa(e),t)}(a,t)):function(t,e){return ji(t,go(t),e)}(t,sr(a,t))}else{if(!se[p])return o?t:{};a=function(t,e,n){var r=t.constructor;switch(e){case N:return Ci(t);case y:case w:return new r(+t);case L:return function(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case F:case D:case M:case R:case B:case z:case q:case H:case $:return Ti(t,n);case x:return new r;case k:case O:return new r(t);case T:return function(t){var e=new t.constructor(t.source,dt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case P:return new r;case I:return i=t,zn?Tt(zn.call(i)):{}}var i}(t,p,c)}}s||(s=new Jn);var d=s.get(t);if(d)return d;s.set(t,a),ua(t)?t.forEach((function(n){a.add(lr(n,e,r,n,t,s))})):oa(t)&&t.forEach((function(n,i){a.set(i,lr(n,e,r,i,t,s))}));var g=f?n:(l?u?so:oo:u?Fa:La)(t);return Ce(g||t,(function(n,i){g&&(n=t[i=n]),rr(a,i,lr(n,e,r,i,t,s))})),a}function fr(t,e,r){var i=r.length;if(null==t)return!i;for(t=Tt(t);i--;){var o=r[i],s=e[o],a=t[o];if(a===n&&!(o in t)||!s(a))return!1}return!0}function pr(t,e,i){if("function"!=typeof t)throw new Ot(r);return Lo((function(){t.apply(n,i)}),e)}function hr(t,e,n,r){var i=-1,o=Oe,s=!0,a=t.length,c=[],u=e.length;if(!a)return c;n&&(e=je(e,Ze(n))),r?(o=Ie,s=!1):e.length>=200&&(o=Ye,s=!1,e=new Zn(e));t:for(;++i-1},Kn.prototype.set=function(t,e){var n=this.__data__,r=ir(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},Qn.prototype.clear=function(){this.size=0,this.__data__={hash:new Gn,map:new(Tn||Kn),string:new Gn}},Qn.prototype.delete=function(t){var e=fo(this,t).delete(t);return this.size-=e?1:0,e},Qn.prototype.get=function(t){return fo(this,t).get(t)},Qn.prototype.has=function(t){return fo(this,t).has(t)},Qn.prototype.set=function(t,e){var n=fo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Zn.prototype.add=Zn.prototype.push=function(t){return this.__data__.set(t,i),this},Zn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.clear=function(){this.__data__=new Kn,this.size=0},Jn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Jn.prototype.get=function(t){return this.__data__.get(t)},Jn.prototype.has=function(t){return this.__data__.has(t)},Jn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Kn){var r=n.__data__;if(!Tn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Qn(r)}return n.set(t,e),this.size=n.size,this};var dr=Fi(Sr),gr=Fi(xr,!0);function mr(t,e){var n=!0;return dr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function vr(t,e,r){for(var i=-1,o=t.length;++i0&&n(a)?e>1?wr(a,e-1,n,r,i):Ne(i,a):r||(i[i.length]=a)}return i}var br=Di(),_r=Di(!0);function Sr(t,e){return t&&br(t,e,La)}function xr(t,e){return t&&_r(t,e,La)}function kr(t,e){return Pe(e,(function(e){return ta(t[e])}))}function Er(t,e){for(var r=0,i=(e=_i(e,t)).length;null!=t&&re}function Pr(t,e){return null!=t&&Dt.call(t,e)}function Or(t,e){return null!=t&&e in Tt(t)}function Ir(t,e,r){for(var i=r?Ie:Oe,o=t[0].length,s=t.length,a=s,c=st(s),u=1/0,l=[];a--;){var f=t[a];a&&e&&(f=je(f,Ze(e))),u=_n(f.length,u),c[a]=!r&&(e||o>=120&&f.length>=120)?new Zn(a&&f):n}f=t[0];var p=-1,h=c[0];t:for(;++p=a?c:c*("desc"==n[r]?-1:1)}return t.index-e.index}(t,e,n)}))}function Gr(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Zt.call(a,c,1),Zt.call(t,c,1);return t}function Qr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;_o(i)?Zt.call(t,i,1):hi(t,i)}}return t}function Zr(t,e){return t+ve(kn()*(e-t+1))}function Jr(t,e){var n="";if(!t||e<1||e>p)return n;do{e%2&&(n+=t),(e=ve(e/2))&&(t+=t)}while(e);return n}function Yr(t,e){return Fo(Po(t,e,sc),t+"")}function Xr(t){return Xn($a(t))}function ti(t,e){var n=$a(t);return Ro(n,ur(e,0,n.length))}function ei(t,e,r,i){if(!ra(t))return t;for(var o=-1,s=(e=_i(e,t)).length,a=s-1,c=t;null!=c&&++oi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=st(i);++r>>1,s=t[o];null!==s&&!fa(s)&&(n?s<=e:s=200){var u=e?null:Ji(t);if(u)return ln(u);s=!1,i=Ye,c=new Zn}else c=e?[]:a;t:for(;++r=i?t:oi(t,e,r)}var ki=fe||function(t){return pe.clearTimeout(t)};function Ei(t,e){if(e)return t.slice();var n=t.length,r=Wt?Wt(n):new t.constructor(n);return t.copy(r),r}function Ci(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function Ti(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ai(t,e){if(t!==e){var r=t!==n,i=null===t,o=t==t,s=fa(t),a=e!==n,c=null===e,u=e==e,l=fa(e);if(!c&&!l&&!s&&t>e||s&&a&&u&&!c&&!l||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!l&&t1?r[o-1]:n,a=o>2?r[2]:n;for(s=t.length>3&&"function"==typeof s?(o--,s):n,a&&So(r[0],r[1],a)&&(s=o<3?n:s,o=1),e=Tt(e);++i-1?o[s?e[a]:a]:n}}function qi(t){return io((function(e){var i=e.length,o=i,s=Vn.prototype.thru;for(t&&e.reverse();o--;){var a=e[o];if("function"!=typeof a)throw new Ot(r);if(s&&!c&&"wrapper"==co(a))var c=new Vn([],!0)}for(o=c?o:i;++o1&&y.reverse(),p&&lc))return!1;var l=s.get(t),f=s.get(e);if(l&&f)return l==e&&f==t;var p=-1,h=!0,d=2&r?new Zn:n;for(s.set(t,e),s.set(e,t);++p-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(at,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ce(g,(function(n){var r="_."+n[0];e&n[1]&&!Oe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(ct);return e?e[1].split(ut):[]}(r),n)))}function Mo(t){var e=0,r=0;return function(){var i=Sn(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(n,arguments)}}function Ro(t,e){var r=-1,i=t.length,o=i-1;for(e=e===n?i:e;++r1?t[e-1]:n;return r="function"==typeof r?(t.pop(),r):n,cs(t,r)}));function gs(t){var e=Hn(t);return e.__chain__=!0,e}function ms(t,e){return e(t)}var vs=io((function(t){var e=t.length,r=e?t[0]:0,i=this.__wrapped__,o=function(e){return cr(e,t)};return!(e>1||this.__actions__.length)&&i instanceof Wn&&_o(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:ms,args:[o],thisArg:n}),new Vn(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(n),t}))):this.thru(o)}));var ys=Ni((function(t,e,n){Dt.call(t,n)?++t[n]:ar(t,n,1)}));var ws=zi(Wo),bs=zi(Go);function _s(t,e){return(Gs(t)?Ce:dr)(t,lo(e,3))}function Ss(t,e){return(Gs(t)?Te:gr)(t,lo(e,3))}var xs=Ni((function(t,e,n){Dt.call(t,n)?t[n].push(e):ar(t,n,[e])}));var ks=Yr((function(t,e,n){var r=-1,i="function"==typeof e,o=Qs(t)?st(t.length):[];return dr(t,(function(t){o[++r]=i?ke(e,t,n):jr(t,e,n)})),o})),Es=Ni((function(t,e,n){ar(t,n,e)}));function Cs(t,e){return(Gs(t)?je:qr)(t,lo(e,3))}var Ts=Ni((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var As=Yr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&So(t,e[0],e[1])?e=[]:n>2&&So(e[0],e[1],e[2])&&(e=[e[0]]),Wr(t,wr(e,1),[])})),Ps=he||function(){return pe.Date.now()};function Os(t,e,r){return e=r?n:e,e=t&&null==e?t.length:e,Xi(t,u,n,n,n,n,e)}function Is(t,e){var i;if("function"!=typeof e)throw new Ot(r);return t=va(t),function(){return--t>0&&(i=e.apply(this,arguments)),t<=1&&(e=n),i}}var js=Yr((function(t,e,n){var r=1;if(n.length){var i=un(n,uo(js));r|=a}return Xi(t,r,e,n,i)})),Ns=Yr((function(t,e,n){var r=3;if(n.length){var i=un(n,uo(Ns));r|=a}return Xi(e,r,t,n,i)}));function Ls(t,e,i){var o,s,a,c,u,l,f=0,p=!1,h=!1,d=!0;if("function"!=typeof t)throw new Ot(r);function g(e){var r=o,i=s;return o=s=n,f=e,c=t.apply(i,r)}function m(t){return f=t,u=Lo(y,e),p?g(t):c}function v(t){var r=t-l;return l===n||r>=e||r<0||h&&t-f>=a}function y(){var t=Ps();if(v(t))return w(t);u=Lo(y,function(t){var n=e-(t-l);return h?_n(n,a-(t-f)):n}(t))}function w(t){return u=n,d&&o?g(t):(o=s=n,c)}function b(){var t=Ps(),r=v(t);if(o=arguments,s=this,l=t,r){if(u===n)return m(l);if(h)return ki(u),u=Lo(y,e),g(l)}return u===n&&(u=Lo(y,e)),c}return e=wa(e)||0,ra(i)&&(p=!!i.leading,a=(h="maxWait"in i)?bn(wa(i.maxWait)||0,e):a,d="trailing"in i?!!i.trailing:d),b.cancel=function(){u!==n&&ki(u),f=0,o=l=s=u=n},b.flush=function(){return u===n?c:w(Ps())},b}var Fs=Yr((function(t,e){return pr(t,1,e)})),Ds=Yr((function(t,e,n){return pr(t,wa(e)||0,n)}));function Ms(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new Ot(r);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Ms.Cache||Qn),n}function Rs(t){if("function"!=typeof t)throw new Ot(r);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ms.Cache=Qn;var Bs=Si((function(t,e){var n=(e=1==e.length&&Gs(e[0])?je(e[0],Ze(lo())):je(wr(e,1),Ze(lo()))).length;return Yr((function(r){for(var i=-1,o=_n(r.length,n);++i=e})),Ws=Nr(function(){return arguments}())?Nr:function(t){return ia(t)&&Dt.call(t,"callee")&&!Qt.call(t,"callee")},Gs=st.isArray,Ks=ye?Ze(ye):function(t){return ia(t)&&Tr(t)==N};function Qs(t){return null!=t&&na(t.length)&&!ta(t)}function Zs(t){return ia(t)&&Qs(t)}var Js=Ve||wc,Ys=we?Ze(we):function(t){return ia(t)&&Tr(t)==w};function Xs(t){if(!ia(t))return!1;var e=Tr(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!aa(t)}function ta(t){if(!ra(t))return!1;var e=Tr(t);return e==_||e==S||"[object AsyncFunction]"==e||"[object Proxy]"==e}function ea(t){return"number"==typeof t&&t==va(t)}function na(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=p}function ra(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ia(t){return null!=t&&"object"==typeof t}var oa=be?Ze(be):function(t){return ia(t)&&vo(t)==x};function sa(t){return"number"==typeof t||ia(t)&&Tr(t)==k}function aa(t){if(!ia(t)||Tr(t)!=E)return!1;var e=Gt(t);if(null===e)return!0;var n=Dt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Ft.call(n)==zt}var ca=_e?Ze(_e):function(t){return ia(t)&&Tr(t)==T};var ua=Se?Ze(Se):function(t){return ia(t)&&vo(t)==P};function la(t){return"string"==typeof t||!Gs(t)&&ia(t)&&Tr(t)==O}function fa(t){return"symbol"==typeof t||ia(t)&&Tr(t)==I}var pa=xe?Ze(xe):function(t){return ia(t)&&na(t.length)&&!!oe[Tr(t)]};var ha=Ki(zr),da=Ki((function(t,e){return t<=e}));function ga(t){if(!t)return[];if(Qs(t))return la(t)?hn(t):Ii(t);if(ee&&t[ee])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ee]());var e=vo(t);return(e==x?an:e==P?ln:$a)(t)}function ma(t){return t?(t=wa(t))===f||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function va(t){var e=ma(t),n=e%1;return e==e?n?e-n:e:0}function ya(t){return t?ur(va(t),0,d):0}function wa(t){if("number"==typeof t)return t;if(fa(t))return h;if(ra(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ra(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Qe(t);var n=mt.test(t);return n||yt.test(t)?ue(t.slice(2),n?2:8):gt.test(t)?h:+t}function ba(t){return ji(t,Fa(t))}function _a(t){return null==t?"":fi(t)}var Sa=Li((function(t,e){if(Co(e)||Qs(e))ji(e,La(e),t);else for(var n in e)Dt.call(e,n)&&rr(t,n,e[n])})),xa=Li((function(t,e){ji(e,Fa(e),t)})),ka=Li((function(t,e,n,r){ji(e,Fa(e),t,r)})),Ea=Li((function(t,e,n,r){ji(e,La(e),t,r)})),Ca=io(cr);var Ta=Yr((function(t,e){t=Tt(t);var r=-1,i=e.length,o=i>2?e[2]:n;for(o&&So(e[0],e[1],o)&&(i=1);++r1),e})),ji(t,so(t),n),r&&(n=lr(n,7,no));for(var i=e.length;i--;)hi(n,e[i]);return n}));var Ba=io((function(t,e){return null==t?{}:function(t,e){return Gr(t,e,(function(e,n){return Oa(t,n)}))}(t,e)}));function za(t,e){if(null==t)return{};var n=je(so(t),(function(t){return[t]}));return e=lo(e),Gr(t,n,(function(t,n){return e(t,n[0])}))}var qa=Yi(La),Ha=Yi(Fa);function $a(t){return null==t?[]:Je(t,La(t))}var Ua=Ri((function(t,e,n){return e=e.toLowerCase(),t+(n?Va(e):e)}));function Va(t){return Xa(_a(t).toLowerCase())}function Wa(t){return(t=_a(t))&&t.replace(bt,nn).replace(Yt,"")}var Ga=Ri((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Ka=Ri((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Qa=Mi("toLowerCase");var Za=Ri((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var Ja=Ri((function(t,e,n){return t+(n?" ":"")+Xa(e)}));var Ya=Ri((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Xa=Mi("toUpperCase");function tc(t,e,r){return t=_a(t),(e=r?n:e)===n?function(t){return ne.test(t)}(t)?function(t){return t.match(te)||[]}(t):function(t){return t.match(lt)||[]}(t):t.match(e)||[]}var ec=Yr((function(t,e){try{return ke(t,n,e)}catch(t){return Xs(t)?t:new kt(t)}})),nc=io((function(t,e){return Ce(e,(function(e){e=zo(e),ar(t,e,js(t[e],t))})),t}));function rc(t){return function(){return t}}var ic=qi(),oc=qi(!0);function sc(t){return t}function ac(t){return Mr("function"==typeof t?t:lr(t,1))}var cc=Yr((function(t,e){return function(n){return jr(n,t,e)}})),uc=Yr((function(t,e){return function(n){return jr(t,n,e)}}));function lc(t,e,n){var r=La(e),i=kr(e,r);null!=n||ra(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=kr(e,La(e)));var o=!(ra(n)&&"chain"in n&&!n.chain),s=ta(t);return Ce(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=Ii(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ne([this.value()],arguments))})})),t}function fc(){}var pc=Vi(je),hc=Vi(Ae),dc=Vi(De);function gc(t){return xo(t)?Ue(zo(t)):function(t){return function(e){return Er(e,t)}}(t)}var mc=Gi(),vc=Gi(!0);function yc(){return[]}function wc(){return!1}var bc=Ui((function(t,e){return t+e}),0),_c=Zi("ceil"),Sc=Ui((function(t,e){return t/e}),1),xc=Zi("floor");var kc=Ui((function(t,e){return t*e}),1),Ec=Zi("round"),Cc=Ui((function(t,e){return t-e}),0);return Hn.after=function(t,e){if("function"!=typeof e)throw new Ot(r);return t=va(t),function(){if(--t<1)return e.apply(this,arguments)}},Hn.ary=Os,Hn.assign=Sa,Hn.assignIn=xa,Hn.assignInWith=ka,Hn.assignWith=Ea,Hn.at=Ca,Hn.before=Is,Hn.bind=js,Hn.bindAll=nc,Hn.bindKey=Ns,Hn.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Gs(t)?t:[t]},Hn.chain=gs,Hn.chunk=function(t,e,r){e=(r?So(t,e,r):e===n)?1:bn(va(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=st(me(i/e));oo?0:o+r),(i=i===n||i>o?o:va(i))<0&&(i+=o),i=r>i?0:ya(i);r>>0)?(t=_a(t))&&("string"==typeof e||null!=e&&!ca(e))&&!(e=fi(e))&&sn(t)?xi(hn(t),0,r):t.split(e,r):[]},Hn.spread=function(t,e){if("function"!=typeof t)throw new Ot(r);return e=null==e?0:bn(va(e),0),Yr((function(n){var r=n[e],i=xi(n,0,e);return r&&Ne(i,r),ke(t,this,i)}))},Hn.tail=function(t){var e=null==t?0:t.length;return e?oi(t,1,e):[]},Hn.take=function(t,e,r){return t&&t.length?oi(t,0,(e=r||e===n?1:va(e))<0?0:e):[]},Hn.takeRight=function(t,e,r){var i=null==t?0:t.length;return i?oi(t,(e=i-(e=r||e===n?1:va(e)))<0?0:e,i):[]},Hn.takeRightWhile=function(t,e){return t&&t.length?gi(t,lo(e,3),!1,!0):[]},Hn.takeWhile=function(t,e){return t&&t.length?gi(t,lo(e,3)):[]},Hn.tap=function(t,e){return e(t),t},Hn.throttle=function(t,e,n){var i=!0,o=!0;if("function"!=typeof t)throw new Ot(r);return ra(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),Ls(t,e,{leading:i,maxWait:e,trailing:o})},Hn.thru=ms,Hn.toArray=ga,Hn.toPairs=qa,Hn.toPairsIn=Ha,Hn.toPath=function(t){return Gs(t)?je(t,zo):fa(t)?[t]:Ii(Bo(_a(t)))},Hn.toPlainObject=ba,Hn.transform=function(t,e,n){var r=Gs(t),i=r||Js(t)||pa(t);if(e=lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:ra(t)&&ta(o)?$n(Gt(t)):{}}return(i?Ce:Sr)(t,(function(t,r,i){return e(n,t,r,i)})),n},Hn.unary=function(t){return Os(t,1)},Hn.union=is,Hn.unionBy=os,Hn.unionWith=ss,Hn.uniq=function(t){return t&&t.length?pi(t):[]},Hn.uniqBy=function(t,e){return t&&t.length?pi(t,lo(e,2)):[]},Hn.uniqWith=function(t,e){return e="function"==typeof e?e:n,t&&t.length?pi(t,n,e):[]},Hn.unset=function(t,e){return null==t||hi(t,e)},Hn.unzip=as,Hn.unzipWith=cs,Hn.update=function(t,e,n){return null==t?t:di(t,e,bi(n))},Hn.updateWith=function(t,e,r,i){return i="function"==typeof i?i:n,null==t?t:di(t,e,bi(r),i)},Hn.values=$a,Hn.valuesIn=function(t){return null==t?[]:Je(t,Fa(t))},Hn.without=us,Hn.words=tc,Hn.wrap=function(t,e){return zs(bi(e),t)},Hn.xor=ls,Hn.xorBy=fs,Hn.xorWith=ps,Hn.zip=hs,Hn.zipObject=function(t,e){return yi(t||[],e||[],rr)},Hn.zipObjectDeep=function(t,e){return yi(t||[],e||[],ei)},Hn.zipWith=ds,Hn.entries=qa,Hn.entriesIn=Ha,Hn.extend=xa,Hn.extendWith=ka,lc(Hn,Hn),Hn.add=bc,Hn.attempt=ec,Hn.camelCase=Ua,Hn.capitalize=Va,Hn.ceil=_c,Hn.clamp=function(t,e,r){return r===n&&(r=e,e=n),r!==n&&(r=(r=wa(r))==r?r:0),e!==n&&(e=(e=wa(e))==e?e:0),ur(wa(t),e,r)},Hn.clone=function(t){return lr(t,4)},Hn.cloneDeep=function(t){return lr(t,5)},Hn.cloneDeepWith=function(t,e){return lr(t,5,e="function"==typeof e?e:n)},Hn.cloneWith=function(t,e){return lr(t,4,e="function"==typeof e?e:n)},Hn.conformsTo=function(t,e){return null==e||fr(t,e,La(e))},Hn.deburr=Wa,Hn.defaultTo=function(t,e){return null==t||t!=t?e:t},Hn.divide=Sc,Hn.endsWith=function(t,e,r){t=_a(t),e=fi(e);var i=t.length,o=r=r===n?i:ur(va(r),0,i);return(r-=e.length)>=0&&t.slice(r,o)==e},Hn.eq=$s,Hn.escape=function(t){return(t=_a(t))&&Z.test(t)?t.replace(K,rn):t},Hn.escapeRegExp=function(t){return(t=_a(t))&&it.test(t)?t.replace(rt,"\\$&"):t},Hn.every=function(t,e,r){var i=Gs(t)?Ae:mr;return r&&So(t,e,r)&&(e=n),i(t,lo(e,3))},Hn.find=ws,Hn.findIndex=Wo,Hn.findKey=function(t,e){return Re(t,lo(e,3),Sr)},Hn.findLast=bs,Hn.findLastIndex=Go,Hn.findLastKey=function(t,e){return Re(t,lo(e,3),xr)},Hn.floor=xc,Hn.forEach=_s,Hn.forEachRight=Ss,Hn.forIn=function(t,e){return null==t?t:br(t,lo(e,3),Fa)},Hn.forInRight=function(t,e){return null==t?t:_r(t,lo(e,3),Fa)},Hn.forOwn=function(t,e){return t&&Sr(t,lo(e,3))},Hn.forOwnRight=function(t,e){return t&&xr(t,lo(e,3))},Hn.get=Pa,Hn.gt=Us,Hn.gte=Vs,Hn.has=function(t,e){return null!=t&&yo(t,e,Pr)},Hn.hasIn=Oa,Hn.head=Qo,Hn.identity=sc,Hn.includes=function(t,e,n,r){t=Qs(t)?t:$a(t),n=n&&!r?va(n):0;var i=t.length;return n<0&&(n=bn(i+n,0)),la(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&ze(t,e,n)>-1},Hn.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:va(n);return i<0&&(i=bn(r+i,0)),ze(t,e,i)},Hn.inRange=function(t,e,r){return e=ma(e),r===n?(r=e,e=0):r=ma(r),function(t,e,n){return t>=_n(e,n)&&t=-9007199254740991&&t<=p},Hn.isSet=ua,Hn.isString=la,Hn.isSymbol=fa,Hn.isTypedArray=pa,Hn.isUndefined=function(t){return t===n},Hn.isWeakMap=function(t){return ia(t)&&vo(t)==j},Hn.isWeakSet=function(t){return ia(t)&&"[object WeakSet]"==Tr(t)},Hn.join=function(t,e){return null==t?"":yn.call(t,e)},Hn.kebabCase=Ga,Hn.last=Xo,Hn.lastIndexOf=function(t,e,r){var i=null==t?0:t.length;if(!i)return-1;var o=i;return r!==n&&(o=(o=va(r))<0?bn(i+o,0):_n(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):Be(t,He,o,!0)},Hn.lowerCase=Ka,Hn.lowerFirst=Qa,Hn.lt=ha,Hn.lte=da,Hn.max=function(t){return t&&t.length?vr(t,sc,Ar):n},Hn.maxBy=function(t,e){return t&&t.length?vr(t,lo(e,2),Ar):n},Hn.mean=function(t){return $e(t,sc)},Hn.meanBy=function(t,e){return $e(t,lo(e,2))},Hn.min=function(t){return t&&t.length?vr(t,sc,zr):n},Hn.minBy=function(t,e){return t&&t.length?vr(t,lo(e,2),zr):n},Hn.stubArray=yc,Hn.stubFalse=wc,Hn.stubObject=function(){return{}},Hn.stubString=function(){return""},Hn.stubTrue=function(){return!0},Hn.multiply=kc,Hn.nth=function(t,e){return t&&t.length?Vr(t,va(e)):n},Hn.noConflict=function(){return pe._===this&&(pe._=qt),this},Hn.noop=fc,Hn.now=Ps,Hn.pad=function(t,e,n){t=_a(t);var r=(e=va(e))?pn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Wi(ve(i),n)+t+Wi(me(i),n)},Hn.padEnd=function(t,e,n){t=_a(t);var r=(e=va(e))?pn(t):0;return e&&re){var i=t;t=e,e=i}if(r||t%1||e%1){var o=kn();return _n(t+o*(e-t+ce("1e-"+((o+"").length-1))),e)}return Zr(t,e)},Hn.reduce=function(t,e,n){var r=Gs(t)?Le:We,i=arguments.length<3;return r(t,lo(e,4),n,i,dr)},Hn.reduceRight=function(t,e,n){var r=Gs(t)?Fe:We,i=arguments.length<3;return r(t,lo(e,4),n,i,gr)},Hn.repeat=function(t,e,r){return e=(r?So(t,e,r):e===n)?1:va(e),Jr(_a(t),e)},Hn.replace=function(){var t=arguments,e=_a(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Hn.result=function(t,e,r){var i=-1,o=(e=_i(e,t)).length;for(o||(o=1,t=n);++ip)return[];var n=d,r=_n(t,d);e=lo(e),t-=d;for(var i=Ke(r,e);++n=s)return t;var c=r-pn(i);if(c<1)return i;var u=a?xi(a,0,c).join(""):t.slice(0,c);if(o===n)return u+i;if(a&&(c+=u.length-c),ca(o)){if(t.slice(c).search(o)){var l,f=u;for(o.global||(o=At(o.source,_a(dt.exec(o))+"g")),o.lastIndex=0;l=o.exec(f);)var p=l.index;u=u.slice(0,p===n?c:p)}}else if(t.indexOf(fi(o),c)!=c){var h=u.lastIndexOf(o);h>-1&&(u=u.slice(0,h))}return u+i},Hn.unescape=function(t){return(t=_a(t))&&Q.test(t)?t.replace(G,gn):t},Hn.uniqueId=function(t){var e=++Mt;return _a(t)+e},Hn.upperCase=Ya,Hn.upperFirst=Xa,Hn.each=_s,Hn.eachRight=Ss,Hn.first=Qo,lc(Hn,function(){var t={};return Sr(Hn,(function(e,n){Dt.call(Hn.prototype,n)||(t[n]=e)})),t}(),{chain:!1}),Hn.VERSION="4.17.21",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Hn[t].placeholder=Hn})),Ce(["drop","take"],(function(t,e){Wn.prototype[t]=function(r){r=r===n?1:bn(va(r),0);var i=this.__filtered__&&!e?new Wn(this):this.clone();return i.__filtered__?i.__takeCount__=_n(r,i.__takeCount__):i.__views__.push({size:_n(r,d),type:t+(i.__dir__<0?"Right":"")}),i},Wn.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ce(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;Wn.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ce(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Wn.prototype[t]=function(){return this[n](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Wn.prototype[t]=function(){return this.__filtered__?new Wn(this):this[n](1)}})),Wn.prototype.compact=function(){return this.filter(sc)},Wn.prototype.find=function(t){return this.filter(t).head()},Wn.prototype.findLast=function(t){return this.reverse().find(t)},Wn.prototype.invokeMap=Yr((function(t,e){return"function"==typeof t?new Wn(this):this.map((function(n){return jr(n,t,e)}))})),Wn.prototype.reject=function(t){return this.filter(Rs(lo(t)))},Wn.prototype.slice=function(t,e){t=va(t);var r=this;return r.__filtered__&&(t>0||e<0)?new Wn(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),e!==n&&(r=(e=va(e))<0?r.dropRight(-e):r.take(e-t)),r)},Wn.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Wn.prototype.toArray=function(){return this.take(d)},Sr(Wn.prototype,(function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=Hn[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(Hn.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof Wn,u=a[0],l=c||Gs(e),f=function(t){var e=o.apply(Hn,Ne([t],a));return i&&p?e[0]:e};l&&r&&"function"==typeof u&&1!=u.length&&(c=l=!1);var p=this.__chain__,h=!!this.__actions__.length,d=s&&!p,g=c&&!h;if(!s&&l){e=g?e:new Wn(this);var m=t.apply(e,a);return m.__actions__.push({func:ms,args:[f],thisArg:n}),new Vn(m,p)}return d&&g?t.apply(this,a):(m=this.thru(f),d?i?m.value()[0]:m.value():m)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=It[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Hn.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Gs(i)?i:[],t)}return this[n]((function(n){return e.apply(Gs(n)?n:[],t)}))}})),Sr(Wn.prototype,(function(t,e){var n=Hn[e];if(n){var r=n.name+"";Dt.call(Nn,r)||(Nn[r]=[]),Nn[r].push({name:e,func:n})}})),Nn[Hi(n,2).name]=[{name:"wrapper",func:n}],Wn.prototype.clone=function(){var t=new Wn(this.__wrapped__);return t.__actions__=Ii(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ii(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ii(this.__views__),t},Wn.prototype.reverse=function(){if(this.__filtered__){var t=new Wn(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Wn.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Gs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?n:this.__values__[this.__index__++]}},Hn.prototype.plant=function(t){for(var e,r=this;r instanceof Un;){var i=Ho(r);i.__index__=0,i.__values__=n,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,e},Hn.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Wn){var e=t;return this.__actions__.length&&(e=new Wn(this)),(e=e.reverse()).__actions__.push({func:ms,args:[rs],thisArg:n}),new Vn(e,this.__chain__)}return this.thru(rs)},Hn.prototype.toJSON=Hn.prototype.valueOf=Hn.prototype.value=function(){return mi(this.__wrapped__,this.__actions__)},Hn.prototype.first=Hn.prototype.head,ee&&(Hn.prototype[ee]=function(){return this}),Hn}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(pe._=mn,define((function(){return mn}))):de?((de.exports=mn)._=mn,he._=mn):pe._=mn}.call(this),e.exports}.call({});const Jt=f.DiagnosticCategory;function Yt(t){return{line:t.row+1,offset:t.column+1}}function Xt(t){return new h.Point(t.line-1,t.offset-1)}function te(t){return ee(t.start,t.end)}function ee(t,e){return new h.Range(Xt(t),Xt(e))}function ne(t){const e=re(t),n=e.formatCodeOptions;return{formatCodeOptions:{indentSize:atom.config.get("editor.tabLength"),tabSize:atom.config.get("editor.tabLength"),...n},compileOnSave:!!e.compileOnSave,preferences:e.preferences?e.preferences:{}}}function re(t){".json"!==b.extname(t)&&(t+=".json");let{config:e}=f.readConfigFile(t,(t=>f.sys.readFile(t)));if(void 0===e)return{};if("string"==typeof e.extends){const n=re(b.join(b.dirname(t),e.extends));e=Object.assign({},n,e)}return e}function ie(t){return{label:se(t.prefixDisplayParts)+t.parameters.map((t=>se(t.displayParts))).join(se(t.separatorDisplayParts))+se(t.suffixDisplayParts),documentation:se(t.documentation),parameters:t.parameters.map(oe)}}function oe(t){return{label:se(t.displayParts),documentation:se(t.documentation)}}function se(t){return t.map((t=>t.text)).join("")}const ae=function(){let t;return function(e,n){if(void 0===e)return!0;void 0===t&&(t=new Map(Object.values(f.Diagnostics).map((t=>[t.code,t.category]))));const r=t.get(e);return void 0===r||r===n}}();function ce(t,e){const n=new Error("Max time reached");return atom.notifications.addError(`${t} took more than ${e} seconds to complete`,{dismissable:!0,description:t+" took too long to complete and was terminated.",stack:n.stack}),n}async function ue(t,e){const n=function(t,e){const n=performance.now();let r=n;return async function(){const i=performance.now();return i-r>t&&(await new Promise(setImmediate),r=i),i-n<=e}}(100,5e3),r=new g;try{const i=atom.grammars.grammarForId(e),o=atom.grammars.languageModeForGrammarAndBuffer(i,r);r.setLanguageMode(o),r.setText(t);const s=r.getEndPosition();o.startTokenizing&&o.startTokenizing(),await async function(t){return new Promise((e=>{if(t.fullyTokenized||t.tree)e(void 0);else if(t.onDidTokenize){const n=t.onDidTokenize((()=>{n.dispose(),e(void 0)}))}else e(void 0)}))}(o);const a=o.buildHighlightIterator();if(a.getOpenScopeIds&&a.getCloseScopeIds){let t={row:0,column:0};a.seek(t);const e=[];for(;t.row"
")),...a.getOpenScopeIds().map((t=>``))),a.moveToSuccessor();const i=a.getPosition();if(e.push(r.getTextInRange([t,i]).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")),!await n()){console.error(ce("Atom-TypeScript: Highlighter",5));break}t=i}return e.join("")}return t}finally{r.destroy()}}function le(t){return void 0!==t&&ge(b.extname(t))}function fe(){const t=atom.config.get("atom-typescript"),e=t.tsSyntaxScopes;return t.allowJS&&e.push(...t.jsSyntaxScopes),e}function pe(t){return le(t.getPath())&&he(t)}function he(t){const[e]=t.getRootScopeDescriptor().getScopesArray();return fe().includes(e)}function de(t){return null!=t}const ge=function(t,e){const n=Zt.memoize((n=>Zt.throttle(t,e,{leading:!0})));return t=>n(t)(t)}((t=>{const e=atom.config.get("atom-typescript"),n=e.tsFileExtensions;if(e.allowJS&&n.push(...e.jsFileExtensions),e.extensionsFromGrammars){var r;const t=null!==(r=atom.config.get("core.customFileTypes"))&&void 0!==r?r:{},e=fe();n.push(...[].concat(...e.map((t=>{var e;return null===(e=atom.grammars.grammarForScopeName(t))||void 0===e?void 0:e.fileTypes})),...e.map((e=>t[e]))).filter(de).map((t=>"."+t)))}return n.includes(t)}),5e3);function me(t,e){const n=t.getPath();if(void 0!==n){return{file:n,...e?Yt(e):function(t){const e=t.getCursorBufferPosition();return{line:e.row+1,offset:e.column+1}}(t)}}}var ve={};function ye(t){const e=t.dataset.startLine;return void 0!==e?parseInt(e,10)-1:0}function we(t){const e=t.dataset.endLine;return void 0!==e?parseInt(e,10)-1:0}function be(t,e,n){const r=n.querySelectorAll(":scope > ol > li.node");if(0===r.length)return;for(const n of Array.from(r)){const r=ye(n),i=we(n);if(isFinite(r)&&isFinite(i)){if(t>=r&&e<=i){const r=be(t,e,n);return r||n}if(isFinite(i)&&e=i&&e<=o?n:void 0}function _e(t){return t.spans.length>0?t.spans[0].start.line-1:0}function Se(t,e){if(!t||!e)return t===e;if(t.text===e.text){if(e.collapsed&&(t.collapsed=!0),t.childItems&&e.childItems){let n,r;for(let i=0,o=t.childItems.length;i_e(t)-_e(e)));for(const e of t.childItems)xe(e)}}class ke{constructor(t){this.props=t,pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}async destroy(){await pt.destroy(this)}render(){var t,e,n,r;const i=this.props.navTree,{ctrl:o}=this.props,s=(i.childItems?"nested-":"")+"item"+(i.collapsed?" collapsed":" expanded"),a=this.getStyles();return pt.dom("li",{className:"node entry exanded list-"+s,dataset:{startLine:null===(t=this.props.navTree.spans[0])||void 0===t||null===(e=t.start)||void 0===e?void 0:e.line,endLine:null===(n=this.props.navTree.spans[0])||void 0===n||null===(r=n.end)||void 0===r?void 0:r.line}},pt.dom("div",{className:"header list-item",on:{click:t=>this.entryClicked(t,i)}},pt.dom("span",{className:a},i.text)),pt.dom("ol",{className:"entries list-tree"},i.childItems?i.childItems.map((t=>pt.dom(ke,{navTree:t,ctrl:o}))):null))}getStyles(){const{kind:t}=this.props.navTree;let e="icon icon-"+t;const{kindModifiers:n}=this.props.navTree;return n&&(e+=" "+n.split(/[, ]/).map((t=>"modifier-"+t.trim())).join(" ")),e}entryClicked(t,e){t.stopPropagation();(function(t,e){return!!t.childItems&&e.target===e.currentTarget})(e,t)?(e.collapsed=!e.collapsed,Qt(pt.update(this))):this.props.ctrl.gotoNode(e)}}ve=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};var Ee,Ce={},Te={};Ee="object"==typeof A&&A&&A.Object===Object&&A;var Ae="object"==typeof self&&self&&self.Object===Object&&self,Pe=Ee||Ae||Function("return this")();Ce=function(){return Te.Date.now()};var Oe={},Ie={},je={},Ne=/\s/;je=function(t){for(var e=t.length;e--&&Ne.test(t.charAt(e)););return e};var Le=/^\s+/;Ie=function(t){return t?t.slice(0,je(t)+1).replace(Le,""):t};var Fe,De={},Me={};Fe=(Te=Pe).Symbol;var Re={},Be=Object.prototype,ze=Be.hasOwnProperty,qe=Be.toString,He=Fe?Fe.toStringTag:void 0;Re=function(t){var e=ze.call(t,He),n=t[He];try{t[He]=void 0;var r=!0}catch(t){}var i=qe.call(t);return r&&(e?t[He]=n:delete t[He]),i};var $e={},Ue=Object.prototype.toString;$e=function(t){return Ue.call(t)};var Ve=Fe?Fe.toStringTag:void 0;Me=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Ve&&Ve in Object(t)?Re(t):$e(t)};var We={};We=function(t){return null!=t&&"object"==typeof t};De=function(t){return"symbol"==typeof t||We(t)&&"[object Symbol]"==Me(t)};var Ge=/^[-+]0x[0-9a-f]+$/i,Ke=/^0b[01]+$/i,Qe=/^0o[0-7]+$/i,Ze=parseInt;Oe=function(t){if("number"==typeof t)return t;if(De(t))return NaN;if(ve(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=ve(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ie(t);var n=Ke.test(t);return n||Qe.test(t)?Ze(t.slice(2),n?2:8):Ge.test(t)?NaN:+t};var Je=Math.max,Ye=Math.min;var Xe=T((function(t,e,n){var r,i,o,s,a,c,u=0,l=!1,f=!1,p=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function h(e){var n=r,o=i;return r=i=void 0,u=e,s=t.apply(o,n)}function d(t){return u=t,a=setTimeout(m,e),l?h(t):s}function g(t){var n=t-c;return void 0===c||n>=e||n<0||f&&t-u>=o}function m(){var t=Ce();if(g(t))return v(t);a=setTimeout(m,function(t){var n=e-(t-c);return f?Ye(n,o-(t-u)):n}(t))}function v(t){return a=void 0,p&&r?h(t):(r=i=void 0,s)}function y(){var t=Ce(),n=g(t);if(r=arguments,i=this,c=t,n){if(void 0===a)return d(c);if(f)return clearTimeout(a),a=setTimeout(m,e),h(c)}return void 0===a&&(a=setTimeout(m,e)),s}return e=Oe(e)||0,ve(n)&&(l=!!n.leading,o=(f="maxWait"in n)?Je(Oe(n.maxWait)||0,e):o,p="trailing"in n?!!n.trailing:p),y.cancel=function(){void 0!==a&&clearTimeout(a),u=0,r=c=i=a=void 0},y.flush=function(){return void 0===a?s:v(Ce())},y}));class tn{constructor(t){this.props=t,this.subscriptions=new d,this.longLineLength=4e3,this.largeFileLineCount=500,this.loadNavTree=async()=>{if(!this.editor)return;if(!this.getClient)return;const t=this.editor.getPath();if(void 0!==t)try{const e=await this.getClient(t),n=(await e.execute("navtree",{file:t})).body;n&&(this.setNavTree(n),await pt.update(this))}catch(e){console.error(e,t)}},this.selectAtCursorLine=({newBufferPosition:t})=>{var e,n;const r=this.firstNode();if(!r)return;const i=t.row,o=null!==(e=null===(n=be(i,i,r))||void 0===n?void 0:n.querySelector(".header"))&&void 0!==e?e:void 0,s=this.getSelectedNode();o!==s&&(s&&s.classList.remove("selected"),o&&o.classList.add("selected"))},this.subscribeToEditor=async t=>{if(this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),!t||!pe(t))return this.update({navTree:null});this.editor=t,await this.loadNavTree();const e=this.lineCountIfLarge(t);atom.config.get("atom-typescript.largeFileNoFollowCursor")&&0!==e||(this.editorScrolling=t.onDidChangeCursorPosition(this.selectAtCursorLine)),this.editorChanging=t.onDidStopChanging(0===e?this.loadNavTree:Xe(this.loadNavTree,Math.max(e/5,300)))},xe(t.navTree),pt.initialize(this),this.subscriptions.add(atom.workspace.observeActiveTextEditor(this.subscribeToEditor),atom.commands.add("atom-text-editor.typescript-editor",{"typescript:reveal-in-semantic-view":{description:"Reveal the symbol under the text cursor in semantic view",didDispatch:t=>{const e=t.currentTarget.getModel();this.selectAtCursorLine({newBufferPosition:e.getCursorBufferPosition()})}}}),atom.config.observe("atom-typescript.longLineLength",(t=>{t>0&&(this.longLineLength=t)})),atom.config.observe("atom-typescript.largeFileLineCount",(t=>{t>0&&(this.largeFileLineCount=t)})),atom.config.observe("linter-ui-default.longLineLength",(t=>{atom.config.get("atom-typescript.longLineLength")>0||"number"==typeof t&&(this.longLineLength=t)})),atom.config.observe("linter-ui-default.largeFileLineCount",(t=>{atom.config.get("atom-typescript.largeFileLineCount")>0||"number"==typeof t&&(this.largeFileLineCount=t/6)})))}async update(t){void 0!==t.navTree&&this.setNavTree(t.navTree),this.props={...this.props,...t},await pt.update(this)}async destroy(){this.editorScrolling&&this.editorScrolling.dispose(),this.editorChanging&&this.editorChanging.dispose(),this.editorScrolling=void 0,this.editorChanging=void 0,this.subscriptions.dispose(),await pt.destroy(this)}async setGetClient(t){this.getClient=t,await this.loadNavTree()}getSelectedNode(){var t;return null!==(t=this.element.querySelector(".header.selected"))&&void 0!==t?t:void 0}clearSelection(){const t=this.element.querySelectorAll(".header.selected");for(let e=0;e0?t.spans[0].start.offset-1:0}(t);this.editor.setCursorBufferPosition([e,n])}getCursorLine(){return this.editor?this.editor.getLastCursor().getBufferRow():void 0}setNavTree(t){if(xe(t),Zt.isEqual(t,this.props.navTree))return;Se(t,this.props.navTree),this.props.navTree=t;const e=this.firstNode();if(e){const t=this.getCursorLine();void 0!==t&&this.markSelection(be(t,t,e))}}scrollTo(t){const e=t;"function"==typeof e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded():e.scrollIntoView()}lineCountIfLarge(t){const e=t.getLineCount();if(e>=this.largeFileLineCount)return e;{const n=t.getBuffer();for(let t=0,r=e;tthis.longLineLength)return this.longLineLength;return 0}}}class en{constructor(t){this.comp=new tn({navTree:t.navTree})}static create(t){return en.instance||(en.instance=new en(t)),en.instance}get element(){return this.comp.element}async setGetClient(t){await this.comp.setGetClient(t),await this.comp.update({})}getTitle(){return"TypeScript"}getURI(){return"atom-typescript://semantic-view"}async destroy(){en.instance=null,await this.comp.destroy()}getDefaultLocation(){return"right"}getAllowedLocations(){return["left","right"]}serialize(){return{deserializer:"atomts-semantic-view/SemanticView",data:{navTree:this.comp.props.navTree}}}}en.instance=null;var nn,rn=u,on=a,sn=s;nn=function(t,e){return an(t,e)};var an=function(t,e){return t?cn(t,e):new un(e)};nn.createStream=an;function cn(t,e){if(!t)throw new Error("expected readStream");if(!t.readable)throw new Error("readStream must be readable");var n=new un(e);return t.pipe(n),n}function un(t){rn.Transform.call(this,t),t=t||{},this._readableState.objectMode=!0,this._lineBuffer=[],this._keepEmptyLines=t.keepEmptyLines||!1,this._lastChunkEndedWithCR=!1;var e=this;this.on("pipe",(function(t){e.encoding||t instanceof rn.Readable&&(e.encoding=t._readableState.encoding)}))}nn.createLineStream=function(t){return console.log("WARNING: byline#createLineStream is deprecated and will be removed soon"),cn(t)},nn.LineStream=un,on.inherits(un,rn.Transform),un.prototype._transform=function(t,e,n){e=e||"utf8",Buffer.isBuffer(t)&&("buffer"==e?(t=t.toString(),e="utf8"):t=t.toString(e)),this._chunkEncoding=e;var r=t.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g);this._lastChunkEndedWithCR&&"\n"==t[0]&&r.shift(),this._lineBuffer.length>0&&(this._lineBuffer[this._lineBuffer.length-1]+=r[0],r.shift()),this._lastChunkEndedWithCR="\r"==t[t.length-1],this._lineBuffer=this._lineBuffer.concat(r),this._pushBuffer(e,1,n)},un.prototype._pushBuffer=function(t,e,n){for(;this._lineBuffer.length>e;){var r=this._lineBuffer.shift();if((this._keepEmptyLines||r.length>0)&&!this.push(this._reencode(r,t))){var i=this;return void sn.setImmediate((function(){i._pushBuffer(t,e,n)}))}}n()},un.prototype._flush=function(t){this._pushBuffer(this._chunkEncoding,0,t)},un.prototype._reencode=function(t,e){return this.encoding&&this.encoding!=e?new Buffer(t,e).toString(this.encoding):this.encoding?t:new Buffer(t,e)};class ln{constructor(t){this.reportBusyWhile=t,this.callbacks=new Map,this.interval=0}async add(t,e){try{const n=new Promise(((n,r)=>{this.callbacks.set(t,{command:e,resolve:n,reject:r,started:Date.now()})}));return 0===this.interval&&(this.interval=window.setInterval((()=>{process.activateUvLoop()}),100)),await this.reportBusyWhile(e,(()=>n))}finally{this.callbacks.delete(t),0!==this.interval&&0===this.callbacks.size&&(clearInterval(this.interval),this.interval=0)}}rejectAll(t){for(const{reject:e}of this.callbacks.values())e(t);this.callbacks.clear()}resolve(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log("received response for",t.command,"in",Date.now()-e.started,"ms","with data",t.body),t.success?e.resolve(t):e.reject(new Error(t.message))):console.warn("unexpected response:",t)}resolveMS(t){const e=this.callbacks.get(t.request_seq);e?(window.atom_typescript_debug&&console.log(`received requestCompleted event for multistep command ${e.command} in ${Date.now()-e.started} ms`),e.resolve(void 0)):console.warn("unexpected requestCompleted event:",t)}error(t,e){const n=this.callbacks.get(t);n?n.reject(e):console.error(e)}}const fn=new Set(Object.keys({compileOnSaveAffectedFileList:!0,compileOnSaveEmitFile:!0,completionEntryDetails:!0,completions:!0,completionInfo:!0,configure:!0,definition:!0,format:!0,getCodeFixes:!0,getSupportedCodeFixes:!0,documentHighlights:!0,projectInfo:!0,quickinfo:!0,references:!0,reload:!0,rename:!0,navtree:!0,navto:!0,getApplicableRefactors:!0,getEditsForRefactor:!0,organizeImports:!0,signatureHelp:!0,getEditsForFileRename:!0,applyCodeActionCommand:!0})),pn=new Set(Object.keys({geterr:!0,geterrForProject:!0})),hn=new Set(Object.keys({configFileDiag:!0,semanticDiag:!0,suggestionDiag:!0,syntaxDiag:!0}));class dn{constructor(t,e,n){this.tsServerPath=t,this.version=e,this.reportBusyWhile=n,this.emitter=new m,this.seq=0,this.lastStderrOutput="",this.on=this.emitter.on.bind(this.emitter),this.exitHandler=(t,e=!0)=>{if(this.callbacks.rejectAll(t),e&&console.error("tsserver: ",t),this.server=void 0,this.emitter.emit("terminated"),e){let e=t.message;this.lastStderrOutput&&(e=`Last output from tsserver:\n${this.lastStderrOutput}\n\n${e}`),atom.notifications.addError("TypeScript server quit unexpectedly",{detail:e,stack:t.stack,dismissable:!0})}},this.onMessage=t=>{"response"===t.type?this.callbacks.resolve(t):this.onEvent(t)};const[r,i]=e.split(".").slice(0,2).map((t=>parseInt(t,10)));this.multistepSupported=r>2||2===r&&i>=2,this.callbacks=new ln(this.reportBusyWhile),this.server=this.startServer()}async execute(t,...e){this.server||(this.server=this.startServer(),this.emitter.emit("restarted"));const n={seq:this.seq++,command:t,arguments:e[0]};window.atom_typescript_debug&&console.log("sending request",n);let r=void 0;(function(t){return fn.has(t)}(t)||this.multistepSupported&&function(t){return pn.has(t)}(t))&&(r=this.callbacks.add(n.seq,t));try{if(!this.server.stdin)throw new Error("Server stdin is missing");this.server.stdin.write(JSON.stringify(n)+"\n")}catch(t){this.callbacks.error(n.seq,t)}return r}async restartServer(){if(this.server){const t=this.server,e=setTimeout((()=>t.kill()),1e4);await Promise.all([this.execute("exit"),new Promise((t=>{const e=this.emitter.once("terminated",(()=>{e.dispose(),t()}))}))]),clearTimeout(e)}this.server||(this.server=this.startServer(),this.emitter.emit("restarted"))}startServer(){window.atom_typescript_debug&&console.log("starting",this.tsServerPath);const t=function(t){const e=atom.config.get("atom-typescript").locale,n=e?["--locale",e]:[];return new v({command:t,args:n}).process}(this.tsServerPath);if(!t)throw new Error("ChildProcess failed to start");const e=this.exitHandler;if(t.once("error",e),t.once("exit",((t,n)=>{0===t?e(new Error("Server stopped normally"),!1):null!==t?e(new Error("exited with code: "+t)):null!==n&&e(new Error("terminated on signal: "+n))})),!t.stdout)throw new Error("ChildProcess stdout missing");if(!t.stderr)throw new Error("ChildProcess stderr missing");var n;return(n=t.stdout,n.pipe(mn()).pipe(new vn)).on("data",this.onMessage),t.stderr.on("data",(t=>{console.warn("tsserver stderr:",this.lastStderrOutput=t.toString())})),t}onEvent(t){var e;window.atom_typescript_debug&&console.log("received event",t),t.body&&(e=t.event,hn.has(e)?this.emitter.emit(t.event,t.body):"requestCompleted"===t.event&&this.callbacks.resolveMS(t.body))}}var gn,mn=T(nn);class vn extends l{constructor(){super({objectMode:!0})}_transform(t,e,n){const r=t.toString();try{r.startsWith("{")?this.push(JSON.parse(r)):r.startsWith("Content-Length:")||console.warn(r)}catch(t){console.error("client: failed to parse: ",r)}finally{n(void 0)}}}function yn(t,e){void 0===e&&(e=!1);var n=t.length,r=0,i="",o=0,s=16,a=0,c=0,u=0,l=0,f=0;function p(e,n){for(var i=0,o=0;i=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i=n)return o=n,s=17;var e=t.charCodeAt(r);if(wn(e)){do{r++,i+=String.fromCharCode(e),e=t.charCodeAt(r)}while(wn(e));return s=15}if(bn(e))return r++,i+=String.fromCharCode(e),13===e&&10===t.charCodeAt(r)&&(r++,i+="\n"),a++,u=r,s=14;switch(e){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var e="",i=r;;){if(r>=n){e+=t.substring(i,r),f=2;break}var o=t.charCodeAt(r);if(34===o){e+=t.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(bn(o)){e+=t.substring(i,r),f=2;break}f=6}r++}else{if(e+=t.substring(i,r),++r>=n){f=2;break}switch(t.charCodeAt(r++)){case 34:e+='"';break;case 92:e+="\\";break;case 47:e+="/";break;case 98:e+="\b";break;case 102:e+="\f";break;case 110:e+="\n";break;case 114:e+="\r";break;case 116:e+="\t";break;case 117:var s=p(4,!0);s>=0?e+=String.fromCharCode(s):f=4;break;default:f=5}i=r}}return e}(),s=10;case 47:var h=r-1;if(47===t.charCodeAt(r+1)){for(r+=2;r=12&&t<=15);return t}:h,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return c},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function wn(t){return 32===t||9===t||11===t||12===t||160===t||5760===t||t>=8192&&t<=8203||8239===t||8287===t||12288===t||65279===t}function bn(t){return 10===t||13===t||8232===t||8233===t}function _n(t){return t>=48&&t<=57}(gn||(gn={})).DEFAULT={allowTrailingComma:!1};var Sn,xn,kn=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=gn.DEFAULT);var r=null,i=[],o=[];function s(t){Array.isArray(i)?i.push(t):null!==r&&(i[r]=t)}return function(t,e,n){void 0===n&&(n=gn.DEFAULT);var r=yn(t,!1);function i(t){return t?function(){return t(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(t){return t?function(e){return t(e,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(e.onObjectBegin),a=o(e.onObjectProperty),c=i(e.onObjectEnd),u=i(e.onArrayBegin),l=i(e.onArrayEnd),f=o(e.onLiteralValue),p=o(e.onSeparator),h=i(e.onComment),d=o(e.onError),g=n&&n.disallowComments,m=n&&n.allowTrailingComma;function v(){for(;;){var t=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:g||y(11);break;case 2:y(12);break;case 6:y(16)}switch(t){case 12:case 13:g?y(10):h();break;case 16:y(1);break;case 15:case 14:break;default:return t}}}function y(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=[]),d(t),e.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==e.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function w(t){var e=r.getTokenValue();return t?f(e):a(e),v(),!0}function b(){switch(r.getToken()){case 11:var t=r.getTokenValue(),e=Number(t);isNaN(e)&&(y(2),e=0),f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function _(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(w(!1),6===r.getToken()?(p(":"),v(),k()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function S(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),2===r.getToken()&&m)break}else t&&y(6,[],[]);_()||y(4,[],[2,5]),t=!0}return c(),2!==r.getToken()?y(7,[2],[]):v(),!0}function x(){u(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),p(","),v(),4===r.getToken()&&m)break}else t&&y(6,[],[]);k()||y(4,[],[4,5]),t=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function k(){switch(r.getToken()){case 3:return x();case 1:return S();case 10:return w(!0);default:return b()}}if(v(),17===r.getToken())return!!n.allowEmptyContent||(y(4,[],[]),!1);if(!k())return y(4,[],[]),!1;17!==r.getToken()&&y(9,[],[])}(t,{onObjectBegin:function(){var t={};s(t),o.push(i),i=t,r=null},onObjectProperty:function(t){r=t},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var t=[];s(t),o.push(i),i=t,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(t,n,r){e.push({error:t,offset:n,length:r})}},n),i[0]},En=x,Cn=b;xn=function(){var t=Error.prepareStackTrace;Error.prepareStackTrace=function(t,e){return e};var e=(new Error).stack;return Error.prepareStackTrace=t,e[2].getFileName()};var Tn,An,Pn,On,In,jn,Nn,Ln,Fn,Dn,Mn=b,Rn=!1;function Bn(){An={},Pn="win32"===process.platform,On=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,In=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/,(jn={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n,r,i,o,s=(e=t,n=On.exec(e),r=(n[1]||"")+(n[2]||""),i=n[3]||"",o=In.exec(i),[r,o[1],o[2],o[3]]);if(!s||4!==s.length)throw new TypeError("Invalid path '"+t+"'");return{root:s[0],dir:s[0]+s[1].slice(0,-1),base:s[2],ext:s[3],name:s[2].slice(0,s[2].length-s[3].length)}},Nn=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,(Ln={}).parse=function(t){if("string"!=typeof t)throw new TypeError("Parameter 'pathString' must be a string, not "+typeof t);var e,n=(e=t,Nn.exec(e).slice(1));if(!n||4!==n.length)throw new TypeError("Invalid path '"+t+"'");return n[1]=n[1]||"",n[2]=n[2]||"",n[3]=n[3]||"",{root:n[0],dir:n[0]+n[1].slice(0,-1),base:n[2],ext:n[3],name:n[2].slice(0,n[2].length-n[3].length)}},An=Pn?jn.parse:Ln.parse,Fn=Ln.parse,An.posix=Fn,Dn=jn.parse,An.win32=Dn}var zn=Mn.parse||(Rn||(Rn=!0,Bn()),An),qn=function(t,e){var n="/";/^([A-Za-z]:)/.test(t)?n="":/^\\\\/.test(t)&&(n="\\\\");for(var r=[t],i=zn(t);i.dir!==r[r.length-1];)r.push(i.dir),i=zn(i.dir);return r.reduce((function(t,r){return t.concat(e.map((function(t){return Mn.resolve(n,r,t)})))}),[])};Tn=function(t,e,n){var r=e&&e.moduleDirectory?[].concat(e.moduleDirectory):["node_modules"];if(e&&"function"==typeof e.paths)return e.paths(n,t,(function(){return qn(t,r)}),e);var i=qn(t,r);return e&&e.paths?i.concat(e.paths):i};var Hn;Hn=function(t,e){return e||{}};var $n,Un,Vn={},Wn={},Gn=Array.prototype.slice,Kn=Object.prototype.toString;function Qn(t,e){for(var n=t.split("."),r=e.split(" "),i=r.length>1?r[0]:"=",o=(r.length>1?r[1]:r[0]).split("."),s=0;s<3;++s){var a=parseInt(n[s]||0,10),c=parseInt(o[s]||0,10);if(a!==c)return"<"===i?a="===i&&a>=c}return">="===i}function Zn(t,e){var n=e.split(/ ?&& ?/);if(0===n.length)return!1;for(var r=0;r= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'),$n=function(t,e){return Vn(Jn,t)&&function(t,e){if("boolean"==typeof e)return e;var n=void 0===t?process.versions&&process.versions.node&&process.versions.node:t;if("string"!=typeof n)throw new TypeError(void 0===t?"Unable to determine current node version":"If provided, a valid node version is required");if(e&&"object"==typeof e){for(var r=0;r1?e[0]:"=",r=(e.length>1?e[1]:e[0]).split("."),i=0;i<3;++i){var o=parseInt(ir[i]||0,10),s=parseInt(r[i]||0,10);if(o!==s)return"<"===n?o="===n&&o>=s}return">="===n}function sr(t){var e=t.split(/ ?&& ?/);if(0===e.length)return!1;for(var n=0;n= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"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":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"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":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"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":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"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":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}');var ur={};for(var lr in cr)Object.prototype.hasOwnProperty.call(cr,lr)&&(ur[lr]=ar(cr[lr]));Sn.core=ur;Sn.isCore=function(t){return $n(t)};var fr=x,pr=b,hr=fr.realpathSync&&"function"==typeof fr.realpathSync.native?fr.realpathSync.native:fr.realpathSync,dr=function(t){try{var e=fr.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isFile()||e.isFIFO()},gr=function(t){try{var e=fr.statSync(t)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return!1;throw t}return e.isDirectory()},mr=function(t){try{return hr(t)}catch(t){if("ENOENT"!==t.code)throw t}return t},vr=function(t,e,n){return n&&!1===n.preserveSymlinks?t(e):e},yr=function(t,e){var n=t(e);try{return JSON.parse(n)}catch(t){}};async function wr(t,e){const{NODE_PATH:n}=process.env,r=e+".js",i=await async function(t,e){return new Promise(((n,r)=>br(t,e,((t,e)=>{t?r(t):void 0===e?r(new Error("Module path is undefined")):n(e)}))))}("typescript/lib/"+r,{basedir:b.dirname(t),paths:void 0!==n?n.split(b.delimiter):void 0}).catch((async()=>{const e=await async function(t){const e=await async function(t){let e=t,n=b.dirname(e);for(;e!==n;){const t=await Sr(e,[[".atom-typescript.json"],[".atom","atom-typescript.json"],[".vscode","settings.json"]]);if(void 0!==t)return{basedir:e,configFile:t};e=n,n=b.dirname(e)}}(t);if(e)try{const t=kn(await async function(t){return new Promise(((e,n)=>x.readFile(t,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))}(e.configFile));let r;if("object"==typeof(n=t)&&null!==n&&"string"==typeof n.tsdkPath)r=t.tsdkPath;else{if(!function(t){return"object"==typeof t&&null!==t&&"string"==typeof t["typescript.tsdk"]}(t))return;r=b.dirname(t["typescript.tsdk"])}return b.isAbsolute(r)?r:b.join(e.basedir,r)}catch(t){console.warn(t)}var n}(b.dirname(t));if(void 0!==e){const t=b.join(e,"lib",r);if(await _r(t))return t}const n=atom.config.get("atom-typescript.tsdkPath");if(n){const t=b.join(n,"lib",r);if(await _r(t))return t}return require.resolve("typescript/lib/"+r)})),o=b.resolve(i,"../../package.json");return{version:require(o).version,pathToBin:i}}Sn.sync=function(t,e){if("string"!=typeof t)throw new TypeError("Path must be a string.");var n=Hn(0,e),r=n.isFile||dr,i=n.readFileSync||fr.readFileSync,o=n.isDirectory||gr,s=n.realpathSync||mr,a=n.readPackageSync||yr;if(n.readFileSync&&n.readPackageSync)throw new TypeError("`readFileSync` and `readPackageSync` are mutually exclusive.");var c=n.packageIterator,u=n.extensions||[".js"],l=!1!==n.includeCoreModules,f=n.basedir||pr.dirname(xn()),p=n.filename||f;n.paths=n.paths||[];var h=vr(s,pr.resolve(f),n);if(/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(t)){var d=pr.resolve(h,t);"."!==t&&".."!==t&&"/"!==t.slice(-1)||(d+="/");var g=y(d)||b(d);if(g)return vr(s,g,n)}else{if(l&&$n(t))return t;var m=function(t,e){for(var r=function(){return function(t,e,n){for(var r=Tn(e,n,t),i=0;ix.access(t,x.constants.F_OK,(t=>{e(!t)}))))}async function Sr(t,e){for(const n of e){const e=b.join(t,...n);if(await _r(e))return e}}class xr{constructor(t){this.reportBusyWhile=t,this.clients=new Map,this.memoizedClients=new Map,this.emitter=new m,this.subscriptions=new d,this.tsserverInstancePerTsconfig=atom.config.get("atom-typescript").tsserverInstancePerTsconfig,this.on=this.emitter.on.bind(this.emitter),this.diagnosticHandler=(t,e)=>n=>{const r=(i=n)&&i.triggerFile&&i.configFile?n.configFile:n.file;var i;r&&this.emitter.emit("diagnostics",{type:e,serverPath:t,filePath:r,diagnostics:n.diagnostics})}}async restartAllServers(){await this.reportBusyWhile("Restarting servers",(()=>Promise.all(Array.from(this.getAllClients()).map((t=>t.restartServer())))))}async get(t){const e=this.memoizedClients.get(t);if(e)return e;const n=this._get(t);this.memoizedClients.set(t,n);try{return await n}catch(e){throw this.memoizedClients.delete(t),e}}dispose(){this.emitter.dispose(),this.subscriptions.dispose(),this.memoizedClients.clear(),this.clients.clear()}async _get(t){const{pathToBin:e,version:n}=await wr(t,"tsserver"),r=this.tsserverInstancePerTsconfig?f.findConfigFile(t,(t=>f.sys.fileExists(t))):void 0;let i=this.clients.get(e);i||(i=new Map,this.clients.set(e,i));const o=i.get(r);if(o)return o;const s=new dn(e,n,this.reportBusyWhile);return i.set(r,s),this.subscriptions.add(s.on("configFileDiag",this.diagnosticHandler(e,"configFileDiag")),s.on("semanticDiag",this.diagnosticHandler(e,"semanticDiag")),s.on("syntaxDiag",this.diagnosticHandler(e,"syntaxDiag")),s.on("suggestionDiag",this.diagnosticHandler(e,"suggestionDiag"))),s}*getAllClients(){for(const t of this.clients.values())yield*t.values()}}function kr(t){return{grammarScopes:fe(),priority:100,async highlight(e,n){if(!pe(e))return;const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("documentHighlights",{...r,filesToSearch:[r.file]});return o.body?Array.from(function*(t,e){for(const n of e)n.file===t&&(yield*n.highlightSpans.map(te))}(r.file,o.body)):void 0}}}async function Er(t,e,n){if(void 0===t)return null;const r=e.dom("div",{className:"atom-typescript-datatip-tooltip-kind"},t.kind,function(t,e){return void 0===e?null:t.dom("span",{className:"atom-typescript-datatip-tooltip-kind-modifiers"},e)}(t.kindModifiers)),i=t.tags?t.tags.map((t=>{const n="atom-typescript-datatip-tooltip-doc-tag atom-typescript-datatip-tooltip-doc-tag-name-"+t.name;return e.dom("div",{className:n},e.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-name"},t.name),function(t,e){if(void 0===e)return null;const[,n,r]=/^\s*(\S*)([^]*)$/.exec(e);return t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text"},t.dom("span",{className:"atom-typescript-datatip-tooltip-doc-tag-text-first-word"},n),r)}(e,t.text))})):null,o=e.dom("div",{className:"atom-typescript-datatip-tooltip-doc"},t.documentation,i),s=t.displayString.replace(/^\(.+?\)\s+/,"");return[await n(s),r,o]}const Cr=Symbol.for("react.element"),Tr={dom:(t,e,...n)=>n.length>0?{$$typeof:Cr,type:t,ref:null,props:{...e,children:n}}:{$$typeof:Cr,type:t,ref:null,props:{...e}}};class Ar{constructor(t){this.getClient=t,this.providerName="TypeScript type tooltips",this.priority=100,this.grammarScopes=fe()}async datatip(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("quickinfo",{file:n,line:e.row+1,offset:e.column+1})).body,o=await Er(i,Tr,Pr);return{component:()=>Tr.dom("div",{className:"atom-typescript-datatip-tooltip"},o),range:h.Range.fromObject([Xt(i.start),Xt(i.end)])}}catch(t){return}}}async function Pr(t){const e=atom.config.get("editor.fontFamily"),n=await ue(t.replace(/\r?\n$/,""),"source.ts");return Tr.dom("div",{style:{fontFamily:e},className:"atom-typescript-datatip-tooltip-code",dangerouslySetInnerHTML:{__html:n}})}function Or(t){const e=te(t);return{path:t.file,position:e.start,range:e,language:"TypeScript"}}function Ir(t){return{uri:t.file,range:ee(t.start,t.end),name:void 0}}class jr{constructor(t){this.props=t,pt.initialize(this)}async update(t){return this.props={...this.props,...t},pt.update(this)}render(){const t={fontFamily:atom.config.get("editor.fontFamily")};return pt.dom("div",{className:"editor editor-colors",style:t,innerHTML:this.props.highlightedText})}}var Nr,Lr,Fr,Dr={},Mr=!1;function Rr(){return Mr||(Mr=!0,function(){var t,e;t=b.sep,Nr=function(e,n,r){var i,o,s,a,c;for(o=e.length-1;e[o]===t;)o--;for(c=0,s=o,i=null;o>=0;)e[o]===t?(c++,null==i&&(i=e.substring(o+1,s+1))):0===o&&(s0&&f.push({candidate:a,score:l}));f.sort(n),r=f.map(t)}return null!=u&&(r=r.slice(0,u)),r}}.call(Br={})),Br}var Hr,$r,Ur,Vr=!1;function Wr(){return Vr||(Vr=!0,function(){var t;t=b.sep,Hr=function(e,n){var r,i,o;for(i=e.length-1;e[i]===t;)i--;for(o=i,r=null;i>=0;)e[i]===t?null==r&&(r=e.substring(i+1,o+1)):0===i&&(or;n<=r?e++:e--)p.push(e);return p}.apply(this);for(u=e.length,l=t.length,i=0,o=0,a=[];ie;0<=e?t++:t--)l.push(t);return l}.apply(this);if(c=-1!==i.indexOf(t),i=i.replace(e,""),a=r.match(n,i),!c)for(o=r.basenameMatch(n,i),a=a.concat(o).sort((function(t,e){return t-e})),u=null,s=0;spt.dom("span",{className:t.type},t.text))))}match(t){return t.query?function(t,e){let n=0,r=[];const i=[],o=Dr.match(t,e);let s;for(s of o){if(s<0)continue;const e=t.substring(n,s);e&&(r.length>0&&i.push({text:r.join(""),type:"character-match"}),r=[],i.push({text:e})),r.push(t[s]),n=s+1}r.length>0&&i.push({text:r.join(""),type:"character-match"});return i.push({text:t.substring(n)}),i}(t.label,t.query):[{text:t.label}]}}var Kr={},Qr=Kr&&Kr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Kr,"__esModule",{value:!0});const Zr=h,Jr=Qr(pt),Yr=Jr.default.dom,Xr=Qr(Dr);Kr=class{constructor(t){this.props=t,this.props.hasOwnProperty("initialSelectionIndex")||(this.props.initialSelectionIndex=0),t.initiallyVisibleItemCount&&this.initializeVisibilityObserver(),this.computeItems(!1),this.disposables=new Zr.CompositeDisposable,Jr.default.initialize(this),this.element.classList.add("select-list"),this.disposables.add(this.refs.queryEditor.onDidChange(this.didChangeQuery.bind(this))),t.skipCommandsRegistration||this.disposables.add(this.registerAtomCommands());const e=this.refs.queryEditor.element,n=this.didLoseFocus.bind(this);e.addEventListener("blur",n),this.didClickItemsList=!1,this.element.addEventListener("mousedown",(t=>{t.target===this.refs.items&&(this.didClickItemsList=!0)})),this.disposables.add(new Zr.Disposable((()=>{e.removeEventListener("blur",n)})))}static setScheduler(t){Jr.default.setScheduler(t)}static getScheduler(){return Jr.default.getScheduler()}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((t=>{for(const e of t)if(e.intersectionRatio>0){const t=e.target;this.visibilityObserver.unobserve(t);const n=Array.from(this.refs.items.children).indexOf(t);n>=0&&this.renderItemAtIndex(n)}}))}focus(){this.refs.queryEditor.element.focus()}didLoseFocus(t){this.didClickItemsList||this.element.contains(t.relatedTarget)?(this.didClickItemsList=!1,this.refs.queryEditor.element.focus()):document.hasFocus()&&this.cancelSelection()}reset(){this.refs.queryEditor.setText("")}destroy(){return this.disposables.dispose(),this.visibilityObserver&&this.visibilityObserver.disconnect(),Jr.default.destroy(this)}registerAtomCommands(){return atom.commands.add(this.element,{"core:move-up":t=>{this.selectPrevious(),t.stopPropagation()},"core:move-down":t=>{this.selectNext(),t.stopPropagation()},"core:move-to-top":t=>{this.selectFirst(),t.stopPropagation()},"core:move-to-bottom":t=>{this.selectLast(),t.stopPropagation()},"core:confirm":t=>{this.confirmSelection(),t.stopPropagation()},"core:cancel":t=>{this.cancelSelection(),t.stopPropagation()}})}update(t){let e=!1;return"items"in t&&(this.props.items=t.items,e=!0),"maxResults"in t&&(this.props.maxResults=t.maxResults,e=!0),"filter"in t&&(this.props.filter=t.filter,e=!0),"filterQuery"in t&&(this.props.filterQuery=t.filterQuery,e=!0),"query"in t&&(this.refs.queryEditor.setText(t.query),e=!1),"selectQuery"in t&&(t.selectQuery?this.refs.queryEditor.selectAll():this.refs.queryEditor.clearSelections()),"order"in t&&(this.props.order=t.order),"emptyMessage"in t&&(this.props.emptyMessage=t.emptyMessage),"errorMessage"in t&&(this.props.errorMessage=t.errorMessage),"infoMessage"in t&&(this.props.infoMessage=t.infoMessage),"loadingMessage"in t&&(this.props.loadingMessage=t.loadingMessage),"loadingBadge"in t&&(this.props.loadingBadge=t.loadingBadge),"itemsClassList"in t&&(this.props.itemsClassList=t.itemsClassList),"initialSelectionIndex"in t&&(this.props.initialSelectionIndex=t.initialSelectionIndex),e&&this.computeItems(),Jr.default.update(this)}render(){return Yr.div({},Yr(Zr.TextEditor,{ref:"queryEditor",mini:!0}),this.renderLoadingMessage(),this.renderInfoMessage(),this.renderErrorMessage(),this.renderItems())}renderItems(){if(this.items.length>0){const t=["list-group"].concat(this.props.itemsClassList||[]).join(" ");return this.visibilityObserver&&Jr.default.getScheduler().updateDocument((()=>{Array.from(this.refs.items.children).slice(this.props.initiallyVisibleItemCount).forEach((t=>{this.visibilityObserver.observe(t)}))})),this.listItems=this.items.map(((t,e)=>{const n=this.getSelectedItem()===t,r=!this.props.initiallyVisibleItemCount||ethis.didClickItem(e)})})),Yr.ol({className:t,ref:"items"},...this.listItems)}return!this.props.loadingMessage&&this.props.emptyMessage?Yr.span({ref:"emptyMessage"},this.props.emptyMessage):""}renderErrorMessage(){return this.props.errorMessage?Yr.span({ref:"errorMessage"},this.props.errorMessage):""}renderInfoMessage(){return this.props.infoMessage?Yr.span({ref:"infoMessage"},this.props.infoMessage):""}renderLoadingMessage(){return this.props.loadingMessage?Yr.div({className:"loading"},Yr.span({ref:"loadingMessage",className:"loading-message"},this.props.loadingMessage),this.props.loadingBadge?Yr.span({ref:"loadingBadge",className:"badge"},this.props.loadingBadge):""):""}getQuery(){return this.refs&&this.refs.queryEditor?this.refs.queryEditor.getText():""}getFilterQuery(){return this.props.filterQuery?this.props.filterQuery(this.getQuery()):this.getQuery()}didChangeQuery(){this.props.didChangeQuery&&this.props.didChangeQuery(this.getFilterQuery()),this.computeItems()}didClickItem(t){this.selectIndex(t),this.confirmSelection()}computeItems(t){this.listItems=null,this.visibilityObserver&&this.visibilityObserver.disconnect();const e=this.props.filter||this.fuzzyFilter.bind(this);this.items=e(this.props.items.slice(),this.getFilterQuery()),this.props.order&&this.items.sort(this.props.order),this.props.maxResults&&(this.items=this.items.slice(0,this.props.maxResults)),this.selectIndex(this.props.initialSelectionIndex,t)}fuzzyFilter(t,e){if(0===e.length)return t;{const n=[];for(const r of t){const t=this.props.filterKeyForItem?this.props.filterKeyForItem(r):r,i=Xr.default.score(t,e);i>0&&n.push({item:r,score:i})}return n.sort(((t,e)=>e.score-t.score)),n.map((t=>t.item))}}getSelectedItem(){return void 0===this.selectionIndex?null:this.items[this.selectionIndex]}renderItemAtIndex(t){const e=this.items[t],n=this.getSelectedItem()===e,r=this.listItems[t].component;this.visibilityObserver&&this.visibilityObserver.unobserve(r.element),r.update({element:this.props.elementForItem(e,{selected:n,index:t,visible:!0}),selected:n,onclick:()=>this.didClickItem(t)})}selectPrevious(){return void 0===this.selectionIndex?this.selectLast():this.selectIndex(this.selectionIndex-1)}selectNext(){return void 0===this.selectionIndex?this.selectFirst():this.selectIndex(this.selectionIndex+1)}selectFirst(){return this.selectIndex(0)}selectLast(){return this.selectIndex(this.items.length-1)}selectNone(){return this.selectIndex(void 0)}selectIndex(t,e=!0){t>=this.items.length?t=0:t<0&&(t=this.items.length-1);const n=this.selectionIndex;return this.selectionIndex=t,void 0!==t&&this.props.didChangeSelection&&this.props.didChangeSelection(this.getSelectedItem()),e?this.listItems?(n>=0&&this.renderItemAtIndex(n),t>=0&&this.renderItemAtIndex(t),Jr.default.getScheduler().getNextUpdatePromise()):Jr.default.update(this):Promise.resolve()}selectItem(t){const e=this.items.indexOf(t);if(-1===e)throw new Error("Cannot select the specified item because it does not exist.");return this.selectIndex(e)}confirmSelection(){const t=this.getSelectedItem();null!=t?this.props.didConfirmSelection&&this.props.didConfirmSelection(t):this.props.didConfirmEmptySelection&&this.props.didConfirmEmptySelection()}cancelSelection(){this.props.didCancelSelection&&this.props.didCancelSelection()}};class ti{constructor(t){this.mouseDown=this.mouseDown.bind(this),this.mouseUp=this.mouseUp.bind(this),this.didClick=this.didClick.bind(this),this.selected=t.selected,this.onclick=t.onclick,this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),this.selected&&this.element.classList.add("selected"),this.domEventsDisposable=new Zr.Disposable((()=>{this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick)})),Jr.default.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}mouseDown(t){t.preventDefault()}mouseUp(t){t.preventDefault()}didClick(t){t.preventDefault(),this.onclick()}destroy(){this.element.remove(),this.domEventsDisposable.dispose()}update(t){this.element.removeEventListener("mousedown",this.mouseDown),this.element.removeEventListener("mouseup",this.mouseUp),this.element.removeEventListener("click",this.didClick),this.element.parentNode.replaceChild(t.element,this.element),this.element=t.element,this.element.addEventListener("mousedown",this.mouseDown),this.element.addEventListener("mouseup",this.mouseUp),this.element.addEventListener("click",this.didClick),t.selected&&this.element.classList.add("selected"),this.selected=t.selected,this.onclick=t.onclick,Jr.default.getScheduler().updateDocument(this.scrollIntoViewIfNeeded.bind(this))}scrollIntoViewIfNeeded(){this.selected&&this.element.scrollIntoViewIfNeeded(!1)}}var ei=T(Kr);async function ni({items:t,itemTemplate:e,itemFilterKey:n,didChangeSelection:r}){let i;const o=document.activeElement;try{return await new Promise((o=>{let s,a,c="Loading...",u=!1;const l=t=>{u||Qt(f.update(t))};"function"==typeof t&&(s=async e=>{const n=setTimeout((()=>l({loadingMessage:"Loading..."})),300),r=await t(e);clearTimeout(n),l({items:r,emptyMessage:"Nothing matches the search value",loadingMessage:void 0})},c=void 0,a="Please enter a search value");const f=new ei({items:[],elementForItem:t=>pt.render(e(t,f)),filterKeyForItem:t=>""+t[n],didChangeSelection:r,didCancelSelection:()=>{u=!0,o(void 0)},didConfirmSelection:t=>{u=!0,o(t)},loadingMessage:c,didChangeQuery:s,emptyMessage:a,itemsClassList:["atom-typescript"]});"function"!=typeof t&&Qt(Promise.resolve(t).then((t=>{l({items:t,loadingMessage:void 0})}))),i=atom.workspace.addModalPanel({item:f,visible:!0}),f.focus()}))}finally{i&&i.destroy(),o&&o.focus()}}const ri=[];function ii(t,e,n){ri.push({selector:t,command:e,desc:n})}async function oi(t,e,n){const r=Promise.all(t.body.refs.map((async t=>{var e,n;const r=(await new Promise(((e,n)=>x.readFile(t.file,((t,r)=>{t?n(t):e(r.toString("utf-8"))}))))).split(/\r?\n/g),i=void 0!==t.contextStart&&void 0!==t.contextEnd?r.slice(t.contextStart.line-1,t.contextEnd.line):r,o=(await ue(i.join("\n"),"source.tsx")).split("\n")[t.start.line-(null!==(e=null===(n=t.contextStart)||void 0===n?void 0:n.line)&&void 0!==e?e:1)];return{...t,hlText:o}}))),i=await ni({items:r,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(Gr,{label:atom.project.relativize(t.file),query:e.getFilterQuery()}),pt.dom("div",{className:"pull-right"},"line: ",t.start.line),pt.dom(jr,{highlightedText:t.hlText})),itemFilterKey:"file"});i&&await n(e,i)}async function si(t,e,n){if(t.body)if(t.body.length>1){const r=await ni({items:t.body,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(Gr,{label:t.file,query:e.getFilterQuery()}),pt.dom("div",{className:"pull-right"},"line: ",t.start.line)),itemFilterKey:"file"});r&&await n(e,r)}else t.body.length>0&&await n(e,t.body[0])}function ai(t){const e=t.spans.map(te).reduce(((t,e)=>e.union(t)));return{kind:ui[t.kind],plainText:t.text,startPosition:e.start,endPosition:e.end,landingPosition:t.nameSpan?te(t.nameSpan).start:void 0,children:t.childItems?t.childItems.map(ai).sort(ci):[]}}function ci(t,e){const n=t.landingPosition?t.landingPosition:t.startPosition,r=e.landingPosition?e.landingPosition:e.startPosition;return n.compare(r)}ii("atom-text-editor","typescript:find-references",(t=>({description:"Find where symbol under text cursor is referenced",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("references",n);await oi(i,e,t.histGoForward)}}))),ii("atom-text-editor","typescript:go-to-declaration",(t=>({description:"Go to declaration of symbol under text cursor",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("definition",n);await si(i,e,t.histGoForward)}})));const ui={directory:"file",module:"module","external module name":"module",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"field",constructor:"constructor",enum:"enum",interface:"interface",type:"interface",function:"function","local function":"function",label:"variable",alias:"variable",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"string","":void 0,warning:void 0,keyword:void 0,script:void 0,call:void 0,index:void 0,construct:void 0,"type parameter":void 0,"primitive type":void 0};class li{constructor(t){this.getClient=t,this.triggerCharacters=new Set([]),this.grammarScopes=fe(),this.priority=100,this.disposables=new d;const e=new Set(["<","(",","]),n=new Set([]);this.disposables.add(atom.config.observe("atom-typescript.sigHelpDisplayOnChange",(t=>{this.triggerCharacters=t?e:n})))}dispose(){this.disposables.dispose()}async getSignatureHelp(t,e){try{const n=t.getPath();if(void 0===n)return;const r=await this.getClient(n),i=(await r.execute("signatureHelp",{file:n,line:e.row+1,offset:e.column+1})).body;return{signatures:i.items.map(ie),activeParameter:i.argumentIndex,activeSignature:i.selectedItemIndex}}catch(t){return}}}function fi(t){return pt.dom("li",null,t.description)}class pi{constructor(t,e){this.getClient=t,this.applyEdits=e,this.selector=fe().map((t=>t.includes(".")?"."+t:t)).join(", "),this.inclusionPriority=3,this.suggestionPriority=atom.config.get("atom-typescript").autocompletionSuggestionPriority,this.excludeLowerPriority=!1}async getSuggestions(t){const e=function(t){const e=t.editor.getPath();if(void 0===e)return;return{file:e,line:t.bufferPosition.row+1,offset:t.bufferPosition.column+1}}(t),n=function(t){const e=t.editor.getBuffer().getTextInRange([[t.bufferPosition.row,0],t.bufferPosition]).match(hi);return e?e[0]:""}(t);if(!e)return[];const r=function(t){if(void 0===t)return;if(!t)return;const e=t.slice(-1);if(wi.has(e))return e;return}(function(t,e){let n;const r=new h.Range([0,0],e);return t.backwardsScanInRange(/\S/,r,(({matchText:t,stop:e})=>{n=t,e()})),n}(t.editor.getBuffer(),t.bufferPosition));if(!n&&!t.activatedManually&&!r)return[];if(gi(t.scopeDescriptor.getScopesArray(),"string.template.")&&!gi(t.scopeDescriptor.getScopesArray(),"template.expression."))return[];try{let i=await this.getSuggestionsWithCache({prefix:n,location:e,triggerCharacter:r,activatedManually:t.activatedManually});return i=Dr.filter(i,n,{key:"displayText"}),i.map((r=>({replacementPrefix:r.replacementRange?t.editor.getTextInBufferRange(r.replacementRange):n,location:e,...this.getDetailsFromCache(r),...vi(t,r)})))}catch(t){return[]}}async getSuggestionDetailsOnSelect(t){return"text"in t&&!("rightLabel"in t)?this.getAdditionalDetails(t):null}onDidInsertSuggestion(t){const e=t.suggestion;if(!e.hasAction)return;if(!this.lastSuggestions)return;const n=this.lastSuggestions.client;let r=this.getDetailsFromCache(e);Qt((async()=>{var t;if(r||(r=await this.getAdditionalDetails(e)),!(null===(t=r)||void 0===t?void 0:t.details.codeActions))return;let i;i=1===r.details.codeActions.length?r.details.codeActions[0]:await ni({items:r.details.codeActions,itemTemplate:fi,itemFilterKey:"description"}),i&&(await this.applyEdits(i.changes),i.commands&&await Promise.all(i.commands.map((t=>n.execute("applyCodeActionCommand",{command:t})))))})())}async getAdditionalDetails(t){var e;if(void 0===t.identifier)return null;if(!this.lastSuggestions)return null;const n=await this.lastSuggestions.client.execute("completionEntryDetails",{entryNames:[t.identifier],...this.lastSuggestions.location});if(!n.body)return null;const[r]=n.body;if(!r)return null;let i=r.displayParts;i.length>=3&&"("===i[0].text&&i[1].text===t.leftLabel&&")"===i[2].text&&(i=i.slice(3));let o=i.map((t=>t.text)).join("");const s=t.hasAction&&1===(null===(e=r.codeActions)||void 0===e?void 0:e.length)?r.codeActions[0].description+"\n\n":"";s&&(o=s);const a=s+r.displayParts.map((t=>t.text)).join("")+(r.documentation?"\n\n"+r.documentation.map((t=>t.text)).join(" "):"");return this.lastSuggestions.details.set(t.displayText,{details:r,rightLabel:o,description:a}),{...t,details:r,rightLabel:o,description:a}}getDetailsFromCache(t){if(!this.lastSuggestions)return null;const e=this.lastSuggestions.details.get(t.displayText);return e||null}async getSuggestionsWithCache({prefix:t,location:e,triggerCharacter:n,activatedManually:r}){if(this.lastSuggestions&&!r){const n=this.lastSuggestions.location,r=di(this.lastSuggestions.prefix,n.offset),i=di(t,e.offset);if(n.file===e.file&&n.line===e.line&&r===i&&0!==this.lastSuggestions.suggestions.length)return this.lastSuggestions.suggestions}const i=await this.getClient(e.file),o=await async function({client:t,location:e,triggerCharacter:n}){if(parseInt(t.version.split(".")[0],10)>=3){var r;const i=await t.execute("completionInfo",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,triggerCharacter:n,...e});return i.body.entries.map(mi.bind(null,null===(r=i.body)||void 0===r?void 0:r.isMemberCompletion))}return(await t.execute("completions",{includeExternalModuleExports:!1,includeInsertTextCompletions:!0,...e})).body.map(mi.bind(null,void 0))}({client:i,location:e,triggerCharacter:r?void 0:n});return this.lastSuggestions={client:i,location:e,prefix:t,suggestions:o,details:new Map},o}}const hi=/(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}])(?:(?![\u{10000}-\u{10FFFF}])[\$_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\u200C\u200D\p{Mn}\p{Mc}\p{Nd}\p{Pc}])*$/u;function di(t,e){return e-("."===t?0:t.length)}function gi(t,e){for(const n of t)if(n.includes(e))return!0;return!1}function mi(t,e){return{displayText:e.name,text:void 0!==e.insertText?e.insertText:e.name,leftLabel:e.kind,replacementRange:e.replacementSpan?te(e.replacementSpan):void 0,type:yi[e.kind],isMemberCompletion:t,identifier:void 0!==e.source?{name:e.name,source:e.source}:e.name,hasAction:e.hasAction}}function vi(t,e){return atom.config.get("atom-typescript.autocompleteParens")&&["function","method"].includes(e.leftLabel)&&!function(t){const e=t.editor.getBuffer(),n=t.bufferPosition;return!!e.getTextInRange([n,[n.row,e.lineLengthForRow(n.row)]]).match(/\s*\(/)}(t)?{...e,snippet:e.text+"($1)",text:void 0}:e}const yi={directory:"require",module:"import","external module name":"import",class:"class","local class":"class",method:"method",property:"property",getter:"property",setter:"property","JSX attribute":"property",constructor:"method",enum:"type",interface:"type",type:"type","type parameter":"type","primitive type":"type",function:"function","local function":"function",label:"variable",alias:"import",var:"variable",let:"variable","local var":"variable",parameter:"variable","enum member":"constant",const:"constant",string:"value",keyword:"keyword","":void 0,warning:void 0,script:void 0,call:void 0,index:void 0,construct:void 0},wi=new Set(Object.keys({".":null,'"':null,"'":null,"`":null,"/":null,"@":null,"<":null,"#":null}));async function bi(t,e){const n=await async function(t,e){try{return await t.execute("getApplicableRefactors",{triggerReason:"invoked",...e})}catch{return}}(t,e);if(!n)return[];if(void 0===n.body||0===n.body.length)return[];const r=[];for(const t of n.body)for(const n of t.actions)r.push({refactorName:t.name,refactorDescription:t.description,refactorRange:e,actionName:n.name,actionDescription:n.description,inlineable:void 0===t.inlineable||t.inlineable});return r}async function _i(t,e,n){const r=await e.execute("getEditsForRefactor",{...t.refactorRange,refactor:t.refactorName,action:t.actionName});if(void 0===r.body)return;const{edits:i,renameFilename:o,renameLocation:s}=r.body;if(await n.applyEdits(i),void 0===o||void 0===s)return;const a=await atom.workspace.open(o,{searchAllPanes:!0,initialLine:s.line-1,initialColumn:s.offset-1});await atom.commands.dispatch(atom.views.getView(a),"typescript:rename-refactor")}ii("atom-text-editor","typescript:refactor-selection",(t=>({description:"Get a list of applicable refactors to selected code",async didDispatch(e){const n=me(e);if(!n)return;const r=e.getSelectedBufferRange(),i=await t.getClient(n.file),o=r.isEmpty()?n:{file:n.file,startLine:r.start.row+1,startOffset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1},s=await bi(i,o);if(0===s.length)return void atom.notifications.addInfo("AtomTS: No applicable refactors for the selection");const a=await ni({items:s,itemTemplate:(t,e)=>pt.dom("li",null,pt.dom(Gr,{label:`${t.refactorDescription}: ${t.actionDescription}`,query:e.getFilterQuery()})),itemFilterKey:"actionDescription"});void 0!==a&&await _i(a,i,t)}})));class Si{constructor(t,e,n){this.clientResolver=t,this.errorPusher=e,this.applyEdits=n,this.supportedFixes=new WeakMap}async getFixableRanges(t,e){const n=t.getPath();if(void 0===n)return[];const r=this.errorPusher.getErrorsInRange(n,e),i=await this.clientResolver.get(n),o=await this.getSupportedFixes(i);return Array.from(r).filter((t=>void 0!==t.code&&o.has(t.code))).map((t=>te(t)))}async runCodeFix(t,e){const n=t.getPath();if(void 0===n)return[];const r=await this.clientResolver.get(n),i=await this.getSupportedFixes(r),o=Array.from(this.errorPusher.getErrorsAt(n,e)).filter((t=>void 0!==t.code&&i.has(t.code))).map((t=>r.execute("getCodeFixes",{file:n,startLine:t.start.line,startOffset:t.start.offset,endLine:t.end.line,endOffset:t.end.offset,errorCodes:[t.code]}))),s=await Promise.all(o),a=[];for(const t of s)if(t.body)for(const e of t.body)a.push(e);const c=await bi(r,{file:n,...Yt(e)});return a.push(...c),a}async applyFix(t){if("changes"in t)return this.applyEdits(t.changes);return _i(t,await this.clientResolver.get(t.refactorRange.file),{applyEdits:this.applyEdits})}dispose(){}async getSupportedFixes(t){let e=this.supportedFixes.get(t);if(e)return e;const n=await t.execute("getSupportedCodeFixes");if(!n.body)throw new Error("No code fixes are supported");return e=new Set(n.body.map((t=>parseInt(t,10)))),this.supportedFixes.set(t,e),e}}async function xi(t,e){let n;try{return await new Promise(((r,i)=>{try{const o=new v({command:t,args:["--init"],options:{cwd:e},exit:t=>{0===t?r():i(new Error("Tsc ended with nonzero exit code "+t))}});n=o.onWillThrowError(i)}catch(t){i(t)}}))}finally{n&&n.dispose()}}ii("atom-text-editor","typescript:build",(t=>({description:"Compile all files in project related to current active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);t.reportBuildStatus(void 0);const i=await r.execute("projectInfo",{file:n,needFileNameList:!0}),o=new Set(i.body.fileNames);o.delete(i.body.configFileName);let s=0;const a=[...o.values()].map((e=>{return n=r.execute("compileOnSaveEmitFile",{file:e,forced:!0}),i=()=>{s+=1,t.reportProgress({max:o.size,value:s})},n.then(i,i),n;var n,i}));try{if((await Promise.all(a)).some((t=>!1===t.body)))throw new Error("Emit failed");t.reportBuildStatus({success:!0})}catch(e){const n=e;console.error(n),t.reportBuildStatus({success:!1,message:n.message})}}}))),ii("atom-text-editor","typescript:check-all-files",(t=>({description:"Typecheck all files in project related to current active text editor",async didDispatch(e){var n;const r=e.getPath();if(void 0===r)return;const i=await t.getClient(r),o=await i.execute("projectInfo",{file:r,needFileNameList:!0}),s=new Set(null===(n=o.body.fileNames)||void 0===n?void 0:n.filter((t=>!t.endsWith("tsconfig.json")&&!t.includes(`${b.sep}node_modules${b.sep}`)))),a=s.size;if(i.multistepSupported){const e=i.on("syntaxDiag",(e=>{"file"in e&&s.delete(e.file),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0}),e.dispose()}else{let e;const n=i.on("syntaxDiag",(r=>{void 0!==e&&window.clearTimeout(e),e=window.setTimeout((()=>{s.clear(),n.dispose(),t.reportProgress({max:a,value:a})}),2e3),"file"in r&&s.delete(r.file),0===s.size&&(n.dispose(),window.clearTimeout(e)),t.reportProgress({max:a,value:a-s.size})}));t.reportProgress({max:a,value:0}),await i.execute("geterrForProject",{file:r,delay:0})}}}))),ii("atom-workspace","typescript:clear-errors",(t=>({description:"Clear error messages",didDispatch(){t.clearErrors()}}))),ii("atom-text-editor","typescript:format-code",(t=>({description:"Format code in currently active text editor",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=[];for(const t of e.getSelectedBufferRanges())t.isEmpty()||r.push({line:(i=t).start.row+1,offset:i.start.column+1,endLine:i.end.row+1,endOffset:i.end.column+1});var i;if(0===r.length){const t=e.getBuffer().getEndPosition();r.push({line:1,offset:1,endLine:t.row+1,endOffset:t.column+1})}const o=await t.getClient(n),s=[];for(const t of r){const e=await o.execute("format",{...t,file:n});e.body&&s.push(...e.body)}s.length>0&&e.transact((()=>{!function(t,e){for(let n=e.length-1;n>=0;n--)t.setTextInBufferRange(te(e[n]),e[n].newText)}(e,s)}))}}))),ii("atom-text-editor","typescript:initialize-config",(()=>({description:"Create tsconfig.json in the project related to currently-active text edtior",async didDispatch(t,e){const n=atom.project.getDirectories();if(0===n.length)return e();const r=t.getPath();if(void 0===r)return;const i=(await wr(r,"tsc")).pathToBin;for(const t of n)t.contains(r)&&(await xi(i,t.getPath()),atom.notifications.addSuccess("Successfully created tsconfig.json in "+t.getPath()))}}))),ii("atom-text-editor","typescript:organize-imports",(t=>({description:"Organize module imports",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n),i=await r.execute("organizeImports",{scope:{type:"file",args:{file:n}}});i.body.length>0&&await t.applyEdits(i.body)}}))),ii("atom-text-editor","typescript:reload-projects",(t=>({description:"Reload projects",async didDispatch(e){const n=e.getPath();if(void 0===n)return;const r=await t.getClient(n);await r.execute("reloadProjects")}})));var ki,Ei,Ci={},Ti=!1;function Ai(){return Ti||(Ti=!0,ki={},function(){var t="object"==typeof self&&self.self===self&&self||"object"==typeof A&&A.global===A&&A||this||{},e=t._,n=Array.prototype,r=Object.prototype,i="undefined"!=typeof Symbol?Symbol.prototype:null,o=n.push,s=n.slice,a=r.toString,c=r.hasOwnProperty,u=Array.isArray,l=Object.keys,f=Object.create,p=function(){},h=function(t){return t instanceof h?t:this instanceof h?void(this._wrapped=t):new h(t)};void 0===ki||ki.nodeType?t._=h:(!module.nodeType&&ki&&(ki=h),Ei=h,ki._=Ei),h.VERSION="1.9.1";var d,g=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},m=function(t,e,n){return h.iteratee!==d?h.iteratee(t,e):null==t?h.identity:h.isFunction(t)?g(t,e,n):h.isObject(t)&&!h.isArray(t)?h.matcher(t):h.property(t)};h.iteratee=d=function(t,e){return m(t,e,1/0)};var v=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&e<=S};h.each=h.forEach=function(t,e,n){var r,i;if(e=g(e,n),k(t))for(r=0,i=t.length;r0?0:s-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,g(n,i,4),r,o)}};h.reduce=h.foldl=h.inject=E(1),h.reduceRight=h.foldr=E(-1),h.find=h.detect=function(t,e,n){var r=(k(t)?h.findIndex:h.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},h.filter=h.select=function(t,e,n){var r=[];return e=m(e,n),h.each(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r},h.reject=function(t,e,n){return h.filter(t,h.negate(m(e)),n)},h.every=h.all=function(t,e,n){e=m(e,n);for(var r=!k(t)&&h.keys(t),i=(r||t).length,o=0;o=0},h.invoke=v((function(t,e,n){var r,i;return h.isFunction(e)?i=e:h.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),h.map(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=_(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))})),h.pluck=function(t,e){return h.map(t,h.property(e))},h.where=function(t,e){return h.filter(t,h.matcher(e))},h.findWhere=function(t,e){return h.find(t,h.matcher(e))},h.max=function(t,e,n){var r,i,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ao&&(o=r);else e=m(e,n),h.each(t,(function(t,n,r){((i=e(t,n,r))>s||i===-1/0&&o===-1/0)&&(o=t,s=i)}));return o},h.min=function(t,e,n){var r,i,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,c=(t=k(t)?t:h.values(t)).length;ar||void 0===n)return 1;if(n0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+c,a):c=o>=0?Math.min(o+1,c):o+c+1;else if(n&&o&&c)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(s.call(r,a,c),h.isNaN))>=0?o+a:-1;for(o=t>0?a:c-1;o>=0&&oe?(r&&(clearTimeout(r),r=null),a=u,s=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,l)),s};return u.cancel=function(){clearTimeout(r),a=0,r=i=o=null},u},h.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},s=v((function(s){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,s))}else r=h.delay(o,e,this,s);return i}));return s.cancel=function(){clearTimeout(r),r=null},s},h.wrap=function(t,e){return h.partial(e,t)},h.negate=function(t){return function(){return!t.apply(this,arguments)}},h.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},h.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},h.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},h.once=h.partial(h.before,2),h.restArguments=v;var N=!{toString:null}.propertyIsEnumerable("toString"),L=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],F=function(t,e){var n=L.length,i=t.constructor,o=h.isFunction(i)&&i.prototype||r,s="constructor";for(b(t,s)&&!h.contains(e,s)&&e.push(s);n--;)(s=L[n])in t&&t[s]!==o[s]&&!h.contains(e,s)&&e.push(s)};h.keys=function(t){if(!h.isObject(t))return[];if(l)return l(t);var e=[];for(var n in t)b(t,n)&&e.push(n);return N&&F(t,e),e},h.allKeys=function(t){if(!h.isObject(t))return[];var e=[];for(var n in t)e.push(n);return N&&F(t,e),e},h.values=function(t){for(var e=h.keys(t),n=e.length,r=Array(n),i=0;i1&&(r=g(r,e[1])),e=h.allKeys(t)):(r=B,e=P(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=h.map(P(e,!1,!1),String),r=function(t,n){return!h.contains(e,n)}),h.pick(t,r,n)})),h.defaults=D(h.allKeys,!0),h.create=function(t,e){var n=y(t);return e&&h.extendOwn(n,e),n},h.clone=function(t){return h.isObject(t)?h.isArray(t)?t.slice():h.extend({},t):t},h.tap=function(t,e){return e(t),t},h.isMatch=function(t,e){var n=h.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},H=h.invert(q),$=function(t){var e=function(e){return t[e]},n="(?:"+h.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};h.escape=$(q),h.unescape=$(H),h.result=function(t,e,n){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(n)?n.call(t):n;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var V=/(.)^/,W={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},G=/\\|'|\r|\n|\u2028|\u2029/g,K=function(t){return"\\"+W[t]};h.template=function(t,e,n){!e&&n&&(e=n),e=h.defaults({},e,h.templateSettings);var r,i=RegExp([(e.escape||V).source,(e.interpolate||V).source,(e.evaluate||V).source].join("|")+"|$","g"),o=0,s="__p+='";t.replace(i,(function(e,n,r,i,a){return s+=t.slice(o,a).replace(G,K),o=a+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?s+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(s+="';\n"+i+"\n__p+='"),e})),s+="';\n",e.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=new Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var a=function(t){return r.call(this,t,h)},c=e.variable||"obj";return a.source="function("+c+"){\n"+s+"}",a},h.chain=function(t){var e=h(t);return e._chain=!0,e};var Q=function(t,e){return t._chain?h(e).chain():e};h.mixin=function(t){return h.each(h.functions(t),(function(e){var n=h[e]=t[e];h.prototype[e]=function(){var t=[this._wrapped];return o.apply(t,arguments),Q(this,n.apply(h,t))}})),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=n[t];h.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],Q(this,n)}})),h.each(["concat","join","slice"],(function(t){var e=n[t];h.prototype[t]=function(){return Q(this,e.apply(this._wrapped,arguments))}})),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],(function(){return h}))}()),ki}var Pi,Oi=!1;function Ii(){return Oi||(Oi=!0,function(){var t,e,n,r,i,o,s,a,c=[].slice;a=Ai(),n={cmd:"⌘",ctrl:"⌃",alt:"⌥",option:"⌥",shift:"⇧",enter:"⏎",left:"←",right:"→",up:"↑",down:"↓"},r={cmd:"Cmd",ctrl:"Ctrl",alt:"Alt",option:"Alt",shift:"Shift",enter:"Enter",left:"Left",right:"Right",up:"Up",down:"Down"},o={"~":"`",_:"-","+":"=","|":"\\","{":"[","}":"]",":":";",'"':"'","<":",",">":".","?":"/"},s=function(t){var e,n,r,i,o;if(r=0,n=[],null==t)return n;for(e=i=0,o=t.length;i=0&&t.splice(n,1),t},setValueForKeyPath:function(t,e,n){var r,i;for(i=s(e);i.length>1;)null==t[r=i.shift()]&&(t[r]={}),t=t[r];return null!=n?t[i.shift()]=n:delete t[i.shift()]},hasKeyPath:function(t,e){var n,r,i,o;for(i=0,o=(r=s(e)).length;i0?s<=a:s>=a;o=s+=i)u.push(t.splice.apply(t,[e+o,0].concat(c.call(r.slice(o,o+i)))));return u},sum:function(t){var e,n,r;for(e=0,n=0,r=t.length;n=0&&t.length%1==0}function p(t,e){for(var n=-1,r=t.length;++n3?t(r,i,c,a):(s=o,o=i,t(r,c,a))}}function N(t,e){return e}function L(t,e,r){r=r||n;var i=f(e)?[]:{};t(e,(function(t,e,n){t(b((function(t,r){r.length<=1&&(r=r[0]),i[e]=r,n(t)})))}),(function(t){r(t,i)}))}function F(t,e,n,r){var i=[];t(e,(function(t,e,r){n(t,(function(t,e){i=i.concat(e||[]),r(t)}))}),(function(t){r(t,i)}))}function D(t,r,i){if(null==r)r=1;else if(0===r)throw new Error("Concurrency must not be zero");function o(t,r,i,o){if(null!=o&&"function"!=typeof o)throw new Error("task callback must be a function");if(t.started=!0,l(r)||(r=[r]),0===r.length&&t.idle())return e.setImmediate((function(){t.drain()}));p(r,(function(e){var r={data:e,callback:o||n};i?t.tasks.unshift(r):t.tasks.push(r),t.tasks.length===t.concurrency&&t.saturated()})),e.setImmediate(t.process)}function s(t,e){return function(){c-=1;var n=!1,r=arguments;p(e,(function(t){p(u,(function(e,r){e!==t||n||(u.splice(r,1),n=!0)})),t.callback.apply(t,r)})),t.tasks.length+c===0&&t.drain(),t.process()}}var c=0,u=[],f={tasks:[],concurrency:r,payload:i,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(t,e){o(f,t,!1,e)},kill:function(){f.drain=n,f.tasks=[]},unshift:function(t,e){o(f,t,!0,e)},process:function(){for(;!f.paused&&cr?1:0}e.map(t,(function(t,e){n(t,(function(n,r){n?e(n):e(null,{value:t,criteria:r})}))}),(function(t,e){if(t)return r(t);r(null,h(e.sort(i),(function(t){return t.value})))}))},e.auto=function(t,r,i){"function"==typeof arguments[1]&&(i=r,r=null),i=c(i||n);var o=y(t),s=o.length;if(!s)return i(null);r||(r=s);var a={},u=0,f=!1,h=[];function d(t){h.unshift(t)}function w(t){var e=v(h,t);e>=0&&h.splice(e,1)}function _(){s--,p(h.slice(0),(function(t){t()}))}d((function(){s||i(null,a)})),p(o,(function(n){if(!f){for(var o,s=l(t[n])?t[n]:[t[n]],c=b((function(t,r){if(u--,r.length<=1&&(r=r[0]),t){var o={};m(a,(function(t,e){o[e]=t})),o[n]=r,f=!0,i(t,o)}else a[n]=r,e.setImmediate(_)})),p=s.slice(0,s.length-1),h=p.length;h--;){if(!(o=t[p[h]]))throw new Error("Has nonexistent dependency in "+p.join(", "));if(l(o)&&v(o,n)>=0)throw new Error("Has cyclic dependencies")}y()?(u++,s[s.length-1](c,a)):d((function t(){y()&&(u++,w(t),s[s.length-1](c,a))}))}function y(){return u3)throw new Error("Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)");function l(t,n){function r(t,e){return function(r){t((function(t,n){r(!t||e,{err:t,result:n})}),n)}}function i(t){return function(e){setTimeout((function(){e(null)}),t)}}for(;a.times;){var o=!(a.times-=1);s.push(r(a.task,o)),!o&&a.interval>0&&s.push(i(a.interval))}e.series(s,(function(e,n){n=n[n.length-1],(t||a.callback)(n.err,n.result)}))}return u<=2&&"function"==typeof t&&(r=n,n=t),"function"!=typeof t&&c(a,t),a.callback=r,a.task=n,a.callback?l():l},e.waterfall=function(t,r){if(r=c(r||n),!l(t)){var i=new Error("First argument to waterfall must be an array of functions");return r(i)}if(!t.length)return r();!function t(e){return b((function(n,i){if(n)r.apply(null,[n].concat(i));else{var o=e.next();o?i.push(t(o)):i.push(r),z(e).apply(null,i)}}))}(e.iterator(t))()},e.parallel=function(t,n){L(e.eachOf,t,n)},e.parallelLimit=function(t,e,n){L(k(e),t,n)},e.series=function(t,n){L(e.eachOfSeries,t,n)},e.iterator=function(t){return function e(n){function r(){return t.length&&t[n].apply(null,arguments),r.next()}return r.next=function(){return n>>1);n(e,t[o])>=0?r=o:i=o-1}return r}(t.tasks,a,i)+1,0,a),t.tasks.length===t.concurrency&&t.saturated(),e.setImmediate(t.process)}))}(o,t,r,s)},delete o.unshift,o},e.cargo=function(t,e){return D(t,1,e)},e.log=M("log"),e.dir=M("dir"),e.memoize=function(t,n){var i={},o={},s=Object.prototype.hasOwnProperty;n=n||r;var a=b((function(r){var a=r.pop(),c=n.apply(null,r);s.call(i,c)?e.setImmediate((function(){a.apply(null,i[c])})):s.call(o,c)?o[c].push(a):(o[c]=[a],t.apply(null,r.concat([b((function(t){i[c]=t;var e=o[c];delete o[c];for(var n=0,r=e.length;n=t.length)return e&&(e[a]=t),n(null,t);Gi.lastIndex=r;var c=Gi.exec(t);return s=i,i+=c[0],o=s+c[1],r=Gi.lastIndex,u[o]||e&&e[o]===o?process.nextTick(f):e&&Object.prototype.hasOwnProperty.call(e,o)?d(e[o]):Vi.lstat(o,p)}function p(t,r){if(t)return n(t);if(!r.isSymbolicLink())return u[o]=!0,e&&(e[o]=o),process.nextTick(f);if(!Ui){var i=r.dev.toString(32)+":"+r.ino.toString(32);if(c.hasOwnProperty(i))return h(null,c[i],o)}Vi.stat(o,(function(t){if(t)return n(t);Vi.readlink(o,(function(t,e){Ui||(c[i]=e),h(t,e)}))}))}function h(t,r,i){if(t)return n(t);var o=$i.resolve(s,r);e&&(e[i]=o),d(o)}function d(e){t=$i.resolve(e,t.slice(r)),l()}l()},Hi.realpath=Zi),Hi}var to,eo,no,ro,io,oo,so,ao=!1;function co(t){return t&&"realpath"===t.syscall&&("ELOOP"===t.code||"ENOMEM"===t.code||"ENAMETOOLONG"===t.code)}function uo(t,e,n){if(oo)return no(t,e,n);"function"==typeof e&&(n=e,e=null),no(t,e,(function(r,i){co(r)?so.realpath(t,e,n):n(r,i)}))}function lo(t,e){if(oo)return ro(t,e);try{return ro(t,e)}catch(n){if(co(n))return so.realpathSync(t,e);throw n}}function fo(){eo.realpath=uo,eo.realpathSync=lo}function po(){eo.realpath=no,eo.realpathSync=ro}function ho(){return ao||(ao=!0,to={},to=uo,uo.realpath=uo,uo.sync=lo,uo.realpathSync=lo,uo.monkeypatch=fo,uo.unmonkeypatch=po,no=(eo=x).realpath,ro=eo.realpathSync,io=process.version,oo=/^v[0-5]\./.test(io),so=Xi()),to}var go,mo,vo=!1;function yo(){return vo||(vo=!0,go={},go=function(t,e){for(var n=[],r=0;r=0&&u>0){for(r=[],o=n.length;l>=0&&!a;)l==c?(r.push(l),c=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())=0?c:u;r.length&&(a=[o,s])}return a}function ko(){return bo||(bo=!0,wo={},wo=_o,_o.range=xo),wo}var Eo,Co,To,Ao,Po,Oo,Io,jo,No=!1;function Lo(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function Fo(t){return t.split(Ao).join("\\").split(Po).join("{").split(Oo).join("}").split(Io).join(",").split(jo).join(".")}function Do(t){if(!t)return[""];var e=[],n=To("{","}",t);if(!n)return t.split(",");var r=n.pre,i=n.body,o=n.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=Do(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function Mo(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),Ho(function(t){return t.split("\\\\").join(Ao).split("\\{").join(Po).split("\\}").join(Oo).split("\\,").join(Io).split("\\.").join(jo)}(t),!0).map(Fo)):[]}function Ro(t){return"{"+t+"}"}function Bo(t){return/^-?0\d/.test(t)}function zo(t,e){return t<=e}function qo(t,e){return t>=e}function Ho(t,e){var n=[],r=To("{","}",t);if(!r||/\$$/.test(r.pre))return[t];var i,o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),a=o||s,c=r.body.indexOf(",")>=0;if(!a&&!c)return r.post.match(/,.*\}/)?Ho(t=r.pre+"{"+r.body+Oo+r.post):[t];if(a)i=r.body.split(/\.\./);else if(1===(i=Do(r.body)).length&&1===(i=Ho(i[0],!1).map(Ro)).length)return(f=r.post.length?Ho(r.post,!1):[""]).map((function(t){return r.pre+i[0]+t}));var u,l=r.pre,f=r.post.length?Ho(r.post,!1):[""];if(a){var p=Lo(i[0]),h=Lo(i[1]),d=Math.max(i[0].length,i[1].length),g=3==i.length?Math.abs(Lo(i[2])):1,m=zo;h0){var _=new Array(b+1).join("0");w=y<0?"-"+_+w.slice(1):_+w}}u.push(w)}}else u=Co(i,(function(t){return Ho(t,!1)}));for(var S=0;S65536)throw new TypeError("pattern is too long");var n=this.options;if(!n.noglobstar&&"**"===t)return Wo;if(""===t)return"";var r,i="",o=!!n.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,p="."===t.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",h=this;function d(){if(r){switch(r){case"*":i+=Zo,o=!0;break;case"?":i+=Qo,o=!0;break;default:i+="\\"+r}h.debug("clearStateChar %j %j",r,i),r=!1}}for(var g,m=0,v=t.length;m-1;k--){var E=c[k],C=i.slice(0,E.reStart),T=i.slice(E.reStart,E.reEnd-8),A=i.slice(E.reEnd-8,E.reEnd),P=i.slice(E.reEnd);A+=P;var O=C.split("(").length-1,I=P;for(m=0;m=0&&!(r=t[i]);i--);for(i=0;i>> no match, partial?",t,f,e,p),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return n;if(o===a)return i===s-1&&""===t[i];throw new Error("wtf?")}}function ds(){return ns||(ns=!0,hs()),Uo}var gs,ms=!1;function vs(){return ms||(ms=!0,gs={},gs="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}),gs}var ys,ws,bs,_s=!1;function Ss(t){return"/"===t.charAt(0)}function xs(t){var e=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(t),n=e[1]||"",r=Boolean(n&&":"!==n.charAt(1));return Boolean(e[2]||r)}function ks(){return _s||(_s=!0,ys={},ys="win32"===process.platform?xs:Ss,ws=Ss,ys.posix=ws,bs=xs,ys.win32=bs),ys}var Es,Cs,Ts,As,Ps,Os,Is,js,Ns,Ls,Fs,Ds,Ms,Rs=!1;function Bs(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function zs(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}function qs(t,e){return t.localeCompare(e)}function Hs(t){var e=null;if("/**"===t.slice(-3)){var n=t.replace(/(\/\*\*)+$/,"");e=new Ms(n,{dot:!0})}return{matcher:new Ms(t,{dot:!0}),gmatcher:e}}function $s(t,e,n){if(n||(n={}),n.matchBase&&-1===e.indexOf("/")){if(n.noglobstar)throw new Error("base matching requires globstar");e="**/"+e}t.silent=!!n.silent,t.pattern=e,t.strict=!1!==n.strict,t.realpath=!!n.realpath,t.realpathCache=n.realpathCache||Object.create(null),t.follow=!!n.follow,t.dot=!!n.dot,t.mark=!!n.mark,t.nodir=!!n.nodir,t.nodir&&(t.mark=!0),t.sync=!!n.sync,t.nounique=!!n.nounique,t.nonull=!!n.nonull,t.nosort=!!n.nosort,t.nocase=!!n.nocase,t.stat=!!n.stat,t.noprocess=!!n.noprocess,t.absolute=!!n.absolute,t.maxLength=n.maxLength||1/0,t.cache=n.cache||Object.create(null),t.statCache=n.statCache||Object.create(null),t.symlinks=n.symlinks||Object.create(null),function(t,e){t.ignore=e.ignore||[],Array.isArray(t.ignore)||(t.ignore=[t.ignore]),t.ignore.length&&(t.ignore=t.ignore.map(Hs))}(t,n),t.changedCwd=!1;var r=process.cwd();Bs(n,"cwd")?(t.cwd=Ls.resolve(n.cwd),t.changedCwd=t.cwd!==r):t.cwd=r,t.root=n.root||Ls.resolve(t.cwd,"/"),t.root=Ls.resolve(t.root),"win32"===process.platform&&(t.root=t.root.replace(/\\/g,"/")),t.cwdAbs=Ds(t.cwd)?t.cwd:Ws(t,t.cwd),"win32"===process.platform&&(t.cwdAbs=t.cwdAbs.replace(/\\/g,"/")),t.nomount=!!n.nomount,n.nonegate=!0,n.nocomment=!0,t.minimatch=new Ms(e,n),t.options=t.minimatch.options}function Us(t){for(var e=t.nounique,n=e?[]:Object.create(null),r=0,i=t.matches.length;rthis.maxLength)return!1;if(!this.stat&&oa(this.cache,e)){var r=this.cache[e];if(Array.isArray(r)&&(r="DIR"),!n||"DIR"===r)return r;if(n&&"FILE"===r)return!1}var i=this.statCache[e];if(!i){var o;try{o=Js.lstatSync(e)}catch(t){if(t&&("ENOENT"===t.code||"ENOTDIR"===t.code))return this.statCache[e]=!1,!1}if(o&&o.isSymbolicLink())try{i=Js.statSync(e)}catch(t){i=o}else i=o}return this.statCache[e]=i,r=!0,i&&(r=i.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||r,(!n||"FILE"!==r)&&r},la.prototype._mark=function(t){return ra.mark(this,t)},la.prototype._makeAbs=function(t){return ra.makeAbs(this,t)}),Zs}var pa,ha=!1;function da(t,e){if(t&&e)return da(t)(e);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){n[e]=t[e]})),n;function n(){for(var e=new Array(arguments.length),n=0;nr?(n.splice(0,r),process.nextTick((function(){e.apply(null,i)}))):delete Ea[t]}}))}(t))}function Pa(t){for(var e=t.length,n=[],r=0;r1)return!0;for(var i=0;ithis.maxLength)return e();if(!this.stat&&$a(this.cache,n)){var i=this.cache[n];if(Array.isArray(i)&&(i="DIR"),!r||"DIR"===i)return e(null,i);if(r&&"FILE"===i)return e()}var o=this.statCache[n];if(void 0!==o){if(!1===o)return e(null,o);var s=o.isDirectory()?"DIR":"FILE";return r&&"FILE"===s?e():e(null,s,o)}var a=this,c=Ua("stat\0"+n,(function(r,i){if(i&&i.isSymbolicLink())return ja.stat(n,(function(r,o){r?a._stat2(t,n,null,i,e):a._stat2(t,n,r,o,e)}));a._stat2(t,n,r,i,e)}));c&&ja.lstat(n,c)},Ja.prototype._stat2=function(t,e,n,r,i){if(n&&("ENOENT"===n.code||"ENOTDIR"===n.code))return this.statCache[e]=!1,i();var o="/"===t.slice(-1);if(this.statCache[e]=r,"/"===e.slice(-1)&&r&&!r.isDirectory())return i(null,!1,r);var s=!0;return r&&(s=r.isDirectory()?"DIR":"FILE"),this.cache[e]=this.cache[e]||s,o&&"FILE"===s?i():i(null,s,r)}}function Xa(){return Qa||(Qa=!0,Ya()),Ia}var tc,ec,nc,rc,ic,oc,sc,ac,cc,uc=!1;function lc(t){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach((function(e){t[e]=t[e]||rc[e],t[e+="Sync"]=t[e]||rc[e]})),t.maxBusyTries=t.maxBusyTries||3,t.emfileWait=t.emfileWait||1e3,!1===t.glob&&(t.disableGlob=!0),t.disableGlob=t.disableGlob||!1,t.glob=t.glob||sc}function fc(t,e,n){"function"==typeof e&&(n=e,e={}),ec(t,"rimraf: missing path"),ec.equal(typeof t,"string","rimraf: path should be a string"),ec.equal(typeof n,"function","rimraf: callback function required"),ec(e,"rimraf: invalid options argument provided"),ec.equal(typeof e,"object","rimraf: options should be object"),lc(e);var r=0,i=null,o=0;if(e.disableGlob||!ic.hasMagic(t))return s(null,[t]);function s(t,s){return t?n(t):0===(o=s.length)?n():void s.forEach((function(t){pc(t,e,(function s(a){if(a){if(("EBUSY"===a.code||"ENOTEMPTY"===a.code||"EPERM"===a.code)&&r1&&(e=n.shift()),t=n.shift(),u.readdir(r,(function(n,i){return null!=n?t(n):(e&&(i=l.filterExtensions(i,e)),i=(i=i.sort((function(t,e){return t.toLowerCase().localeCompare(e.toLowerCase())}))).map((function(t){return v.join(r,t)})),t(null,i))}))},filterExtensions:function(t,e){return e=e.map((function(t){return""===t?t:"."+t.replace(/^\./,"")})),t.filter((function(t){return _.include(e,v.extname(t))}))},listTreeSync:function(t){var e,n;return n=[],e=function(t){return n.push(t),!0},l.traverseTreeSync(t,e,e),n},move:function(t,e,n){return p(t,e,(function(r,i){var o,s;if(!r)return i?(s=v.dirname(e),u.exists(s,(function(r){if(!r)return l.makeTree(s,(function(r){if(!r)return u.rename(t,e,n);n(r)}));u.rename(t,e,n)}))):((o=new Error("'"+e+"' already exists.")).code="EEXIST",void n(o));n(r)}))},moveSync:function(t,e){var n,r;if(!h(t,e))throw(n=new Error("'"+e+"' already exists.")).code="EEXIST",n;return r=v.dirname(e),u.existsSync(r)||l.makeTreeSync(r),u.renameSync(t,e)},removeSync:function(t){return y.sync(t)},remove:function(t,e){return y(t,e)},writeFileSync:function(t,e,n){return m.sync(v.dirname(t)),u.writeFileSync(t,e,n)},writeFile:function(t,e,n,r){return r=_.last(arguments),m(v.dirname(t),(function(i){return null!=i?"function"==typeof r?r(i):void 0:u.writeFile(t,e,n,r)}))},copy:function(t,e,n){return m(v.dirname(e),(function(r){var i,o;if(null==r)return(o=u.createReadStream(t)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),(i=u.createWriteStream(e)).on("error",(function(t){return"function"==typeof n&&n(t),n=null})),i.on("close",(function(){return"function"==typeof n&&n(),n=null})),o.pipe(i);"function"==typeof n&&n(r)}))},copySync:function(t,e){var n,r,i,o,s,a,c;for(o=u.readdirSync(t),m.sync(e),c=[],s=0,a=o.length;s0;)r=new Buffer(n),i=u.readSync(s,r,0,r.length,o),u.writeSync(a,r,0,i,o),c.push(o+=i);return c}finally{null!=s&&u.closeSync(s),null!=a&&u.closeSync(a)}},makeTreeSync:function(t){if(!l.isDirectorySync(t))return m.sync(t)},makeTree:function(t,e){return l.isDirectory(t,(function(n){return n?"function"==typeof e?e():void 0:m(t,(function(t){return"function"==typeof e?e(t):void 0}))}))},traverseTreeSync:function(t,e,n){var r;if(null==n&&(n=e),l.isDirectorySync(t))return(r=function(t,e,n){var i,o,s,a,c,l,f;for(c=0,l=(f=u.readdirSync(t)).length;c0},p=function(t,e,n){return u.stat(t,(function(r,i){if(!r)return u.stat(e,(function(r,o){if(!r||"ENOENT"!==r.code)return n(void 0,t.toLowerCase()===e.toLowerCase()&&i.dev===o.dev&&i.ino===o.ino);n(void 0,!0)}));n(r)}))},h=function(t,e){var n,r;return r=w(t),n=w(e),!r||!n||t.toLowerCase()===e.toLowerCase()&&r.dev===n.dev&&r.ino===n.ino},Ci=new Proxy({},{get:function(t,e){var n;return null!=(n=l[e])?n:u[e]},set:function(t,e,n){return l[e]=n}})}).call(Ci);class wc{constructor(t){this.props=t,this.model=atom.workspace.buildTextEditor({mini:!0,softWrapped:!0,lineNumberGutterVisible:!1}),this.element=atom.views.getView(this.model),this.model.setText(t.initialText),t.selectAll?this.model.selectAll():this.model.getLastCursor().moveToEndOfScreenLine(),this.setReadOnly(),this.setGrammar(),this.model.scrollToBufferPosition([0,0])}async update(t){this.element=atom.views.getView(this.model),this.props={...this.props,...t},this.setReadOnly(),this.setGrammar()}focus(){this.element.focus()}getModel(){return this.model}setReadOnly(){this.model.setReadOnly(!!this.props.readOnly)}setGrammar(){void 0!==this.props.grammar?atom.textEditors.setGrammarOverride(this.model,this.props.grammar):atom.textEditors.clearGrammarOverride(this.model)}}class bc{constructor(t){this.props=t,pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom("div",{className:"atomts-rename-view",ref:"main"},pt.dom("div",{className:"block"},pt.dom("div",null,pt.dom("span",{ref:"title"},this.props.title),pt.dom("span",{className:"subtle-info-message"},pt.dom("span",null,"Close this panel with "),pt.dom("span",{className:"highlight"},"esc"),pt.dom("span",null," key. And commit with the "),pt.dom("span",{className:"highlight"},"enter"),pt.dom("span",null," key."))),pt.dom("div",{className:"find-container block"},pt.dom("div",{className:"editor-container"},pt.dom(wc,{ref:"editor",initialText:this.props.initialText,selectAll:this.props.selectAll}))),this.renderValidationMessage()))}async destroy(){await pt.destroy(this)}focus(){return this.refs.editor.focus()}getText(){return this.refs.editor.getModel().getText()}renderValidationMessage(){return void 0!==this.props.validationMessage?pt.dom("div",{className:"highlight-error"},this.props.validationMessage):null}}async function _c(t){const e=new bc({title:t.title,initialText:t.text,selectAll:t.autoSelect}),n=atom.workspace.addModalPanel({item:e,priority:1e3}),r=document.activeElement;e.focus();const i=new d;try{return await new Promise((n=>{i.add(atom.commands.add(e.refs.main,{"core:cancel":()=>{n(void 0)},"core:confirm":()=>{const r=e.getText(),i=t.onValidate(r);i?Qt(e.update({validationMessage:i})):n(r)}}))}))}finally{n.destroy(),i.dispose(),r&&r.focus()}}function Sc(t){const e=new d;for(const n of ri)if("atom-text-editor"===n.selector){const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(t){try{const e=t.currentTarget.getModel();pe(e)?await r.didDispatch(e,(()=>t.abortKeyBinding())):(t.abortKeyBinding(),he(e)&&atom.notifications.addWarning("Atom-TypeScript cancelled last command: Current editor has no file path",{description:`Atom-TypeScript needs to determine the file path of the current editor to execute \`${n.command}\`, which it failed to do. You probably just need to save the current file somewhere.`,dismissable:!0}))}catch(t){xc(t)}}}))}else{const r=n.desc(t);e.add(atom.commands.add(n.selector,n.command,{...r,async didDispatch(){try{await r.didDispatch()}catch(t){xc(t)}}}))}return e}function xc(t){atom.notifications.addFatalError("Something went wrong, see details below.",{detail:t.message,dismissable:!0,stack:t.stack})}ii("atom-text-editor","typescript:rename-file",(t=>({description:"Rename current file",async didDispatch(e){const n=e.getPath();if(!n)return;const r=await _c({autoSelect:!0,title:"Rename File",text:n,onValidate:t=>t.trim()?"":"If you want to abort : Press esc to exit"});if(!r)return;const i=await t.getClient(n),o=await i.execute("getEditsForFileRename",{oldFilePath:n,newFilePath:r});await t.applyEdits(o.body),await new Promise(((t,i)=>{Ci.move(n,r,(n=>{n?i(n):(e.getBuffer().setPath(r),t())}))}))}}))),ii("atom-text-editor","typescript:rename-refactor",(t=>({description:"Rename symbol under text cursor everywhere it is used",async didDispatch(e){const n=me(e);if(!n)return;const r=await t.getClient(n.file),i=await r.execute("rename",n),{info:o,locs:s}=i.body;if(!o.canRename)return void atom.notifications.addInfo("AtomTS: Rename not available at cursor location");const a=await _c({autoSelect:!0,title:"Rename Variable",text:o.displayName,onValidate:t=>t.replace(/\s/g,"")!==t.trim()?"The new variable must not contain a space":t.trim()?"":"If you want to abort : Press esc to exit"});void 0!==a&&await t.applyEdits(s.map((t=>({fileName:t.file,textChanges:t.locs.map((t=>({...t,newText:a})))}))))}}))),ii("atom-workspace","typescript:restart-all-servers",(t=>({description:"Kill all tsserver instances. They will be auto-restarted",async didDispatch(){t.killAllServers()}}))),ii("atom-workspace","typescript:return-from-declaration",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histGoBack()}}))),ii("atom-workspace","typescript:show-editor-position-history",(t=>({description:"If used `go-to-declaration`, return to previous text cursor position",async didDispatch(){await t.histShowHistory()}}))),ii("atom-text-editor","typescript:toggle-semantic-view",(t=>({description:"Toggle semantic view outline",didDispatch(){t.toggleSemanticViewController()}}))),ii("atom-text-editor","typescript:show-tooltip",(t=>({description:"Show type tooltip at current text cursor position",didDispatch:async e=>t.showTooltipAt(e)}))),ii("atom-text-editor","typescript:show-signature-help",(t=>({description:"Show signature help tooltip at current text cursor position",didDispatch:async e=>t.showSigHelpAt(e)}))),ii("atom-text-editor","typescript:hide-signature-help",(t=>({description:"Hide the currently visible signature help",async didDispatch(e,n){t.hideSigHelpAt(e)||n()}}))),ii("atom-text-editor","typescript:signature-help-next",(t=>({description:"Show next signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,1)||n()}}))),ii("atom-text-editor","typescript:signature-help-prev",(t=>({description:"Show previous signature help if available",async didDispatch(e,n){t.rotateSigHelp(e,-1)||n()}}))),ii("atom-text-editor","typescript:toggle-file-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleFileSymbolsView(e)}}))),ii("atom-text-editor","typescript:toggle-project-symbols",(t=>({description:"Toggle view for finding file symbols",async didDispatch(e){t.toggleProjectSymbolsView(e)}})));class kc{constructor(t,e){this.children=e,this.props={...t,delay:{show:0,hide:0}},pt.initialize(this),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}async update(t,e){this.props={...this.props,...t},this.children=e,await pt.update(this),this.tooltipDisposable.dispose(),this.tooltipDisposable=atom.tooltips.add(this.element,this.props)}render(){return pt.dom("div",{className:"inline-block"},this.children?this.children:null)}async destroy(){await pt.destroy(this),this.tooltipDisposable.dispose()}}class Ec{constructor(t){this.hiddenBuildStatus=!1,this.disposables=new d,this.buildStatusClicked=()=>{this.props.buildStatus.success||atom.notifications.addError("Build failed",{detail:this.props.buildStatus.message,dismissable:!0})},this.props={...t},this.setHideBuildStatus(atom.config.get("atom-typescript").buildStatusTimeout),this.resetBuildStatusTimeout(),pt.initialize(this),this.disposables.add(atom.config.onDidChange("atom-typescript.buildStatusTimeout",(({newValue:t})=>{this.setHideBuildStatus(t),Qt(this.update({}))})))}async update(t){const e=void 0!==t.buildStatus&&t.buildStatus.success!==this.props.buildStatus.success;this.props={...this.props,...t},e&&this.resetBuildStatusTimeout(),await pt.update(this)}render(){if(this.hiddenBuildStatus)return pt.dom("span",null);let t,e;return this.props.buildStatus.success?(t="highlight-success",e="Emit Success"):(t="highlight-error",e="Emit Failed"),pt.dom(kc,{title:this.props.buildStatus.success?"Build was successful":"Build failed; click to show error message"},pt.dom("span",{className:t,on:{click:this.buildStatusClicked}},e))}async destroy(){await pt.destroy(this)}resetBuildStatusTimeout(){this.hiddenBuildStatus=!1,this.props.buildStatus.success&&this.hideBuildStatus()}setHideBuildStatus(t){this.hideBuildStatus=t>0?Zt.debounce((()=>{this.hiddenBuildStatus=!0,Qt(pt.update(this))}),1e3*t):0===t?()=>{this.hiddenBuildStatus=!0}:()=>{}}}class Cc{constructor(t){this.props={...t},pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom(kc,{title:()=>this.props.tsConfigPath.startsWith("/dev/null")?"No tsconfig.json":"Click to open "+atom.project.relativize(this.props.tsConfigPath)},pt.dom("a",{className:"inline-block",href:"",on:{click:t=>{t.preventDefault(),this.openConfigPath()}}},this.props.tsConfigPath.startsWith("/dev/null")?"No project":_((t=this.props.tsConfigPath,"~"+atom.project.relativize(t)))));var t}async destroy(){await pt.destroy(this)}openConfigPath(){this.props.tsConfigPath.startsWith("/dev/null")?atom.notifications.addInfo("No tsconfig for current file"):Qt(atom.workspace.open(this.props.tsConfigPath))}}class Tc{constructor(t={}){this.props={visible:!0,pending:[],progress:{max:0,value:0},...t},pt.initialize(this)}async update(t){this.props={...this.props,...t},await pt.update(this)}render(){return pt.dom("ts-status-panel",{className:this.props.visible?"":"hide"},this.renderVersion(),this.renderPending(),this.renderConfigPath(),this.renderStatus(),this.renderProgress())}async destroy(){await pt.destroy(this)}dispose(){Qt(this.destroy())}async show(){await this.update({visible:!0})}async hide(){await this.update({visible:!1})}renderVersion(){return void 0!==this.props.clientVersion?pt.dom(kc,{title:"Active TypeScript version"},this.props.clientVersion):null}renderPending(){return this.props.pending.length>0?pt.dom(kc,{title:`Pending Requests:
    ${this.props.pending.map((({title:t})=>`
  • ${t}
  • `)).join("")}
`,html:!0},pt.dom("span",{ref:"pendingCounter"},this.props.pending.length.toString()),pt.dom("span",{ref:"pendingSpinner",className:"loading loading-spinner-tiny inline-block",style:{marginLeft:"5px",opacity:"0.5",verticalAlign:"sub"}})):null}renderConfigPath(){return void 0!==this.props.tsConfigPath?pt.dom(Cc,{tsConfigPath:this.props.tsConfigPath}):null}renderStatus(){return this.props.buildStatus?pt.dom(Ec,{buildStatus:this.props.buildStatus}):null}renderProgress(){return this.props.progress.value0;)e=this.prevCursorPositions.pop();if(e)return this.open({file:e.file,start:{line:e.line,offset:e.offset}});atom.notifications.addInfo("AtomTS: Previous position not found.")}async goForward(t,e){const n=me(t);if(n){this.prevCursorPositions.push(n);const t=100;this.prevCursorPositions.length>t&&this.prevCursorPositions.splice(0,this.prevCursorPositions.length-t)}return this.open(e)}async showHistory(){const t=await ni({items:this.getHistory().slice().reverse().map(((t,e)=>({...t,idx:e}))),itemTemplate:(t,e)=>pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(Gr,{label:t.file,query:e.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},"Line: ",t.line,", column: ",t.offset)),itemFilterKey:"file"});t&&await this.goHistory(t.idx+1)}getHistory(){return this.prevCursorPositions}dispose(){}serialize(){return this.prevCursorPositions}async open(t){const e=await atom.workspace.open(t.file,{initialLine:t.start.line-1,initialColumn:t.start.offset-1,searchAllPanes:!0});return atom.workspace.isTextEditor(e)&&e.scrollToCursorPosition({center:!0}),e}}class Pc{constructor(t,e){let n,r,i;this.getClient=t,this.editor=e,this.disposables=new d,this.occurrenceMarkers=[],this.disposed=!1;let o=!1;this.disposables.add(atom.config.observe("atom-typescript.occurrenceHighlightDebounceTimeout",(t=>{n=Zt.debounce((()=>{Qt(this.update())}),t),i=3.5*t})),e.onDidChangeCursorPosition((()=>{void 0===r?n():o=!0})),e.onDidChangePath((()=>n())),e.onDidChangeGrammar((()=>n())),e.onDidChange((()=>{void 0!==r&&clearTimeout(r),r=window.setTimeout((()=>{o&&(n(),o=!1),r=void 0}),i)})))}dispose(){this.disposed||(this.disposed=!0,this.disposables.dispose(),this.clearMarkers())}clearMarkers(){for(const t of this.occurrenceMarkers)t.destroy();this.occurrenceMarkers=[]}async update(){if(this.disposed)return;if(!pe(this.editor))return void this.clearMarkers();const t=this.editor.getPath();if(void 0===t)return;const e=await this.getClient(t);if(this.disposed)return;const n=this.editor.getLastCursor().getBufferPosition();try{const r=await e.execute("documentHighlights",{file:t,line:n.row+1,offset:n.column+1,filesToSearch:[t]});if(this.disposed)return;const i=Array.from(this.getNewOccurrenceMarkers(r.body));for(const t of this.occurrenceMarkers)i.includes(t)||t.destroy();this.occurrenceMarkers=i}catch(t){window.atom_typescript_debug&&console.error(t)}}*getNewOccurrenceMarkers(t){for(const e of t)if(e.file===this.editor.getPath())for(const t of e.highlightSpans){const e=te(t),n=this.occurrenceMarkers.find((t=>t.getBufferRange().isEqual(e)));if(n)yield n;else{const t=this.editor.markBufferRange(e);this.editor.decorateMarker(t,{type:"highlight",class:"atom-typescript-occurrence"}),yield t}}}}class Oc{constructor(t){this.disposables=new d,this.disposables.add(atom.workspace.observeTextEditors((e=>{const n=new Pc(t,e);this.disposables.add(n,e.onDidDestroy((()=>{this.disposables.remove(n),n.dispose()})))})))}dispose(){this.disposables.dispose()}}function Ic(t,e,n,r){let i,o=n.right,s=!1,a="";t.style.left="",t.style.top="",t.style.right="",t.style.bottom="";const c=e.clientWidth,u=getComputedStyle(t),l=parseInt(u.width,10),f=parseInt(u.height,10);if(o+l>=c&&(o=c-l-10),o<0&&(a="pre-wrap",o=10,s=10),"bottom"===r){const t=e.clientHeight;i=n.bottom,i+f>=t&&(i=n.top-f)}else"top"===r&&(i=n.top-f,i<0&&(i=n.bottom));t.style.left=o+"px",t.style.top=i+"px",!1!==s&&(t.style.right=s+"px"),a&&(t.style.whiteSpace=a)}class jc{constructor(t){this.parent=t,this.props={left:0,right:0,top:0,bottom:0},pt.initialize(this)}async destroy(){return pt.destroy(this)}async update(t){var e,n,r;void 0!==(null===(e=t.sigHelp)||void 0===e?void 0:e.selectedItemIndex)&&(null===(n=t.sigHelp)||void 0===n?void 0:n.selectedItemIndex)!==(null===(r=this.props.sigHelp)||void 0===r?void 0:r.selectedItemIndex)&&(this.props.visibleItem=void 0),this.props={...this.props,...t},void 0===this.props.sigHelp?this.props.visibleItem=void 0:void 0!==this.props.visibleItem&&(this.props.visibleItem=this.props.visibleItem%this.props.sigHelp.items.length,this.props.visibleItem<0&&(this.props.visibleItem+=this.props.sigHelp.items.length)),await pt.update(this)}writeAfterUpdate(){Ic(this.element,this.parent,this.props,atom.config.get("atom-typescript").sigHelpPosition)}render(){return pt.dom("div",{className:"atom-typescript-tooltip tooltip",key:this.sigHelpHash()},pt.dom("div",{className:"tooltip-inner"},this.tooltipContents()))}sigHelpHash(){if(!this.props.sigHelp)return;const{start:t,end:e}=this.props.sigHelp.applicableSpan;return`${t.line}:${t.offset}-${e.line}:${e.offset}`}tooltipContents(){if(!this.props.sigHelp)return"…";const{sigHelp:t}=this.props,e=void 0!==this.props.visibleItem?this.props.visibleItem:t.selectedItemIndex,n=t.items.length,r=["atom-typescript-tooltip-signature-help"];function i(n){const i=[];return n===t.selectedItemIndex&&i.push("atom-typescript-tooltip-signature-help-selected"),n===e&&i.push("atom-typescript-tooltip-signature-help-visible"),[...r,...i].join(" ")}return n>1&&r.push("atom-typescript-tooltip-signature-help-changable"),t.items.map(((e,n)=>pt.dom("div",{className:i(n)},pt.dom("div",null,se(e.prefixDisplayParts),this.renderSigHelpParams(e.parameters,t.argumentIndex),se(e.suffixDisplayParts),pt.dom("div",{className:"atom-typescript-tooltip-signature-help-documentation"},se(e.documentation))))))}renderSigHelpParams(t,e){return t.map(((t,n)=>pt.dom("span",{className:"atom-typescript-tooltip-signature-help-parameter"},n>0?", ":null,pt.dom("span",{className:n===e?"atom-typescript-tooltip-signature-help-selected":void 0},se(t.displayParts)))))}}class Nc{constructor(t,e,n){this.deps=t,this.editor=e,this.cancelled=!1,this.disposables=new h.CompositeDisposable;const r=atom.views.getView(this.editor);this.view=new jc(r),r.appendChild(this.view.element);const i=Zt.debounce(this.updateTooltip.bind(this),100,{leading:!0});this.disposables.add(this.editor.onDidChangeCursorPosition((t=>{n=t.newBufferPosition,Qt(i(n))})),r.onDidChangeScrollTop((()=>{setImmediate((()=>this.updateTooltipPosition(n)))})),r.onDidChangeScrollLeft((()=>{setImmediate((()=>this.updateTooltipPosition(n)))}))),Qt(this.updateTooltip(n))}isDisposed(){return this.cancelled}dispose(){this.cancelled||(this.cancelled=!0,this.disposables.dispose(),Qt(this.view.destroy()))}async rotateSigHelp(t){const{visibleItem:e,sigHelp:n}=this.view.props,r=void 0!==e?e:void 0!==(null==n?void 0:n.selectedItemIndex)?null==n?void 0:n.selectedItemIndex:0;await this.view.update({visibleItem:r+t})}async updateTooltip(t){if(this.cancelled)return;let e;try{e=this.computeTooltipPosition(t)}catch(t){return void console.warn(t)}const n=await this.getMessage(t);this.cancelled||(n?await this.view.update({...e,sigHelp:n}):this.dispose())}updateTooltipPosition(t){if(this.cancelled)return;const e=this.computeTooltipPosition(t);Qt(this.view.update({...e}))}computeTooltipPosition(t){const e=atom.views.getView(this.editor),n=e.pixelPositionForBufferPosition(t),r=e.querySelector(".lines").getBoundingClientRect(),i=this.editor.getLineHeightInPixels(),o=e.getBoundingClientRect(),s=n.top+r.top-o.top+i/2,a=n.left+r.left-o.left,c=.7*i;return{left:a,right:a,top:s-c,bottom:s+c}}async getMessage(t){if(!pe(this.editor))return;const e=this.editor.getPath();if(void 0===e)return;const n=await this.deps.getClient(e);try{return(await n.execute("signatureHelp",{file:e,line:t.row+1,offset:t.column+1})).body}catch(t){return}}}class Lc{constructor(t){this.deps=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.stoppedChanging=t=>e=>{if(!atom.config.get("atom-typescript.sigHelpDisplayOnChange"))return;if(void 0===t.getPath())return;const n=t.getLastCursor().getBufferPosition(),[r]=e.changes.filter((t=>t.newRange.containsPoint(n)));r&&null!==r.newText.match(/[<(,]/)&&Qt(this.showTooltip(t,n))},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=new h.CompositeDisposable;e.add(t.onDidDestroy((()=>{e.dispose(),this.subscriptions.remove(e);const n=this.editorMap.get(t);n&&n.dispose()})),t.onDidStopChanging(this.stoppedChanging(t))),this.subscriptions.add(e)})))}dispose(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=this.editorMap.get(t);e&&e.dispose()}}async showTooltipAt(t){const e=t.getLastCursor().getBufferPosition();return this.showTooltip(t,e)}rotateSigHelp(t,e){const n=this.editorMap.get(t);return!(!n||n.isDisposed())&&(Qt(n.rotateSigHelp(e)),!0)}hideTooltipAt(t){const e=this.editorMap.get(t);return!(!e||e.isDisposed())&&(e.dispose(),!0)}async showTooltip(t,e){const n=this.editorMap.get(t);n&&!n.isDisposed()||this.editorMap.set(t,new Nc(this.deps,t,e))}}function Fc(t,e,n,r){const i=e=>{const i=e.target.closest(n);i&&t.contains(i)&&r(e)};return t.addEventListener(e,i),new y((()=>{t.removeEventListener(e,i)}))}class Dc{constructor(){this.tooltip=null,this.props={left:0,right:0,top:0,bottom:0},pt.initialize(this)}async destroy(){return pt.destroy(this)}async update(t){this.props={...this.props,...t},this.tooltip=await Er(this.props.info,pt,(t=>pt.dom("div",{className:"atom-typescript-tooltip-tooltip-code"},t))),await pt.update(this)}writeAfterUpdate(){Ic(this.element,document.body,this.props,atom.config.get("atom-typescript").tooltipPosition)}render(){return pt.dom("div",{className:"atom-typescript-tooltip tooltip"},pt.dom("div",{className:"tooltip-inner"},this.tooltip))}}class Mc{constructor(t,e,n,r){this.getClient=t,this.cancelled=!1,Qt(this.initialize(e,n,r))}dispose(){this.cancelled=!0,this.view&&(Qt(this.view.destroy()),this.view=void 0)}async initialize(t,e,n){const r=atom.views.getView(t);let i,o;try{i=r.pixelPositionForBufferPosition(n),o=r.pixelPositionForBufferPosition(n.traverse([0,1]))}catch(e){return void console.warn(e)}if(i.left>=o.left)return;const s=.7*t.getLineHeightInPixels(),a={left:e.clientX,right:e.clientX,top:e.clientY-s,bottom:e.clientY+s},c=await this.getMessage(t,n);this.cancelled||void 0!==c&&await this.showTooltip(a,c)}async getMessage(t,e){let n;const r=await this.getClient(t);if(!r)return;const i=t.getPath();try{if(void 0===i)return;n=await r.execute("quickinfo",{file:i,line:e.row+1,offset:e.column+1})}catch(t){return}return n.body}async showTooltip(t,e){this.view=new Dc,document.body.appendChild(this.view.element),await this.view.update({...t,info:e})}}class Rc{constructor(t){this.getClientInternal=t,this.subscriptions=new h.CompositeDisposable,this.editorMap=new WeakMap,this.getClient=async t=>{const e=t.getPath();if(void 0!==e&&pe(t)&&k.existsSync(e))return this.getClientInternal(e)},this.clearExprTypeTimeout=()=>{void 0!==this.exprTypeTimeout&&(clearTimeout(this.exprTypeTimeout),this.exprTypeTimeout=void 0),this.hideExpressionType()},this.trackMouseMovement=t=>{let e;return n=>{const r=function(t,e){const n=atom.views.getView(t).getComponent().screenPositionForMouseEvent(e);if(!isNaN(n.row)&&!isNaN(n.column))return t.bufferPositionForScreenPosition(n)}(t,n);r&&(e&&e.isEqual(r)&&this.pendingTooltip||(e=r,this.clearExprTypeTimeout(),this.exprTypeTimeout=window.setTimeout((()=>this.showExpressionType(t,n,r)),atom.config.get("atom-typescript").tooltipDelay)))}},this.subscriptions.add(atom.workspace.observeTextEditors((t=>{const e=atom.views.getView(t),n=e.querySelector(".lines");this.editorMap.set(t,{rawView:e,lines:n});const r=new h.CompositeDisposable;r.add(Fc(e,"mousemove",".scroll-view",this.trackMouseMovement(t)),Fc(e,"mouseout",".scroll-view",this.clearExprTypeTimeout),Fc(e,"keydown",".scroll-view",this.clearExprTypeTimeout),e.onDidChangeScrollTop(this.clearExprTypeTimeout),e.onDidChangeScrollLeft(this.clearExprTypeTimeout),t.onDidDestroy((()=>{r.dispose(),this.subscriptions.remove(r),this.clearExprTypeTimeout()}))),this.subscriptions.add(r)})))}dispose(){this.subscriptions.dispose(),this.clearExprTypeTimeout()}showExpressionAt(t){const e=t.getLastCursor().getBufferPosition(),n=atom.views.getView(t);let r;try{r=n.pixelPositionForBufferPosition(e)}catch(t){return void console.warn(t)}this.showExpressionType(t,this.mousePositionForPixelPosition(t,r),e)}mousePositionForPixelPosition(t,e){const n=atom.views.getView(t).querySelector(".lines").getBoundingClientRect();return{clientY:e.top+n.top+t.getLineHeightInPixels()/2,clientX:e.left+n.left}}showExpressionType(t,e,n){this.pendingTooltip&&this.pendingTooltip.dispose(),this.pendingTooltip=new Mc(this.getClient,t,e,n)}hideExpressionType(){this.pendingTooltip&&(this.pendingTooltip.dispose(),this.pendingTooltip=void 0)}}class Bc{constructor(t){this.getClient=t,this.subscriptions=new d;const e=atom.workspace.paneForURI("atom-typescript://semantic-view");e&&(this.view=e.itemForURI("atom-typescript://semantic-view")),this.view&&Qt(this.view.setGetClient(this.getClient)),this.subscriptions.add(new y((()=>{this.view&&(atom.workspace.hide(this.view),Qt(this.view.destroy()))})),atom.config.observe("atom-typescript.showSemanticView",(t=>{t?Qt(this.show()):this.hide()})))}dispose(){this.subscriptions.dispose()}async toggle(){this.view?await atom.workspace.toggle(this.view):await this.show()}async show(){this.view||(this.view=en.create({navTree:null}),await this.view.setGetClient(this.getClient)),await atom.workspace.open(this.view,{searchAllPanes:!0})}hide(){return!!this.view&&atom.workspace.hide(this.view)}}class zc{constructor(t){this.position=t.position,this.name=t.name,this.type=t.type,this.parent=t.parent,this.file=t.file}static fromNavTree(t,e){const n=t.spans[0].start;return new zc({name:t.text,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null})}static fromNavto(t,e){const n=t.start;return new zc({name:t.name,type:t.kind,position:{row:n.line-1,column:n.offset-1},parent:null!=e?e:null,file:t.file})}}async function qc(t,e){const n=await async function(t,e){try{const n=await e.getClient(t);return(await n.execute("navtree",{file:t})).body}catch(e){console.error(t,e)}}(t,e);return n&&n.childItems?Array.from($c(n.childItems)):[]}async function Hc(t,e,n){const r=await async function(t,e,n){try{const r=await n.getClient(t);return(await r.execute("navto",{file:t,currentFileOnly:!1,searchValue:e,maxResultCount:1e3})).body}catch(e){console.error(t,e)}}(t,e,n);return r?Array.from(function*(t,e){for(const n of t)yield zc.fromNavto(n,e)}(r)):[]}function*$c(t,e){t.sort(((t,e)=>t.spans[0].start.line-e.spans[0].start.line));for(const n of t){const t=zc.fromNavTree(n,e);yield t,n.childItems&&(yield*$c(n.childItems,t))}}async function Uc(t,e,n){if(void 0!==t.file)return n(e,{file:t.file,start:{line:t.position.row+1,offset:t.position.column+1}})}async function Vc(t,e){const n=t.getPath();if(void 0!==n){let r;atom.config.get("symbols-view.quickJumpToFileSymbol")&&(r=function(t){const e=atom.views.getView(t).getScrollTop();return{bufferRanges:t.getSelectedBufferRanges(),scrollTop:e}}(t));const i=await ni({items:qc(n,e),itemTemplate:({name:t,position:e},n)=>pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(Gr,{label:t,query:n.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},"Line "+(e.row+1))),didChangeSelection(e){atom.config.get("symbols-view.quickJumpToFileSymbol")&&e&&t.setCursorBufferPosition(e.position)},itemFilterKey:"name"});i?await Uc(i,t,e.histGoForward):r&&function(t,{bufferRanges:e,scrollTop:n}){const r=atom.views.getView(t);t.setSelectedBufferRanges(e),r.setScrollTop(n)}(t,r)}}class Wc{constructor(t){this.deps=t}toggleFileView(t){Qt(Vc(t,this.deps))}toggleProjectView(t){Qt(async function(t,e){const n=t.getPath();if(void 0!==n){const r=await ni({items:t=>Hc(n,t,e),itemTemplate({name:t,position:e,file:n},r){const i=atom.project.relativize(n);return pt.dom("li",{className:"two-lines"},pt.dom("div",{className:"primary-line"},pt.dom(Gr,{label:t,query:r.getFilterQuery()})),pt.dom("div",{className:"secondary-line"},`File ${i} line ${e.row+1}`))},itemFilterKey:"name"});r&&await Uc(r,t,e.histGoForward)}}(t,this.deps))}dispose(){}}class Gc{constructor(){this.errors=new Map,this.fileGrammars=new Map,this.pushErrors=Zt.debounce(this.pushErrors.bind(this),100)}*getErrorsInRange(t,e){for(const n of this.errors.values()){const r=n.get(b.normalize(t));r&&(yield*r.filter((t=>te(t).intersectsWith(e))))}}*getErrorsAt(t,e){for(const n of this.errors.values()){const r=n.get(b.normalize(t));r&&(yield*r.filter((t=>te(t).containsPoint(e))))}}setErrors(t,e,n){let r=this.errors.get(t);r||(r=new Map,this.errors.set(t,r)),r.set(b.normalize(e),n),this.pushErrors()}clearFileErrors(t){for(const e of this.errors.values())e.delete(t);this.pushErrors()}clear(){this.linter&&this.linter.clearMessages()}setLinter(t){this.linter=t,this.pushErrors()}dispose(){this.clear(),this.linter&&this.linter.dispose(),this.linter=void 0}pushErrors(){this.linter&&this.linter.setAllMessages(this.getLinterErrors())}getLinterErrors(){if(atom.config.get("atom-typescript.suppressAllDiagnostics"))return[];const t=[];for(const e of this.errors.values())for(const[n,r]of e){const e=atom.workspace.getTextEditors().find((t=>t.getPath()===n)),i=e?e.getGrammar().scopeName:this.selectGrammar(n);if(!Kc("suppressAllDiagnostics",i))for(const e of r){if(Kc("ignoredDiagnosticCodes",i).includes(""+e.code))continue;if(Kc("ignoreUnusedSuggestionDiagnostics",i)&&e.reportsUnnecessary)continue;if("suggestion"===e.category&&Kc("ignoredSuggestionDiagnostics",i).includes(""+e.code))continue;if(Kc("ignoreNonSuggestionSuggestionDiagnostics",i)&&"suggestion"===e.category&&!ae(e.code,Jt.Suggestion))continue;let{start:r,end:o}=e;r&&o||(r=o={line:1,offset:1}),t.push({severity:this.getSeverity(Kc("unusedAsInfo",i),e),excerpt:e.text,location:{file:n,position:ee(r,o)}})}}return t}selectGrammar(t){const e=this.fileGrammars.get(t);if(void 0!==e)return e;const n=atom.grammars.selectGrammar(t,"").scopeName;return this.fileGrammars.set(t,n),n}getSeverity(t,e){if(t&&6133===e.code)return"info";switch(e.category){case"error":return"error";case"warning":return"warning";default:return"info"}}}function Kc(t,e){return atom.config.get("atom-typescript."+t,{scope:[e]})}class Qc{constructor(t,e){let n;this.buffer=t,this.deps=e,this.events=new h.Emitter,this.compileOnSave=!1,this.subscriptions=new h.CompositeDisposable,this.on=this.events.on.bind(this.events),this.dispose=()=>{this.subscriptions.dispose(),Qt(this.close())},this.init=async()=>{this.state&&(await this.state.client.execute("open",{file:this.state.filePath,fileContent:this.buffer.getText()}),Qt(this.getErr({allFiles:!1,delay:0})))},this.close=async()=>{if(await this.openPromise,this.state){const t=this.state.client,e=this.state.filePath;this.deps.clearFileErrors(e),this.state.subscriptions.dispose(),this.state=void 0,await t.execute("close",{file:e})}},this.onDidChangePath=t=>{Qt(this.close().then((()=>{this.openPromise=this.open(t)})))},this.onDidSave=async()=>{await Promise.all([this.getErr({allFiles:!0,delay:100}),this.doCompileOnSave()])},this.onDidChangeText=async({changes:t})=>{if(0===t.length||!this.state)return;const{client:e,filePath:n}=this.state;await Promise.all(t.reduceRight(((t,{oldRange:r,newText:i})=>(t.push(e.execute("change",{file:n,line:r.start.row+1,offset:r.start.column+1,endLine:r.end.row+1,endOffset:r.end.column+1,insertString:i})),t)),[]))},this.subscriptions.add(atom.config.observe("atom-typescript.getErrDebounceTimeout",(t=>{n=Zt.debounce((()=>{Qt(this.getErr({allFiles:!1,delay:0}))}),t)})),t.onDidChangePath(this.onDidChangePath),t.onDidDestroy(this.dispose),t.onDidSave((()=>{Qt(this.onDidSave())})),t.onDidStopChanging((({changes:t})=>{t.length>0&&this.deps.reportBuildStatus(void 0)})),t.onDidChangeText((t=>{Qt(this.onDidChangeText(t)),n()}))),this.openPromise=this.open(this.buffer.getPath())}static create(t,e){const n=Qc.bufferMap.get(t);if(n)return n;{const n=new Qc(t,e);return Qc.bufferMap.set(t,n),n}}getPath(){return this.state&&this.state.filePath}getInfo(){if(this.state)return{clientVersion:this.state.client.version,tsConfigPath:this.state.configFile&&this.state.configFile.getPath()}}async getErr(t){if(!this.state)return;const e=t.allFiles?Array.from(function*(){for(const t of atom.workspace.getTextEditors())pe(t)&&(yield t.getPath())}()):[this.state.filePath];await this.state.client.execute("geterr",{files:e,delay:t.delay})}async compile(){if(!this.state)return;const{client:t,filePath:e}=this.state,n=await t.execute("compileOnSaveAffectedFileList",{file:e}),r=Zt.flatten(n.body.map((t=>t.fileNames)));if(0===r.length)return;const i=r.map((e=>t.execute("compileOnSaveEmitFile",{file:e})));if(!(await Promise.all(i)).every((t=>!!t.body)))throw new Error("Some files failed to emit")}async doCompileOnSave(){if(this.compileOnSave){this.deps.reportBuildStatus(void 0);try{await this.compile(),this.deps.reportBuildStatus({success:!0})}catch(t){const e=t;console.error("Save failed with error",e),this.deps.reportBuildStatus({success:!1,message:e.message})}}}async open(t){if(void 0===t||!le(t))return this.close();{const e=await this.deps.getClient(t);this.state={client:e,filePath:t,configFile:void 0,subscriptions:new h.CompositeDisposable},this.state.subscriptions.add(e.on("restarted",(()=>Qt(this.init())))),await this.init();const n=await e.execute("projectInfo",{needFileNameList:!1,file:t});void 0!==n.body.configFileName&&(this.state.configFile=new h.File(n.body.configFileName),await this.readConfigFile(),this.state.subscriptions.add(this.state.configFile.onDidChange((()=>Qt(this.readConfigFile()))))),this.events.emit("opened")}}async readConfigFile(){if(!this.state||!this.state.configFile)return;const t=ne(this.state.configFile.getPath());this.compileOnSave=t.compileOnSave;const e=atom.config.get("atom-typescript");await this.state.client.execute("configure",{file:this.state.filePath,formatOptions:t.formatCodeOptions,preferences:{includeCompletionsWithInsertText:!0,includeCompletionsForModuleExports:e.includeCompletionsForModuleExports,quotePreference:e.quotePreference,importModuleSpecifierEnding:e.importModuleSpecifierEnding,importModuleSpecifierPreference:"auto"===e.importModuleSpecifierPreference?void 0:e.importModuleSpecifierPreference,...t.preferences}})}}Qc.bufferMap=new WeakMap;class Zc{constructor(t,e){this.editor=t,this.opts=e,this.subscriptions=new d,this.isTypescript=!1,this.destroy=()=>{atom.views.getView(this.editor).classList.remove("typescript-editor"),this.subscriptions.dispose()},this.didActivate=()=>{this.isTypescript&&this.reportInfo()},this.onOpened=()=>{atom.workspace.getActiveTextEditor()===this.editor&&this.reportInfo()},this.checkIfTypescript=()=>{this.isTypescript=pe(this.editor),this.isTypescript?atom.views.getView(this.editor).classList.add("typescript-editor"):atom.views.getView(this.editor).classList.remove("typescript-editor")},this.buffer=Qc.create(t.getBuffer(),e),this.subscriptions.add(this.buffer.on("opened",this.onOpened)),this.checkIfTypescript(),this.subscriptions.add(t.onDidChangePath(this.checkIfTypescript),t.onDidChangeGrammar(this.checkIfTypescript),t.onDidDestroy(this.destroy),t.onDidSave((()=>{atom.config.get("atom-typescript.checkAllFilesOnSave")&&atom.commands.dispatch(atom.views.getView(t),"typescript:check-all-files")})))}static createFactory(t){return e=>{let n=Zc.editorMap.get(e);return n||(n=new Zc(e,t),Zc.editorMap.set(e,n)),n}}static lookupPane(t){return Zc.editorMap.get(t)}reportInfo(){const t=this.buffer.getInfo();t&&this.opts.reportClientInfo(t)}}Zc.editorMap=new WeakMap;class Jc{constructor(t){this.usingBuiltinTooltipManager=!0,this.usingBuiltinSigHelpManager=!0,this.pending=new Set,this.clearErrors=()=>{this.errorPusher.clear()},this.clearFileErrors=t=>{this.errorPusher.clearFileErrors(t)},this.getClient=async t=>this.clientResolver.get(t),this.killAllServers=()=>{Qt(this.clientResolver.restartAllServers())},this.withBuffer=async(t,e)=>{const n=b.normalize(t),r=atom.workspace.getTextEditors().find((t=>t.getPath()===n));if(r)return e(r.getBuffer());const i=await h.TextBuffer.load(n);try{return await e(i)}finally{i.isModified()&&await i.save(),i.destroy()}},this.reportBusyWhile=async(t,e)=>{if(this.busySignalService)return this.busySignalService.reportBusyWhile(t,e);{const n={title:t};try{return this.pending.add(n),this.drawPending(Array.from(this.pending)),await e()}finally{this.pending.delete(n),this.drawPending(Array.from(this.pending))}}},this.reportProgress=t=>{Qt(this.statusPanel.update({progress:t}))},this.reportBuildStatus=t=>{Qt(this.statusPanel.update({buildStatus:t}))},this.reportClientInfo=t=>{Qt(this.statusPanel.update(t))},this.applyEdits=async t=>{Promise.all(t.map((t=>this.withBuffer(t.fileName,(async e=>{e.transact((()=>{const n=t.textChanges.map((t=>({range:te(t),newText:t.newText}))).reverse().sort(((t,e)=>e.range.compare(t.range)));for(const t of n)e.setTextInRange(t.range,t.newText)}))})))))},this.showTooltipAt=async t=>{this.usingBuiltinTooltipManager?this.tooltipManager.showExpressionAt(t):await atom.commands.dispatch(atom.views.getView(t),"datatip:toggle")},this.showSigHelpAt=async t=>{this.usingBuiltinSigHelpManager?await this.sigHelpManager.showTooltipAt(t):await atom.commands.dispatch(atom.views.getView(t),"signature-help:show")},this.hideSigHelpAt=t=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.hideTooltipAt(t),this.rotateSigHelp=(t,e)=>!!this.usingBuiltinSigHelpManager&&this.sigHelpManager.rotateSigHelp(t,e),this.histGoForward=(t,e)=>this.editorPosHist.goForward(t,e),this.drawPending=Zt.throttle((t=>Qt(this.statusPanel.update({pending:t}))),100,{leading:!1}),this.subscriptions=new d,this.clientResolver=new xr(this.reportBusyWhile),this.subscriptions.add(this.clientResolver),this.statusPanel=new Tc,this.subscriptions.add(this.statusPanel),this.errorPusher=new Gc,this.subscriptions.add(this.errorPusher),this.codefixProvider=new Si(this.clientResolver,this.errorPusher,this.applyEdits),this.subscriptions.add(this.codefixProvider),this.semanticViewController=new Bc(this.getClient),this.subscriptions.add(this.semanticViewController),this.editorPosHist=new Ac(t&&t.editorPosHistState),this.subscriptions.add(this.editorPosHist),this.symbolsViewController=new Wc({histGoForward:this.histGoForward,getClient:this.getClient}),this.subscriptions.add(this.symbolsViewController),this.tooltipManager=new Rc(this.getClient),this.subscriptions.add(this.tooltipManager),this.sigHelpManager=new Lc({getClient:this.getClient}),this.subscriptions.add(this.sigHelpManager),this.occurrenceManager=new Oc(this.getClient),this.subscriptions.add(this.occurrenceManager),this.typescriptPaneFactory=Zc.createFactory({clearFileErrors:this.clearFileErrors,getClient:this.getClient,reportBuildStatus:this.reportBuildStatus,reportClientInfo:this.reportClientInfo}),this.subscribeEditors(),this.subscriptions.add(Sc({getClient:this.getClient,applyEdits:this.applyEdits,clearErrors:this.clearErrors,killAllServers:this.killAllServers,reportProgress:this.reportProgress,reportBuildStatus:this.reportBuildStatus,toggleSemanticViewController:()=>{Qt(this.semanticViewController.toggle())},toggleFileSymbolsView:t=>{this.symbolsViewController.toggleFileView(t)},toggleProjectSymbolsView:t=>{this.symbolsViewController.toggleProjectView(t)},histGoForward:this.histGoForward,histGoBack:()=>this.editorPosHist.goBack(),histShowHistory:()=>this.editorPosHist.showHistory(),showTooltipAt:this.showTooltipAt,showSigHelpAt:this.showSigHelpAt,hideSigHelpAt:this.hideSigHelpAt,rotateSigHelp:this.rotateSigHelp}))}destroy(){this.subscriptions.dispose();for(const t of atom.workspace.getTextEditors()){const e=Zc.lookupPane(t);e&&e.destroy()}}serialize(){return{version:"0.1",editorPosHistState:this.editorPosHist.serialize()}}consumeLinter(t){const e=t({name:"TypeScript"});this.errorPusher.setLinter(e),this.subscriptions.add(this.clientResolver.on("diagnostics",(({type:t,filePath:e,diagnostics:n})=>{this.errorPusher.setErrors(t,e,n)})))}consumeStatusBar(t){let e=100;for(const n of t.getRightTiles())"GRAMMAR-SELECTOR-STATUS"===atom.views.getView(n.getItem()).tagName&&(e=n.getPriority()-1);const n=t.addRightTile({item:this.statusPanel,priority:e}),r=new h.Disposable((()=>{n.destroy()}));return this.subscriptions.add(r),r}consumeDatatipService(t){if(atom.config.get("atom-typescript").preferBuiltinTooltips)return;const e=t.addProvider(new Ar(this.getClient));return this.subscriptions.add(e),this.tooltipManager.dispose(),this.usingBuiltinTooltipManager=!1,e}consumeSigHelpService(t){if(atom.config.get("atom-typescript").preferBuiltinSigHelp)return;const e=new li(this.getClient),n=t(e);return this.subscriptions.add(n,e),this.sigHelpManager.dispose(),this.usingBuiltinSigHelpManager=!1,n}consumeBusySignal(t){if(atom.config.get("atom-typescript").preferBuiltinBusySignal)return;this.busySignalService=t;const e={dispose:()=>{this.busySignalService&&this.busySignalService.dispose(),this.busySignalService=void 0}};return this.subscriptions.add(e),e}provideAutocomplete(){return[new pi(this.getClient,this.applyEdits)]}provideIntentions(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({bufferPosition:e,textEditor:n})=>(await t.runCodeFix(n,e)).map((e=>({priority:100,title:"description"in e?e.description:e.actionDescription,selected:()=>{Qt(t.applyFix(e))}})))};var t}provideIntentionsHighlight(){return t=this.codefixProvider,{grammarScopes:["*"],getIntentions:async({visibleRange:e,textEditor:n})=>(await t.getFixableRanges(n,e)).map((t=>({range:t,created:t=>{}})))};var t}provideCodeActions(){return t=this.codefixProvider,{grammarScopes:fe(),priority:0,getCodeActions:async(e,n)=>(await t.runCodeFix(e,n.start)).map((e=>({getTitle:async()=>"description"in e?e.description:e.actionDescription,dispose:()=>{},apply:async()=>{await t.applyFix(e)}})))};var t}provideHyperclick(){return t=this.getClient,e=this.histGoForward,{priority:0,providerName:"typescript-hyperclick-provider",wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getSuggestionForWord(n,r,i){if(!pe(n))return;const o=n.getPath();return void 0!==o?{range:i,callback:async()=>{var r;const s={file:o,line:i.start.row+1,offset:i.start.column+1},a=await t(s.file),c=await a.execute("definition",s),u=c.body?c.body[0]:void 0;if(1===(null===(r=c.body)||void 0===r?void 0:r.length)&&(null==u?void 0:u.start.line)===s.line&&(null==u?void 0:u.start.offset)===s.offset){const t=await a.execute("references",s);await oi(t,n,e)}else await si(c,n,e)}}:void 0}};var t,e}provideReferences(){return t=this.getClient,{isEditorSupported:async t=>pe(t),async findReferences(e,n){const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("references",r);return o.body?{type:"data",baseUri:r.file,referencedSymbolName:o.body.symbolDisplayString,references:o.body.refs.map(Ir)}:void 0}};var t}provideOutlines(){return t=this.getClient,{name:"Atom-TypeScript",grammarScopes:fe(),priority:100,updateOnEdit:!0,async getOutline(e){const n=e.getPath();if(void 0===n)return;const r=await t(n),i=(await r.execute("navtree",{file:n})).body;return i?{outlineTrees:[ai(i)]}:void 0}};var t}provideDefinitions(){var t;if(!atom.config.get("atom-typescript").disableAtomIdeDefinitions)return t=this.getClient,{name:"atom-typescript",priority:0,grammarScopes:fe(),wordRegExp:/([A-Za-z0-9_])+|['"`](\\.|[^'"`\\\\])*['"`]/g,async getDefinition(e,n){if(!pe(e))return;const r=me(e,n);if(!r)return;const i=await t(r.file),o=await i.execute("definition",r);return o.body&&0!==o.body.length?{queryRange:void 0,definitions:o.body.map(Or)}:void 0}}}provideCodeHighlight(){if(!atom.config.get("atom-typescript").preferBuiltinOccurrenceHighlight)return this.occurrenceManager.dispose(),kr(this.getClient)}subscribeEditors(){this.subscriptions.add(atom.workspace.observeTextEditors((t=>{this.typescriptPaneFactory(t)})),atom.workspace.onDidChangeActiveTextEditor((t=>{if(t&&pe(t)){Qt(this.statusPanel.show());const e=Zc.lookupPane(t);e&&e.didActivate()}else Qt(this.statusPanel.hide())})))}}let Yc;var Xc=T(pt);exports.activate=function(t){Xc.setScheduler(atom.views),Yc=new Jc(t),setImmediate((()=>Qt(async function(){["atom-ide-ui","linter","nuclide"].some((t=>atom.packages.isPackageLoaded(t)))||await P.install("atom-typescript",!0)}())))},exports.deactivate=function(){Yc&&Yc.destroy(),Yc=void 0},exports.serialize=function(){return Yc?Yc.serialize():void 0},exports.deserializeSemanticView=function(t){return en.create(t.data)},exports.consumeLinter=function(t){if(Yc)return Yc.consumeLinter(t)},exports.consumeStatusBar=function(t){if(Yc)return Yc.consumeStatusBar(t)},exports.consumeDatatipService=function(t){if(Yc)return Yc.consumeDatatipService(t)},exports.consumeSignatureHelp=function(t){if(Yc)return Yc.consumeSigHelpService(t)},exports.consumeBusySignal=function(t){if(Yc)return Yc.consumeBusySignal(t)},exports.provideAutocomplete=function(){if(Yc)return Yc.provideAutocomplete()},exports.provideIntentions=function(){if(Yc)return Yc.provideIntentions()},exports.provideIntentionsHighlight=function(){if(Yc)return Yc.provideIntentionsHighlight()},exports.provideCodeActions=function(){if(Yc)return Yc.provideCodeActions()},exports.provideHyperclick=function(){if(Yc)return Yc.provideHyperclick()},exports.provideReferences=function(){if(Yc)return Yc.provideReferences()},exports.provideOutlines=function(){if(Yc)return Yc.provideOutlines()},exports.provideDefinitions=function(){if(Yc)return Yc.provideDefinitions()},exports.provideCodeHighlight=function(){if(Yc)return Yc.provideCodeHighlight()}; //# sourceMappingURL=main.js.map diff --git a/dist/main.js.map b/dist/main.js.map index c7096980..b8682d36 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"mappings":"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U,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAC1BC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACvEC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACxDC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IACzCC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IACtFC,IAAU,IAAMC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,IAAU,IAAKC,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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./node_modules/atom-package-deps/lib/index.js","./node_modules/etch/lib/event-listener-props.js","./node_modules/etch/lib/dom.js","./node_modules/etch/lib/svg-tags.js","./node_modules/etch/lib/svg-attribute-translations.js","./node_modules/etch/lib/update-props.js","./node_modules/etch/lib/render.js","./node_modules/etch/lib/update-ref.js","./node_modules/etch/lib/patch.js","./node_modules/etch/lib/default-scheduler.js","./node_modules/etch/lib/scheduler-assignment.js","./node_modules/etch/lib/component-helpers.js","./node_modules/etch/lib/index.js","./lib/utils.ts","./node_modules/lodash/lodash.js","./lib/main/atom/utils/ts.ts","./lib/main/atom/utils/highlighter.ts","./lib/main/atom/utils/atom.ts","./lib/main/atom/views/outline/navTreeUtils.ts","./lib/main/atom/views/outline/navigationNodeComponent.tsx","./lib/main/atom/views/outline/navigationTreeComponent.tsx","./lib/main/atom/views/outline/semanticView.ts","./node_modules/byline/lib/byline.js","./lib/client/callbacks.ts","./lib/client/client.ts","./node_modules/jsonc-parser/lib/esm/impl/parser.js","./node_modules/jsonc-parser/lib/esm/impl/scanner.js","./node_modules/jsonc-parser/lib/esm/main.js","./node_modules/resolve/lib/async.js","./node_modules/resolve/lib/caller.js","./node_modules/path-parse/index.js","./node_modules/resolve/lib/node-modules-paths.js","./node_modules/resolve/lib/normalize-options.js","./node_modules/function-bind/implementation.js","./node_modules/has/src/index.js","./node_modules/is-core-module/index.js","./node_modules/function-bind/index.js","./node_modules/is-core-module/core.json","./node_modules/resolve/lib/core.js","./node_modules/resolve/lib/core.json","./node_modules/resolve/index.js","./node_modules/resolve/lib/is-core.js","./node_modules/resolve/lib/sync.js","./lib/client/resolveBinary.ts","./lib/client/clientResolver.ts","./lib/main/atom-ide/codeHighlightProvider.ts","./lib/main/atom/tooltips/tooltipRenderer.tsx","./lib/main/atom-ide/datatipProvider.tsx","./lib/main/atom-ide/definitionsProvider.ts","./lib/main/atom-ide/findReferencesProvider.ts","./lib/main/atom/components/tsView.tsx","./node_modules/fuzzaldrin/lib/scorer.js","./node_modules/fuzzaldrin/lib/filter.js","./node_modules/fuzzaldrin/lib/matcher.js","./node_modules/fuzzaldrin/lib/fuzzaldrin.js","./lib/main/atom/views/highlightComponent.tsx","./node_modules/atom-select-list/lib/select-list-view.js","./lib/main/atom/views/simpleSelectionView.tsx","./lib/main/atom/commands/registry.ts","./lib/main/atom/commands/findReferences.tsx","./lib/main/atom/commands/goToDeclaration.tsx","./lib/main/atom-ide/outlineProvider.ts","./lib/main/atom-ide/sigHelpProvider.ts","./lib/main/atom/codeActionTemplate.tsx","./lib/main/atom/autoCompleteProvider.ts","./lib/main/atom/commands/refactorCode.tsx","./lib/main/atom/codefix/codefixProvider.ts","./lib/main/atom/commands/initializeConfig.ts","./lib/main/atom/commands/build.ts","./lib/main/atom/commands/checkAllFiles.ts","./lib/main/atom/commands/clearErrors.ts","./lib/main/atom/commands/formatCode.ts","./lib/main/atom/commands/organizeImports.ts","./lib/main/atom/commands/reloadProjects.ts","./node_modules/underscore-plus/node_modules/underscore/underscore.js","./node_modules/underscore-plus/lib/underscore-plus.js","./node_modules/async/lib/async.js","./node_modules/mkdirp/index.js","./node_modules/fs.realpath/old.js","./node_modules/fs.realpath/index.js","./node_modules/concat-map/index.js","./node_modules/balanced-match/index.js","./node_modules/brace-expansion/index.js","./node_modules/minimatch/minimatch.js","./node_modules/inherits/inherits_browser.js","./node_modules/path-is-absolute/index.js","./node_modules/rimraf/node_modules/glob/common.js","./node_modules/rimraf/node_modules/glob/sync.js","./node_modules/wrappy/wrappy.js","./node_modules/once/once.js","./node_modules/inflight/inflight.js","./node_modules/rimraf/node_modules/glob/glob.js","./node_modules/rimraf/rimraf.js","./node_modules/fs-plus/lib/fs-plus.js","./lib/main/atom/components/miniEditor.ts","./lib/main/atom/views/renameView.tsx","./lib/main/atom/commands/index.ts","./lib/main/atom/commands/renameFile.ts","./lib/main/atom/commands/renameRefactor.ts","./lib/main/atom/commands/restartAllServers.ts","./lib/main/atom/commands/returnFromDeclaration.tsx","./lib/main/atom/commands/semanticView.ts","./lib/main/atom/commands/showTooltip.ts","./lib/main/atom/commands/sigHelp.ts","./lib/main/atom/commands/symbolsView.ts","./lib/main/atom/components/statusPanel/tooltip.tsx","./lib/main/atom/components/statusPanel/buildStatus.tsx","./lib/main/atom/components/statusPanel/configPath.tsx","./lib/main/atom/components/statusPanel/index.tsx","./lib/main/atom/editorPositionHistoryManager.tsx","./lib/main/atom/occurrence/controller.ts","./lib/main/atom/occurrence/manager.ts","./lib/main/atom/tooltips/util.ts","./lib/main/atom/sigHelp/tooltipView.tsx","./lib/main/atom/sigHelp/controller.ts","./lib/main/atom/sigHelp/manager.ts","./lib/main/atom/utils/element-listener.ts","./lib/main/atom/tooltips/tooltipView.tsx","./lib/main/atom/tooltips/controller.ts","./lib/main/atom/tooltips/manager.ts","./lib/main/atom/views/outline/semanticViewController.ts","./lib/main/atom/views/symbols/symbolsTag.ts","./lib/main/atom/views/symbols/generator.ts","./lib/main/atom/views/symbols/utils.ts","./lib/main/atom/views/symbols/fileSymbolsView.tsx","./lib/main/atom/views/symbols/symbolsViewController.ts","./lib/main/atom/views/symbols/projectSymbolsView.tsx","./lib/main/errorPusher.ts","./lib/main/typescriptBuffer.ts","./lib/main/typescriptEditorPane.ts","./lib/main/pluginManager.ts","./lib/main/atom/codefix/intentionsProvider.ts","./lib/main/atom-ide/codeActionsProvider.ts","./lib/main/atom-ide/hyperclickProvider.ts","./lib/main/atomts.ts"],"sourcesContent":["function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n\nvar $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar os = require('os');\nvar child_process = require('child_process');\nvar fs = require('fs');\nvar path = require('path');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar os__default = /*#__PURE__*/_interopDefaultLegacy(os);\nvar fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);\nvar path__default = /*#__PURE__*/_interopDefaultLegacy(path);\n\nvar indentString = (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\nconst extractPathRegex = /\\s+at.*(?:\\(|\\s)(.*)\\)?/;\nconst pathRegex = /^(?:(?:(?:node|(?:internal\\/[\\w/]*|.*node_modules\\/(?:babel-polyfill|pirates)\\/.*)?\\w+)\\.js:\\d+:\\d+)|native)/;\nconst homeDir = typeof os__default['default'].homedir === 'undefined' ? '' : os__default['default'].homedir();\n\nvar cleanStack = (stack, options) => {\n\toptions = Object.assign({pretty: false}, options);\n\n\treturn stack.replace(/\\\\/g, '/')\n\t\t.split('\\n')\n\t\t.filter(line => {\n\t\t\tconst pathMatches = line.match(extractPathRegex);\n\t\t\tif (pathMatches === null || !pathMatches[1]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst match = pathMatches[1];\n\n\t\t\t// Electron\n\t\t\tif (\n\t\t\t\tmatch.includes('.app/Contents/Resources/electron.asar') ||\n\t\t\t\tmatch.includes('.app/Contents/Resources/default_app.asar')\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !pathRegex.test(match);\n\t\t})\n\t\t.filter(line => line.trim() !== '')\n\t\t.map(line => {\n\t\t\tif (options.pretty) {\n\t\t\t\treturn line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));\n\t\t\t}\n\n\t\t\treturn line;\n\t\t})\n\t\t.join('\\n');\n};\n\nconst cleanInternalStack = stack => stack.replace(/\\s+at .*aggregate-error\\/index.js:\\d+:\\d+\\)?/g, '');\n\nclass AggregateError extends Error {\n\tconstructor(errors) {\n\t\tif (!Array.isArray(errors)) {\n\t\t\tthrow new TypeError(`Expected input to be an Array, got ${typeof errors}`);\n\t\t}\n\n\t\terrors = [...errors].map(error => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\tif (error !== null && typeof error === 'object') {\n\t\t\t\t// Handle plain error objects with message property and/or possibly other metadata\n\t\t\t\treturn Object.assign(new Error(error.message), error);\n\t\t\t}\n\n\t\t\treturn new Error(error);\n\t\t});\n\n\t\tlet message = errors\n\t\t\t.map(error => {\n\t\t\t\t// The `stack` property is not standardized, so we can't assume it exists\n\t\t\t\treturn typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tmessage = '\\n' + indentString(message, 4);\n\t\tsuper(message);\n\n\t\tthis.name = 'AggregateError';\n\n\t\tObject.defineProperty(this, '_errors', {value: errors});\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const error of this._errors) {\n\t\t\tyield error;\n\t\t}\n\t}\n}\n\nvar aggregateError = AggregateError;\n\nvar pMap = async (\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Infinity,\n\t\tstopOnError = true\n\t} = {}\n) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!((Number.isSafeInteger(concurrency) || concurrency === Infinity) && concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be an integer from 1 and up or \\`Infinity\\`, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst result = [];\n\t\tconst errors = [];\n\t\tconst iterator = iterable[Symbol.iterator]();\n\t\tlet isRejected = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\n\t\tconst next = () => {\n\t\t\tif (isRejected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = iterator.next();\n\t\t\tconst index = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0) {\n\t\t\t\t\tif (!stopOnError && errors.length !== 0) {\n\t\t\t\t\t\treject(new aggregateError(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\t\t\t\t\tresult[index] = await mapper(element, index);\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (stopOnError) {\n\t\t\t\t\t\tisRejected = true;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors.push(error);\n\t\t\t\t\t\tresolvingCount--;\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\n\t\tfor (let i = 0; i < concurrency; i++) {\n\t\t\tnext();\n\n\t\t\tif (isIterableDone) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n};\n\nconst pMap$1 = (iterable, mapper, options) => new Promise((resolve, reject) => {\n\toptions = Object.assign({\n\t\tconcurrency: Infinity\n\t}, options);\n\n\tif (typeof mapper !== 'function') {\n\t\tthrow new TypeError('Mapper function is required');\n\t}\n\n\tconst {concurrency} = options;\n\n\tif (!(typeof concurrency === 'number' && concurrency >= 1)) {\n\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t}\n\n\tconst ret = [];\n\tconst iterator = iterable[Symbol.iterator]();\n\tlet isRejected = false;\n\tlet isIterableDone = false;\n\tlet resolvingCount = 0;\n\tlet currentIndex = 0;\n\n\tconst next = () => {\n\t\tif (isRejected) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextItem = iterator.next();\n\t\tconst i = currentIndex;\n\t\tcurrentIndex++;\n\n\t\tif (nextItem.done) {\n\t\t\tisIterableDone = true;\n\n\t\t\tif (resolvingCount === 0) {\n\t\t\t\tresolve(ret);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tresolvingCount++;\n\n\t\tPromise.resolve(nextItem.value)\n\t\t\t.then(element => mapper(element, i))\n\t\t\t.then(\n\t\t\t\tvalue => {\n\t\t\t\t\tret[i] = value;\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t},\n\t\t\t\terror => {\n\t\t\t\t\tisRejected = true;\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t);\n\t};\n\n\tfor (let i = 0; i < concurrency; i++) {\n\t\tnext();\n\n\t\tif (isIterableDone) {\n\t\t\tbreak;\n\t\t}\n\t}\n});\n\nvar pMap_1 = pMap$1;\n// TODO: Remove this for the next major release\nvar _default = pMap$1;\npMap_1.default = _default;\n\nconst pFilter = async (iterable, filterer, options) => {\n\tconst values = await pMap_1(\n\t\titerable,\n\t\t(element, index) => Promise.all([filterer(element, index), element]),\n\t\toptions\n\t);\n\treturn values.filter(value => Boolean(value[0])).map(value => value[1]);\n};\n\nvar pFilter_1 = pFilter;\n// TODO: Remove this for the next major release\nvar _default$1 = pFilter;\npFilter_1.default = _default$1;\n\nconst IS_ATOM = typeof atom !== 'undefined';\nconst IS_DEV = typeof atom !== 'undefined' && (atom.inDevMode() || atom.inSpecMode());\nconst IGNORED_CONFIG_NAME = 'atom-package-deps.ignored';\n\n/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nvar escapeHtml_1 = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n\nasync function spawnInternal(command, args, options) {\n const spawnedProcess = child_process.spawn(command, args, options);\n const promise = new Promise((resolve, reject) => {\n const output = {\n stdout: spawnedProcess.stdout ? [] : null,\n stderr: spawnedProcess.stderr ? [] : null,\n };\n spawnedProcess.on('error', reject);\n if (spawnedProcess.stdout) {\n spawnedProcess.stdout.on('data', function (chunk) {\n output.stdout.push(chunk);\n if (options.handleStdout) {\n options.handleStdout(chunk);\n }\n });\n }\n if (spawnedProcess.stderr) {\n spawnedProcess.stderr.on('data', function (chunk) {\n output.stderr.push(chunk);\n if (options.handleStderr) {\n options.handleStderr(chunk);\n }\n });\n }\n spawnedProcess.on('close', code => {\n let outputStdout = null;\n if (output.stdout != null) {\n outputStdout =\n options.encoding === null || options.encoding === 'buffer'\n ? Buffer.concat(output.stdout)\n : output.stdout.join('');\n }\n let outputStderr = null;\n if (output.stderr != null) {\n outputStderr =\n options.encoding === null || options.encoding === 'buffer'\n ? Buffer.concat(output.stderr)\n : output.stderr.join('');\n }\n resolve({\n exitCode: code,\n stdout: outputStdout,\n stderr: outputStderr,\n });\n });\n });\n options.handleChildProcess(spawnedProcess);\n return promise;\n}\nfunction spawn(command, args, options) {\n let spawnedProcess;\n const promise = spawnInternal(command, args, {\n ...options,\n handleChildProcess(_spawnedProcess) {\n spawnedProcess = _spawnedProcess;\n },\n });\n promise.kill = function (signal) {\n // TODO: kill all subprocesses on windows with wmic?\n return spawnedProcess.kill(signal);\n };\n return promise;\n}\n\nvar semverCompare = function cmp (a, b) {\n var pa = a.split('.');\n var pb = b.split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n return 0;\n};\n\nasync function getDependencies(packageName) {\n const packageModule = atom.packages.getLoadedPackage(packageName);\n const packageDependencies = packageModule && packageModule.metadata['package-deps'];\n return Array.isArray(packageDependencies) ? packageDependencies : [];\n}\nasync function resolveDependencyPath(packageName) {\n return atom.packages.resolvePackagePath(packageName);\n}\nasync function getInstalledDependencyVersion(dependency) {\n var _packageModule$metada;\n\n const packageModule = atom.packages.getLoadedPackage(dependency.name);\n return packageModule == null ? null : (_packageModule$metada = packageModule.metadata.version) !== null && _packageModule$metada !== void 0 ? _packageModule$metada : null;\n}\n\nasync function getDependencies$1(packageName) {\n let packageStats = null;\n\n try {\n packageStats = await fs__default['default'].promises.stat(packageName);\n } catch (_) {// No Op\n }\n\n if (packageStats == null || !packageStats.isDirectory()) {\n throw new Error(`[Package-Deps] Expected packageName to be a readable directory in Node.js invocation`);\n }\n\n let parsed = null;\n\n try {\n const contents = await fs__default['default'].promises.readFile(path__default['default'].join(packageName, 'package.json'), 'utf8');\n parsed = JSON.parse(contents);\n } catch (_) {// Ignore JSON read errors and such\n }\n\n const packageDependencies = parsed == null || typeof parsed !== 'object' ? [] : parsed['package-deps'];\n return Array.isArray(packageDependencies) ? packageDependencies : [];\n}\nasync function resolveDependencyPath$1(packageName) {\n var _process$env$ATOM_HOM;\n\n const packageDirectory = path__default['default'].join((_process$env$ATOM_HOM = process.env.ATOM_HOME) !== null && _process$env$ATOM_HOM !== void 0 ? _process$env$ATOM_HOM : path__default['default'].join(os__default['default'].homedir(), '.atom'), 'packages', packageName);\n\n try {\n await fs__default['default'].promises.access(packageDirectory, fs__default['default'].constants.R_OK);\n return packageDirectory;\n } catch (_) {\n return null;\n }\n}\nasync function getInstalledDependencyVersion$1(dependency) {\n var _manifest$version, _manifest;\n\n const {\n directory\n } = dependency;\n\n if (directory == null) {\n // Not possible to get version without resolved directory in Node.js version\n return null;\n }\n\n let manifest = null;\n\n try {\n manifest = JSON.parse(await fs__default['default'].promises.readFile(path__default['default'].join(directory, 'package.json'), 'utf8'));\n } catch (_) {\n return null;\n }\n\n return (_manifest$version = (_manifest = manifest) === null || _manifest === void 0 ? void 0 : _manifest.version) !== null && _manifest$version !== void 0 ? _manifest$version : null;\n}\n\n/**\n * Internal helpers\n */\n\nasync function getInstalledDependencyVersion$2(dependency) {\n if (IS_ATOM) {\n const atomPackageVersion = await getInstalledDependencyVersion(dependency);\n\n if (atomPackageVersion) {\n return atomPackageVersion;\n } // If the package isn't activated, it won't be loaded, so fallback to reading manifest file instead\n\n }\n\n return getInstalledDependencyVersion$1(dependency);\n}\n/**\n * Exported helpers\n */\n\n\nconst resolveDependencyPath$2 = IS_ATOM ? resolveDependencyPath : resolveDependencyPath$1;\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(message !== null && message !== void 0 ? message : 'Invariant violation');\n }\n}\nasync function getDependencies$2(name) {\n const dependencies = await (IS_ATOM ? getDependencies(name) : getDependencies$1(name));\n\n if (IS_DEV) {\n invariant(Array.isArray(dependencies), `Dependencies for ${name} are not a valid array`);\n dependencies.forEach((item, index) => {\n if (Array.isArray(item)) {\n item.forEach((subitem, subindex) => {\n const invalidMessage = `Dependency#${index}#${subindex} for ${name} is invalid`;\n invariant(typeof subitem.name === 'string' && subitem.name.length > 0, invalidMessage);\n invariant(subitem.minimumVersion == null || typeof subitem.minimumVersion === 'string' && subitem.minimumVersion.length > 0, invalidMessage);\n });\n invariant(item.length > 0, `Dependency#${index} for ${name} has no group items`);\n } else {\n const invalidMessage = `Dependency#${index} for ${name} is invalid`;\n invariant(typeof item.name === 'string' && item.name.length > 0, invalidMessage);\n invariant(item.minimumVersion == null || typeof item.minimumVersion === 'string' && item.minimumVersion.length > 0, invalidMessage);\n }\n });\n }\n\n return dependencies;\n}\nasync function shouldInstallDependency(dependency) {\n if (dependency.directory == null) {\n // Not installed, so install\n return true;\n }\n\n if (dependency.minimumVersion == null) {\n // Already installed and no version defined, so skip\n return false;\n }\n\n const version = await getInstalledDependencyVersion$2(dependency);\n\n if (version == null) {\n // Unable to get current version, so install\n return true;\n }\n\n return semverCompare(dependency.minimumVersion, version) === 1;\n}\nfunction isPackageIgnored(name) {\n var _atom$config$get;\n\n if (!IS_ATOM) {\n // Never ignored in CLI\n return false;\n }\n\n const ignoredPackages = (_atom$config$get = atom.config.get(IGNORED_CONFIG_NAME)) !== null && _atom$config$get !== void 0 ? _atom$config$get : [];\n\n if (ignoredPackages.includes(name)) {\n return true;\n }\n\n return false;\n}\nfunction markPackageAsIgnored(name) {\n var _atom$config$get2;\n\n if (!IS_ATOM) {\n // No op in CLI\n return;\n }\n\n const ignoredPackages = new Set((_atom$config$get2 = atom.config.get(IGNORED_CONFIG_NAME)) !== null && _atom$config$get2 !== void 0 ? _atom$config$get2 : []);\n ignoredPackages.add(name);\n atom.config.set(IGNORED_CONFIG_NAME, Array.from(ignoredPackages));\n}\nconst INSTALL_VALID_TICKS = new Set(['✓', 'done']);\nconst INSTALL_VALIDATION_REGEXP = /(?:Installing|Moving) (.*?) to .* (.*)/; // Example success output: Uninstalling linter-ui-default ✓\n\nasync function installPackage(dependency) {\n const apmPath = IS_ATOM ? atom.packages.getApmPath() : 'apm';\n const {\n stdout,\n stderr\n } = await spawn(apmPath, ['install', dependency.name, '--production', '--color', 'false']);\n const match = INSTALL_VALIDATION_REGEXP.exec(stdout.trim());\n\n if (match != null && INSTALL_VALID_TICKS.has(match[2])) {\n // Installation complete and verified\n return;\n }\n\n const error = new Error(`Error installing dependency: ${dependency.name}`);\n error.stack = stderr.trim();\n throw error;\n}\n\nlet showResetInstruction = true;\nfunction confirmPackagesToInstall({\n packageName,\n dependencies\n}) {\n return new Promise(resolve => {\n const ungroupedDependencies = dependencies.filter(item => !Array.isArray(item));\n const groupedDependencies = dependencies.filter(item => Array.isArray(item));\n const skipGroups = groupedDependencies.length === 0;\n const detail = skipGroups ? ungroupedDependencies.map(item => item.name).join(', ') : 'Something went wrong. Check your developer console';\n const groupChoices = groupedDependencies.map(item => item[0]); // If Atom \"notifications\" package is disabled output a warning in case no other notifications package is installed.\n\n if (atom.packages.isPackageDisabled('notifications')) {\n console.warn(`Enable notifications to install dependencies for ${packageName}`);\n }\n\n const notification = atom.notifications.addInfo(`${packageName} needs to install dependencies`, {\n dismissable: true,\n icon: 'cloud-download',\n detail,\n description: `Install dependenc${dependencies.length === 1 ? 'y' : 'ies'}?`,\n buttons: [{\n text: 'Yes',\n onDidClick: () => {\n if (skipGroups) {\n resolve([]);\n } else {\n resolve(ungroupedDependencies.concat(groupChoices));\n }\n\n notification.dismiss();\n }\n }, {\n text: 'No Thanks',\n onDidClick: () => {\n notification.dismiss();\n }\n }, {\n text: 'Never',\n onDidClick: () => {\n markPackageAsIgnored(packageName);\n\n if (showResetInstruction) {\n showResetInstruction = false;\n atom.notifications.addInfo('How to reset package-deps memory', {\n dismissable: true,\n description: \"To modify the list of ignored files invoke 'Application: Open Your Config' and change the 'atom-package-deps' section\"\n });\n }\n\n notification.dismiss();\n }\n }]\n });\n notification.onDidDismiss(() => resolve([]));\n\n if (skipGroups) {\n return;\n } // Handle groups\n\n\n try {\n var _notificationView$ele;\n\n const notificationView = atom.views.getView(notification);\n const notificationElement = (_notificationView$ele = notificationView === null || notificationView === void 0 ? void 0 : notificationView.element) !== null && _notificationView$ele !== void 0 ? _notificationView$ele : null;\n\n if (notificationElement == null) {\n throw new Error('Unable to get notification element from view');\n }\n\n const notificationContent = notificationElement.querySelector('.detail-content');\n\n if (notificationContent == null) {\n throw new Error('Content detail container not found inside the notification');\n } // Clear the contents and add some skel\n\n\n notificationContent.innerHTML = ''; // Add list of ungroup dependencies to the top of the notification\n\n if (ungroupedDependencies.length > 0) {\n const ungroupedLine = document.createElement('div');\n ungroupedLine.innerHTML = `Packages without choices:
  • ${ungroupedDependencies.map(item => escapeHtml_1(item.name)).join('
  • ')}
`;\n notificationContent.appendChild(ungroupedLine);\n } // Create a label line for groups\n\n\n const groupLabelLine = document.createElement('div');\n groupLabelLine.innerHTML = `Packages with choices:`;\n notificationContent.appendChild(groupLabelLine); // Create one line per group with a select inside\n\n const groupedList = document.createElement('ul');\n groupedDependencies.forEach((item, index) => {\n const listItem = document.createElement('li');\n const select = document.createElement('select');\n select.innerHTML = item.map(subitem => ``).join('\\n');\n select.addEventListener('change', () => {\n // Change the selected value for this index for resolve to use\n const subitem = item.find(entry => entry.name === select.value);\n\n if (subitem != null) {\n groupChoices[index] = subitem;\n }\n });\n listItem.style.marginTop = '5px';\n listItem.appendChild(select);\n groupedList.appendChild(listItem);\n });\n notificationContent.appendChild(groupedList);\n } catch (err) {\n console.error('[Package-Deps] Error during showing package choices to user', err);\n }\n });\n}\nfunction getView({\n packageName,\n dependencies\n}) {\n const failed = [];\n const notification = atom.notifications.addInfo(`Installing ${packageName} dependencies`, {\n detail: `Installing ${dependencies.map(item => item.name).join(', ')}`,\n dismissable: true\n });\n const progress = document.createElement('progress');\n progress.max = dependencies.length;\n progress.style.width = '100%';\n\n try {\n var _notificationView$ele2;\n\n const notificationView = atom.views.getView(notification);\n const notificationElement = (_notificationView$ele2 = notificationView === null || notificationView === void 0 ? void 0 : notificationView.element) !== null && _notificationView$ele2 !== void 0 ? _notificationView$ele2 : null;\n\n if (notificationElement == null) {\n throw new Error('Unable to get notification element from view');\n }\n\n const notificationContent = notificationElement.querySelector('.detail-content');\n\n if (notificationContent == null) {\n throw new Error('Content detail container not found inside the notification');\n }\n\n notificationContent.appendChild(progress);\n } catch (err) {\n console.error('[Package-Deps] Error during showing installation progress to user', err);\n }\n\n return {\n handleFailure({\n dependency,\n error\n }) {\n var _error$stack;\n\n failed.push(dependency.name);\n progress.value += 1;\n console.error(`[Package-Deps] Unable to install ${dependency.name}, Error:`, (_error$stack = error === null || error === void 0 ? void 0 : error.stack) !== null && _error$stack !== void 0 ? _error$stack : error);\n },\n\n handleDependencyInstalled(dependency) {\n progress.value += 1;\n },\n\n handleComplete() {\n notification.dismiss();\n\n if (failed.length > 0) {\n atom.notifications.addWarning(`Failed to install ${packageName} dependencies`, {\n detail: `These packages were not installed, check your console\\nfor more info.\\n${failed.join('\\n')}`,\n dismissable: true\n });\n } else {\n atom.notifications.addSuccess(`Installed ${packageName} dependencies`, {\n detail: `Installed ${dependencies.map(item => item.name).join(', ')}`\n });\n }\n\n Promise.all(dependencies.map(item => {\n if (!failed.includes(item.name)) {\n return atom.packages.activatePackage(item.name);\n }\n\n return null;\n })).catch(err => {\n console.error(`[Package-Deps] Error activating installed packages for ${packageName}`, err);\n });\n }\n\n };\n}\n\nasync function confirmPackagesToInstall$1({\n dependencies\n}) {\n // No user interaction on the CLI. Install the first (aka \"default\" choice) package\n return dependencies.map(item => Array.isArray(item) ? item[0] : item);\n}\nfunction getView$1({\n dependencies\n}) {\n let failed = false;\n console.log(`Installing dependencies:\\n${dependencies.map(item => ` - ${item.name}`).join('\\n')}`);\n return {\n handleFailure({\n dependency,\n error\n }) {\n var _error$stack;\n\n failed = true;\n console.error(`Unable to install ${dependency.name}, Error:`, (_error$stack = error === null || error === void 0 ? void 0 : error.stack) !== null && _error$stack !== void 0 ? _error$stack : error);\n },\n\n handleDependencyInstalled(dependency) {\n console.log('Successfully installed', dependency.name);\n },\n\n handleComplete() {\n console.log('Installation complete');\n\n if (failed) {\n // Fail the invocation\n process.exitCode = 1;\n }\n }\n\n };\n}\n\nconst getView$2 = IS_ATOM ? getView : getView$1;\nconst confirmPackagesToInstall$2 = IS_ATOM ? confirmPackagesToInstall : confirmPackagesToInstall$1;\n\nasync function install(packageName) {\n invariant(typeof packageName === 'string' && packageName.length > 0, '[Package-Deps] Package name is required');\n\n if (isPackageIgnored(packageName)) {\n // User ignored this package\n return;\n } // Get list of relevant dependencies\n\n\n const dependencies = await getDependencies$2(packageName);\n\n if (dependencies.length === 0) {\n // Short-circuit\n return;\n } // Resolve directories of relevant dependencies\n\n\n const resolvedDependencies = await Promise.all(dependencies.map(async item => {\n if (Array.isArray(item)) {\n return Promise.all(item.map(async subitem => ({ ...subitem,\n directory: await resolveDependencyPath$2(subitem.name)\n })));\n }\n\n return { ...item,\n directory: await resolveDependencyPath$2(item.name)\n };\n })); // Filter out already installed, in range dependencies\n // If one dependency from a group is already installed, whole group is ignored\n\n const dependenciesToInstall = await pFilter_1(resolvedDependencies, async function (item) {\n if (Array.isArray(item)) {\n return (await Promise.all(item.map(subitem => shouldInstallDependency(subitem)))).every(Boolean);\n }\n\n return shouldInstallDependency(item);\n });\n\n if (dependenciesToInstall.length === 0) {\n // Short-circuit if all have been skipped\n return;\n }\n\n const chosenDependencies = await confirmPackagesToInstall$2({\n packageName,\n dependencies: dependenciesToInstall\n });\n\n if (chosenDependencies.length === 0) {\n // Short-circuit if user interaction cancelled all\n return;\n }\n\n const view = getView$2({\n packageName,\n dependencies: chosenDependencies\n });\n await pMap(chosenDependencies, async function (dependency) {\n try {\n await installPackage(dependency);\n view.handleDependencyInstalled(dependency);\n } catch (err) {\n view.handleFailure({\n dependency,\n error: err\n });\n }\n }, {\n concurrency: 2\n });\n view.handleComplete();\n}\n\nexports.install = install;\n","module.exports = {\n onCopy: 'copy',\n onCut: 'cut',\n onPaste: 'paste',\n onCompositionEnd: 'compositionend',\n onCompositionStart: 'compositionstart',\n onCompositionUpdate: 'compositionupdate',\n onKeyDown: 'keydown',\n onKeyPress: 'keypress',\n onKeyUp: 'keyup',\n onFocus: 'focus',\n onBlur: 'blur',\n onChange: 'change',\n onInput: 'input',\n onSubmit: 'submit',\n onClick: 'click',\n onContextMenu: 'contextmenu',\n onDoubleClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragEnter: 'dragenter',\n onDragExit: 'dragexit',\n onDragLeave: 'dragleave',\n onDragOver: 'dragover',\n onDragStart: 'dragstart',\n onDrop: 'drop',\n onMouseDown: 'mousedown',\n onMouseEnter: 'mouseenter',\n onMouseLeave: 'mouseleave',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onSelect: 'select',\n onTouchCancel: 'touchcancel',\n onTouchEnd: 'touchend',\n onTouchMove: 'touchmove',\n onTouchStart: 'touchstart',\n onScroll: 'scroll',\n onWheel: 'wheel',\n onAbort: 'abort',\n onCanPlay: 'canplay',\n onCanPlayThrough: 'canplaythrough',\n onDurationChange: 'durationchange',\n onEmptied: 'emptied',\n onEncrypted: 'encrypted',\n onEnded: 'ended',\n onError: 'error',\n onLoadedData: 'loadeddata',\n onLoadedMetadata: 'loadedmetadata',\n onLoadStart: 'loadstart',\n onPause: 'pause',\n onPlay: 'play',\n onPlaying: 'playing',\n onProgress: 'progress',\n onRateChange: 'ratechange',\n onSeeked: 'seeked',\n onSeeking: 'seeking',\n onStalled: 'stalled',\n onSuspend: 'suspend',\n onTimeUpdate: 'timeupdate',\n onVolumeChange: 'volumechange',\n onWaiting: 'waiting',\n onLoad: 'load',\n onAnimationStart: 'animationstart',\n onAnimationEnd: 'animationend',\n onAnimationIteration: 'animationiteration',\n onTransitionEnd: 'transitionend'\n}\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction dom (tag, props, ...children) {\n let ambiguous = []\n\n for (let i = 0; i < children.length;) {\n const child = children[i]\n switch (typeof child) {\n case 'string':\n case 'number':\n children[i] = {text: child}\n i++\n break;\n\n case 'object':\n if (Array.isArray(child)) {\n children.splice(i, 1, ...child)\n } else if (!child) {\n children.splice(i, 1)\n } else {\n if (!child.context) {\n ambiguous.push(child)\n if (child.ambiguous && child.ambiguous.length) {\n ambiguous = ambiguous.concat(child.ambiguous)\n }\n }\n i++\n }\n break;\n\n default:\n throw new Error(`Invalid child node: ${child}`)\n }\n }\n\n if (props) {\n for (const propName in props) {\n const eventName = EVENT_LISTENER_PROPS[propName]\n if (eventName) {\n if (!props.on) props.on = {}\n props.on[eventName] = props[propName]\n }\n }\n\n if (props.class) {\n props.className = props.class\n }\n }\n\n return {tag, props, children, ambiguous}\n}\n\nconst HTML_TAGS = [\n 'a', 'abbr', 'address', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo',\n 'blockquote', 'body', 'button', 'canvas', 'caption', 'cite', 'code',\n 'colgroup', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl',\n 'dt', 'em', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2',\n 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'html', 'i', 'iframe', 'ins', 'kbd',\n 'label', 'legend', 'li', 'main', 'map', 'mark', 'menu', 'meter', 'nav',\n 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'pre',\n 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section',\n 'select', 'small', 'span', 'strong', 'style', 'sub', 'summary', 'sup',\n 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title',\n 'tr', 'u', 'ul', 'var', 'video', 'area', 'base', 'br', 'col', 'command',\n 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source',\n 'track', 'wbr'\n]\n\nfor (const tagName of HTML_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\nfor (const tagName of SVG_TAGS) {\n dom[tagName] = (props, ...children) => {\n return dom(tagName, props, ...children)\n }\n}\n\n\nmodule.exports = dom\n","// taken from https://github.com/facebook/react/blob/67f8524e88abbf1ac0fd86d38a0477d11fbc7b3e/src/isomorphic/classic/element/ReactDOMFactories.js#L153\nmodule.exports = new Set([\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'tspan'\n])\n","// Based on https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\nmodule.exports = new Map([\n ['accentHeight', 'accent-height'],\n ['alignmentBaseline', 'alignment-baseline'],\n ['arabicForm', 'arabic-form'],\n ['baselineShift', 'baseline-shift'],\n ['capHeight', 'cap-height'],\n ['className', 'class'],\n ['clipPath', 'clip-path'],\n ['clipRule', 'clip-rule'],\n ['colorInterpolation', 'color-interpolation'],\n ['colorInterpolationFilters', 'color-interpolation-filters'],\n ['colorProfile', 'color-profile'],\n ['colorRendering', 'color-rendering'],\n ['dominantBaseline', 'dominant-baseline'],\n ['enableBackground', 'enable-background'],\n ['fillOpacity', 'fill-opacity'],\n ['fillRule', 'fill-rule'],\n ['floodColor', 'flood-color'],\n ['floodOpacity', 'flood-opacity'],\n ['fontFamily', 'font-family'],\n ['fontSize', 'font-size'],\n ['fontSizeAdjust', 'font-size-adjust'],\n ['fontStretch', 'font-stretch'],\n ['fontStyle', 'font-style'],\n ['fontVariant', 'font-variant'],\n ['fontWeight', 'font-weight'],\n ['glyphName', 'glyph-name'],\n ['glyphOrientationHorizontal', 'glyph-orientation-horizontal'],\n ['glyphOrientationVertical', 'glyph-orientation-vertical'],\n ['horizAdvX', 'horiz-adv-x'],\n ['horizOriginX', 'horiz-origin-x'],\n ['letterSpacing', 'letter-spacing'],\n ['lightingColor', 'lighting-color'],\n ['markerEnd', 'marker-end'],\n ['markerMid', 'marker-mid'],\n ['markerStart', 'marker-start'],\n ['overlinePosition', 'overline-position'],\n ['overlineThickness', 'overline-thickness'],\n ['panose1', 'panose-1'],\n ['paintOrder', 'paint-order'],\n ['pointerEvents', 'pointer-events'],\n ['renderingIntent', 'rendering-intent'],\n ['shapeRendering', 'shape-rendering'],\n ['stopColor', 'stop-color'],\n ['stopOpacity', 'stop-opacity'],\n ['strikethroughPosition', 'strikethrough-position'],\n ['strikethroughThickness', 'strikethrough-thickness'],\n ['strokeDasharray', 'stroke-dasharray'],\n ['strokeDashoffset', 'stroke-dashoffset'],\n ['strokeLinecap', 'stroke-linecap'],\n ['strokeLinejoin', 'stroke-linejoin'],\n ['strokeMiterlimit', 'stroke-miterlimit'],\n ['strokeOpacity', 'stroke-opacity'],\n ['strokeWidth', 'stroke-width'],\n ['textAnchor', 'text-anchor'],\n ['textDecoration', 'text-decoration'],\n ['textRendering', 'text-rendering'],\n ['underlinePosition', 'underline-position'],\n ['underlineThickness', 'underline-thickness'],\n ['unicodeBidi', 'unicode-bidi'],\n ['unicodeRange', 'unicode-range'],\n ['unitsPerEm', 'units-per-em'],\n ['vAlphabetic', 'v-alphabetic'],\n ['vHanging', 'v-hanging'],\n ['vIdeographic', 'v-ideographic'],\n ['vMathematical', 'v-mathematical'],\n ['vertAdvY', 'vert-adv-y'],\n ['vertOriginX', 'vert-origin-x'],\n ['vertOriginY', 'vert-origin-y'],\n ['wordSpacing', 'word-spacing'],\n ['writingMode', 'writing-mode'],\n ['xHeight', 'x-height'],\n])\n","const EVENT_LISTENER_PROPS = require('./event-listener-props')\nconst SVG_TAGS = require('./svg-tags')\nconst SVG_ATTRIBUTE_TRANSLATIONS = require('./svg-attribute-translations')\nconst EMPTY = ''\n\nconst updateRef = require('./update-ref')\n\nmodule.exports = function (domNode, oldVirtualNode, newVirtualNode, options) {\n const oldProps = oldVirtualNode && oldVirtualNode.props\n const newProps = newVirtualNode.props\n\n let refs, listenerContext\n if (options) {\n refs = options.refs\n listenerContext = options.listenerContext\n }\n updateProps(domNode, oldVirtualNode, oldProps, newVirtualNode, newProps)\n if (refs) updateRef(domNode, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n updateEventListeners(domNode, oldVirtualNode, newVirtualNode, listenerContext)\n}\n\n// Using var to avoid \"Unsupported phi use of variable\" deoptimization in Chrome 56\nfunction updateProps (domNode, oldVirtualNode, oldProps, newVirtualNode, newProps) {\n if (oldProps) {\n for (var name in oldProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n if (!newProps || !(name in newProps)) {\n if (name === 'dataset') {\n updateProps(domNode.dataset, null, oldProps && oldProps.dataset, null, null)\n } else if (name !== 'innerHTML' && oldVirtualNode && SVG_TAGS.has(oldVirtualNode.tag)) {\n domNode.removeAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name)\n } else {\n // Clear property for objects that don't support deletion (e.g. style\n // or className). If we used null instead of an empty string, the DOM\n // could sometimes stringify the value and mistakenly assign 'null'.\n domNode[name] = EMPTY\n delete domNode[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n if (name === 'ref' || name === 'on') continue\n if (name in EVENT_LISTENER_PROPS) continue\n var oldValue = oldProps && oldProps[name]\n var newValue = newProps[name]\n if (name === 'dataset') {\n updateNestedProps(domNode.dataset, oldValue, newValue, false)\n } else if (name === 'style' && typeof newValue !== 'string') {\n if (typeof oldValue === 'string') {\n domNode.style = ''\n oldValue = null\n }\n updateNestedProps(domNode.style, oldValue, newValue, true)\n } else if (name === 'attributes') {\n updateAttributes(domNode, oldValue, newValue)\n } else {\n if (newValue !== oldValue) {\n if (name !== 'innerHTML' && newVirtualNode && SVG_TAGS.has(newVirtualNode.tag)) {\n domNode.setAttribute(SVG_ATTRIBUTE_TRANSLATIONS.get(name) || name, newValue)\n } else if (newVirtualNode && newVirtualNode.tag === 'input'\n && name === 'value' && domNode[name] === newValue) {\n // Do not update `value` of an `input` unless it differs.\n // Every change will reset the cursor position.\n } else {\n domNode[name] = newValue\n }\n }\n }\n }\n }\n}\n\nfunction updateNestedProps (domProps, oldProps, newProps, isStyleObject) {\n if (oldProps) {\n for (var name in oldProps) {\n if (!newProps || !(name in newProps)) {\n if (isStyleObject) {\n domProps[name] = EMPTY\n } else {\n delete domProps[name]\n }\n }\n }\n }\n\n if (newProps) {\n for (var name in newProps) {\n const oldValue = oldProps && oldProps[name]\n const newValue = newProps[name]\n if (newValue !== oldValue) {\n domProps[name] = newValue\n }\n }\n }\n}\n\nfunction updateAttributes (domNode, oldAttributes, newAttributes) {\n if (oldAttributes) {\n for (var name in oldAttributes) {\n if (!newAttributes || !(name in newAttributes)) {\n domNode.removeAttribute(name)\n }\n }\n }\n\n if (newAttributes) {\n for (var name in newAttributes) {\n const oldValue = oldAttributes && oldAttributes[name]\n const newValue = newAttributes[name]\n if (newValue !== oldValue) {\n domNode.setAttribute(name, newValue)\n }\n }\n }\n}\n\nfunction updateEventListeners (domNode, oldVirtualNode, newVirtualNode, listenerContext) {\n const oldListeners = oldVirtualNode && oldVirtualNode.props && oldVirtualNode.props.on\n const newListeners = newVirtualNode.props && newVirtualNode.props.on\n\n for (const eventName in oldListeners) {\n if (!(newListeners && eventName in newListeners)) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListeners[eventName]\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n }\n\n for (const eventName in newListeners) {\n const oldListener = oldListeners && oldListeners[eventName]\n const newListener = newListeners[eventName]\n\n if (newListener !== oldListener) {\n if (oldListener) {\n let listenerToRemove\n if (oldVirtualNode && oldVirtualNode.boundListeners && oldVirtualNode.boundListeners[eventName]) {\n listenerToRemove = oldVirtualNode.boundListeners[eventName]\n } else {\n listenerToRemove = oldListener\n }\n domNode.removeEventListener(eventName, listenerToRemove)\n }\n if (newListener) {\n let listenerToAdd\n if (listenerContext) {\n listenerToAdd = newListener.bind(listenerContext)\n if (!newVirtualNode.boundListeners) newVirtualNode.boundListeners = {}\n newVirtualNode.boundListeners[eventName] = listenerToAdd\n } else {\n listenerToAdd = newListener\n }\n domNode.addEventListener(eventName, listenerToAdd)\n }\n }\n }\n}\n","const updateProps = require('./update-props')\nconst SVG_TAGS = require('./svg-tags')\n\nfunction render (virtualNode, options) {\n let domNode\n if (virtualNode.text != null) {\n domNode = document.createTextNode(virtualNode.text)\n } else {\n const {tag, children} = virtualNode\n let {props, context} = virtualNode\n\n if (context) {\n options = {refs: context.refs, listenerContext: context}\n }\n\n if (typeof tag === 'function') {\n let ref\n if (props && props.ref) {\n ref = props.ref\n }\n const component = new tag(props || {}, children)\n virtualNode.component = component\n domNode = component.element\n if (typeof ref === \"function\") {\n ref(component)\n } else if (options && options.refs && ref) {\n options.refs[ref] = component\n }\n } else if (SVG_TAGS.has(tag)) {\n domNode = document.createElementNS(\"http://www.w3.org/2000/svg\", tag);\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n } else {\n domNode = document.createElement(tag)\n if (children) addChildren(domNode, children, options)\n if (props) updateProps(domNode, null, virtualNode, options)\n }\n }\n virtualNode.domNode = domNode\n return domNode\n}\n\nfunction addChildren (parent, children, options) {\n for (let i = 0; i < children.length; i++) {\n parent.appendChild(render(children[i], options))\n }\n}\n\nmodule.exports = render\n","module.exports = function updateRef (domNode, oldRefName, newRefName, refs) {\n if (newRefName !== oldRefName) {\n if (typeof oldRefName === 'function') oldRefName(null)\n else if (oldRefName && refs[oldRefName] === domNode) delete refs[oldRefName]\n if (typeof newRefName === 'function') newRefName(domNode)\n else if (newRefName) refs[newRefName] = domNode\n }\n}\n","const render = require('./render')\nconst updateProps = require('./update-props')\nconst updateRef = require('./update-ref')\n\nfunction patch (oldVirtualNode, newVirtualNode, options) {\n const oldNode = oldVirtualNode.domNode\n\n if (newVirtualNode === oldVirtualNode) return oldNode\n\n if (virtualNodesAreEqual(oldVirtualNode, newVirtualNode)) {\n let newNode\n if (newVirtualNode.text != null) {\n oldNode.nodeValue = newVirtualNode.text\n newNode = oldNode\n } else {\n if (typeof newVirtualNode.tag === 'function') {\n newNode = updateComponent(oldVirtualNode, newVirtualNode, options)\n } else {\n updateChildren(oldNode, oldVirtualNode.children, newVirtualNode.children, options)\n updateProps(oldNode, oldVirtualNode, newVirtualNode, options)\n newNode = oldNode\n }\n }\n newVirtualNode.domNode = newNode\n if (newNode !== oldNode && oldNode.parentNode) {\n oldNode.parentNode.replaceChild(newNode, oldNode)\n }\n return newNode\n } else {\n const parentNode = oldNode.parentNode\n const nextSibling = oldNode.nextSibling\n removeVirtualNode(oldVirtualNode, options && options.refs)\n const newNode = render(newVirtualNode, options)\n if (parentNode) parentNode.insertBefore(newNode, nextSibling)\n newVirtualNode.domNode = newNode\n return newNode\n }\n}\n\nfunction updateComponent (oldVirtualNode, newVirtualNode, options) {\n const {component, props: oldProps} = oldVirtualNode\n let {props: newProps, children: newChildren} = newVirtualNode\n newVirtualNode.component = component\n const refs = options && options.refs\n if (refs) updateRef(component, oldProps && oldProps.ref, newProps && newProps.ref, refs)\n component.update(newProps || {}, newChildren)\n return component.element\n}\n\nlet mapPool = [new Map(), new Map(), new Map(), new Map()]\n\nfunction updateChildren (parentElement, oldChildren, newChildren, options) {\n var oldStartIndex = 0\n var oldEndIndex = oldChildren.length - 1\n var oldStartChild = oldChildren[0]\n var oldEndChild = oldChildren[oldEndIndex]\n\n var newStartIndex = 0\n var newEndIndex = newChildren.length - 1\n var newStartChild = newChildren[0]\n var newEndChild = newChildren[newEndIndex]\n\n var oldIndicesByKey\n\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\n if (!oldStartChild) {\n oldStartChild = oldChildren[++oldStartIndex]\n } else if (!oldEndChild) {\n oldEndChild = oldChildren[--oldEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newStartChild)) {\n patch(oldStartChild, newStartChild, options)\n oldStartChild = oldChildren[++oldStartIndex]\n newStartChild = newChildren[++newStartIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newEndChild)) {\n patch(oldEndChild, newEndChild, options)\n oldEndChild = oldChildren[--oldEndIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldStartChild, newEndChild)) {\n patch(oldStartChild, newEndChild, options)\n parentElement.insertBefore(oldStartChild.domNode, oldEndChild.domNode.nextSibling)\n oldStartChild = oldChildren[++oldStartIndex]\n newEndChild = newChildren[--newEndIndex]\n } else if (virtualNodesAreEqual(oldEndChild, newStartChild)) {\n patch(oldEndChild, newStartChild, options)\n parentElement.insertBefore(oldEndChild.domNode, oldStartChild.domNode);\n oldEndChild = oldChildren[--oldEndIndex]\n newStartChild = newChildren[++newStartIndex]\n } else {\n if (!oldIndicesByKey) {\n if (mapPool.length > 0) {\n oldIndicesByKey = mapPool.pop()\n oldIndicesByKey.clear()\n } else {\n oldIndicesByKey = new Map()\n }\n mapOldKeysToIndices(oldIndicesByKey, oldChildren, oldStartIndex, oldEndIndex)\n }\n\n var key = getKey(newStartChild)\n var oldIndex = key ? oldIndicesByKey.get(key) : null\n if (oldIndex == null) {\n parentElement.insertBefore(render(newStartChild, options), oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n } else {\n var oldChildToMove = oldChildren[oldIndex]\n patch(oldChildToMove, newStartChild, options)\n oldChildren[oldIndex] = undefined\n parentElement.insertBefore(oldChildToMove.domNode, oldStartChild.domNode)\n newStartChild = newChildren[++newStartIndex]\n }\n }\n }\n\n if (oldStartIndex > oldEndIndex) {\n var subsequentElement = newChildren[newEndIndex + 1] ? newChildren[newEndIndex + 1].domNode : null\n for (let i = newStartIndex; i <= newEndIndex; i++) {\n parentElement.insertBefore(render(newChildren[i], options), subsequentElement)\n }\n } else if (newStartIndex > newEndIndex) {\n for (let i = oldStartIndex; i <= oldEndIndex; i++) {\n var child = oldChildren[i]\n if (child) removeVirtualNode(child, options && options.refs)\n }\n }\n\n if (oldIndicesByKey) mapPool.push(oldIndicesByKey)\n}\n\nfunction removeVirtualNode (virtualNode, refs, removeDOMNode = true) {\n const {domNode, props, children, component} = virtualNode\n const ref = props && props.ref\n if (component) {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === component) delete refs[ref]\n if (component.destroy) component.destroy()\n } else {\n if (typeof ref === 'function') ref(null)\n else if (refs && ref && refs[ref] === domNode) delete refs[ref]\n if (children) {\n for (let i = 0; i < children.length; i++) {\n removeVirtualNode(children[i], refs, false)\n }\n }\n }\n\n if (removeDOMNode) domNode.remove()\n}\n\nfunction virtualNodesAreEqual (oldVirtualNode, newVirtualNode) {\n return (\n getKey(oldVirtualNode) === getKey(newVirtualNode)\n && oldVirtualNode.tag === newVirtualNode.tag\n )\n}\n\nfunction getKey (virtualNode) {\n return virtualNode.props ? virtualNode.props.key : undefined\n}\n\nfunction mapOldKeysToIndices (oldIndicesByKey, children, startIndex, endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getKey(children[i])\n if (key) oldIndicesByKey.set(key, i)\n }\n return oldIndicesByKey\n}\n\nmodule.exports = patch\n","// If the scheduler is not customized via `etch.setScheduler`, an instance of\n// this class will be used to schedule updates to the document. The\n// `updateDocument` method accepts functions to be run at some point in the\n// future, then runs them on the next animation frame.\nmodule.exports = class DefaultScheduler {\n constructor () {\n this.updateRequests = []\n this.readRequests = []\n this.pendingAnimationFrame = null\n this.performUpdates = this.performUpdates.bind(this)\n this.performingUpdates = false\n }\n\n // Enqueues functions that write to the DOM to be performed on the next\n // animation frame. Functions passed to this method should *never* read from\n // the DOM, because that could cause synchronous reflows.\n updateDocument (fn) {\n this.updateRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n readDocument (fn) {\n this.readRequests.push(fn)\n if (!this.pendingAnimationFrame) {\n this.pendingAnimationFrame = window.requestAnimationFrame(this.performUpdates)\n }\n }\n\n // Returns a promise that will resolve at the end of the next update cycle,\n // after all the functions passed to `updateDocument` and `updateDocumentSync`\n // have been run.\n getNextUpdatePromise () {\n if (!this.nextUpdatePromise) {\n this.nextUpdatePromise = new Promise(resolve => {\n this.resolveNextUpdatePromise = resolve\n })\n }\n return this.nextUpdatePromise\n }\n\n // Performs all the pending document updates. If running these update\n // functions causes *more* updates to be enqueued, they are run synchronously\n // in this update cycle without waiting for another frame.\n performUpdates () {\n while (this.updateRequests.length > 0) {\n this.updateRequests.shift()()\n }\n\n // We don't clear the pending frame until all update requests are processed.\n // This ensures updates requested within other updates are processed in the\n // current frame.\n this.pendingAnimationFrame = null\n\n // Now that updates are processed, we can perform all pending document reads\n // without the risk of interleaving them with writes and causing layout\n // thrashing.\n while (this.readRequests.length > 0) {\n this.readRequests.shift()()\n }\n\n if (this.nextUpdatePromise) {\n let resolveNextUpdatePromise = this.resolveNextUpdatePromise\n this.nextUpdatePromise = null\n this.resolveNextUpdatePromise = null\n resolveNextUpdatePromise()\n }\n }\n}\n","// This file implements getter and setter functions for a scheduler to be used\n// by this library when updating the DOM. The scheduler's job is to ensure that\n// DOM interaction is performed efficiently. When using `etch` in Atom, you\n// should tell `etch` to use Atom's scheduler by calling\n// `setScheduler(atom.views)`.\n//\n// Schedulers should support the following interface:\n// * `updateDocument(fn)` This method is asynchronous. It enqueues functions to\n// be executed later.\n// * `getNextUpdatePromise()` This function should return a promise that\n// resolves after all pending document update functions have been invoked.\n//\n// Schedulers could support the following optional methods, which are supported\n// by Atom's scheduler.\n//\n// * `readDocument` This method can be invoked by clients other than `etch` when\n// it is necessary to read from the DOM. Functions enqueued via this method\n// should not be run until all document update functions have been executed.\n// Batching updates and reads in this way will prevent forced synchronous\n// reflows.\n// * `pollDocument` This method is similar to `readDocument`, but it runs the\n// associated functions repeatedly. Again, they should be scheduled in such a\n// way so as to avoid synchronous reflows.\n\nconst DefaultScheduler = require('./default-scheduler')\n\nlet scheduler = null\n\nmodule.exports.setScheduler = function setScheduler (customScheduler) {\n scheduler = customScheduler\n}\n\nmodule.exports.getScheduler = function getScheduler () {\n if (!scheduler) {\n scheduler = new DefaultScheduler()\n }\n return scheduler\n}\n","const render = require('./render')\nconst patch = require('./patch')\nconst {getScheduler} = require('./scheduler-assignment')\n\nconst componentsWithPendingUpdates = new WeakSet()\nlet syncUpdatesInProgressCounter = 0\nlet syncDestructionsInProgressCounter = 0\n\nfunction isValidVirtualNode (virtualNode) {\n return virtualNode != null && virtualNode !== false\n}\n\nfunction applyContext (context, virtualNode) {\n virtualNode.context = context\n if (virtualNode.ambiguous) {\n virtualNode.ambiguous.forEach(node => {\n node.context = context\n })\n delete virtualNode.ambiguous\n }\n}\n\n// This function associates a component object with a DOM element by calling\n// the components `render` method, assigning an `.element` property on the\n// object and also returning the element.\n//\n// It also assigns a `virtualNode` property based on the return value of the\n// `render` method. This will be used later by `performElementUpdate` to diff\n// the new results of `render` with the previous results when updating the\n// component's element.\n//\n// Finally, this function also associates the component with a `refs` object,\n// which is populated with references to elements based on `ref` properties on\n// nodes of the `virtual-dom` tree. Before calling into `virtual-dom` to create\n// the DOM tree, it pushes this `refs` object to a shared stack so it can be\n// accessed by hooks during the creation of individual elements.\nfunction initialize(component) {\n if (typeof component.update !== 'function') {\n throw new Error('Etch components must implement `update(props, children)`.')\n }\n\n let virtualNode = component.render()\n if (!isValidVirtualNode(virtualNode)) {\n let namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + virtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, virtualNode)\n\n component.refs = {}\n component.virtualNode = virtualNode\n component.element = render(component.virtualNode, {\n refs: component.refs, listenerContext: component\n })\n}\n\n// This function receives a component that has already been associated with an\n// element via a previous call to `initialize` and updates this element by\n// calling `render` on the component.\n//\n// When called in normal circumstances, it uses the scheduler to defer this\n// update until the next animation frame, and will only perform one update of a\n// given component in a given frame. This means you can call `update`\n// repeatedly in a given tick without causing redundant updates.\n//\n// If this function called during another synchronous update (for example, as a\n// result of a call to `update` on a child component), the update is performed\n// synchronously.\n//\n// Returns a promise that will resolve when the requested update has been\n// completed.\nfunction update (component, replaceNode=true) {\n if (syncUpdatesInProgressCounter > 0) {\n updateSync(component, replaceNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n\n if (!componentsWithPendingUpdates.has(component)) {\n componentsWithPendingUpdates.add(component)\n scheduler.updateDocument(function () {\n componentsWithPendingUpdates.delete(component)\n updateSync(component, replaceNode)\n })\n }\n\n return scheduler.getNextUpdatePromise()\n}\n\n// Synchronsly updates the DOM element associated with a component object. .\n// This method assumes the presence of `.element` and `.virtualNode`\n// properties on the component, which are assigned in the `initialize`\n// function.\n//\n// It calls `render` on the component to obtain the desired state of the DOM,\n// then `diff`s it with the previous state and `patch`es the element based on\n// the resulting diff. During the patch operation, it pushes the component's\n// `refs` object to a shared stack so that references to DOM elements can be\n// updated.\n//\n// If `update` is called during the invocation of `updateSync`,\n// the requests are processed synchronously as well. We track whether this is\n// the case by incrementing and decrementing `syncUpdatesInProgressCounter`\n// around the call.\n//\n// For now, etch does not allow the root tag of the `render` method to change\n// between invocations, because we want to preserve a one-to-one relationship\n// between component objects and DOM elements for simplicity.\nfunction updateSync (component, replaceNode=true) {\n if (!isValidVirtualNode(component.virtualNode)) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a valid virtualNode. Perhaps this component was never initialized?`)\n }\n\n if (component.element == null) {\n throw new Error(`${component.constructor ? component.constructor.name + ' instance' : component} is not associated with a DOM element. Perhaps this component was never initialized?`)\n }\n\n let newVirtualNode = component.render()\n if (!isValidVirtualNode(newVirtualNode)) {\n const namePart = component.constructor && component.constructor.name ? ' in ' + component.constructor.name : ''\n throw new Error('invalid falsy value ' + newVirtualNode + ' returned from render()' + namePart)\n }\n\n applyContext(component, newVirtualNode)\n\n syncUpdatesInProgressCounter++\n let oldVirtualNode = component.virtualNode\n let oldDomNode = component.element\n let newDomNode = patch(oldVirtualNode, newVirtualNode, {\n refs: component.refs,\n listenerContext: component\n })\n component.virtualNode = newVirtualNode\n if (newDomNode !== oldDomNode && !replaceNode) {\n throw new Error('The root node type changed on update, but the update was performed with the replaceNode option set to false')\n } else {\n component.element = newDomNode\n }\n\n // We can safely perform additional writes after a DOM update synchronously,\n // but any reads need to be deferred until all writes are completed to avoid\n // DOM thrashing. Requested reads occur at the end of the the current frame\n // if this method was invoked via the scheduler. Otherwise, if `updateSync`\n // was invoked outside of the scheduler, the default scheduler will defer\n // reads until the next animation frame.\n if (typeof component.writeAfterUpdate === 'function') {\n component.writeAfterUpdate()\n }\n if (typeof component.readAfterUpdate === 'function') {\n getScheduler().readDocument(function () {\n component.readAfterUpdate()\n })\n }\n\n syncUpdatesInProgressCounter--\n}\n\n// Removes the component's associated element and calls `destroy` on any child\n// components. Normally, this function is asynchronous and will perform the\n// destruction on the next animation frame. If called as the result of another\n// update or destruction, it calls `destroy` on child components synchronously.\n// If called as the result of destroying a component higher in the DOM, the\n// element is not removed to avoid redundant DOM manipulation. Returns a promise\n// that resolves when the destruction is completed.\nfunction destroy (component, removeNode=true) {\n if (syncUpdatesInProgressCounter > 0 || syncDestructionsInProgressCounter > 0) {\n destroySync(component, removeNode)\n return Promise.resolve()\n }\n\n let scheduler = getScheduler()\n scheduler.updateDocument(function () {\n destroySync(component, removeNode)\n })\n return scheduler.getNextUpdatePromise()\n}\n\n// A synchronous version of `destroy`.\n//\n// Note that we track whether `destroy` calls are in progress and only remove\n// the element if we are not a nested call.\nfunction destroySync (component, removeNode=true) {\n syncDestructionsInProgressCounter++\n destroyChildComponents(component.virtualNode)\n if (syncDestructionsInProgressCounter === 1 && removeNode) component.element.remove()\n syncDestructionsInProgressCounter--\n}\n\nfunction destroyChildComponents(virtualNode) {\n if (virtualNode.component && typeof virtualNode.component.destroy === 'function') {\n virtualNode.component.destroy()\n } else if (virtualNode.children) {\n virtualNode.children.forEach(destroyChildComponents)\n }\n}\n\nmodule.exports = {\n initialize,\n update, updateSync,\n destroy, destroySync\n}\n","const dom = require('./dom')\nconst render = require('./render')\nconst {initialize, update, updateSync, destroy, destroySync} = require('./component-helpers')\nconst {setScheduler, getScheduler} = require('./scheduler-assignment')\n\nmodule.exports = {\n dom, render,\n initialize, update, updateSync, destroy, destroySync,\n setScheduler, getScheduler\n}\n","export function handlePromise(promise: Promise | undefined): void {\n if (promise === undefined) return\n // tslint:disable-next-line:strict-type-predicates no-unbound-method\n if (typeof promise.catch !== \"function\") {\n atom.notifications.addFatalError(\n \"Atom-Typescript: non-promise passed to handlePromise. Please report this.\",\n {\n stack: new Error().stack,\n dismissable: true,\n },\n )\n return\n }\n promise.catch((err: Error) => {\n atom.notifications.addFatalError(`Atom-Typescript error: ${err.message}`, {\n detail: err.toString(),\n stack: err.stack,\n dismissable: true,\n })\n })\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '