Say what? - Version 2.0.0

Version Description

  • Support for translatable strings rendered through WordPress Javascript framework
  • Supports replacing text in Gutenberg / WooCommerce admin / WooCommerce blocks
  • Update details of Say What? Pro vs free plugin
Download this release

Release Info

Developer leewillis77
Plugin Icon 128x128 Say what?
Version 2.0.0
Comparing to
See all releases

Code changes from version 1.9.7 to 2.0.0

Files changed (887) hide show
  1. assets/build/frontend.asset.php +1 -0
  2. assets/build/frontend.js +201 -0
  3. assets/build/frontend.js.map +1 -0
  4. assets/src/frontend/index.js +129 -0
  5. css/admin.css +2 -1
  6. html/say-what-admin-addedit.php +0 -1
  7. html/say-what-admin-list.php +3 -3
  8. img/bg.jpg +0 -0
  9. img/cpw-banner.png +0 -0
  10. node_modules/lodash/LICENSE +47 -0
  11. node_modules/lodash/README.md +39 -0
  12. node_modules/lodash/_DataView.js +7 -0
  13. node_modules/lodash/_Hash.js +32 -0
  14. node_modules/lodash/_LazyWrapper.js +28 -0
  15. node_modules/lodash/_ListCache.js +32 -0
  16. node_modules/lodash/_LodashWrapper.js +22 -0
  17. node_modules/lodash/_Map.js +7 -0
  18. node_modules/lodash/_MapCache.js +32 -0
  19. node_modules/lodash/_Promise.js +7 -0
  20. node_modules/lodash/_Set.js +7 -0
  21. node_modules/lodash/_SetCache.js +27 -0
  22. node_modules/lodash/_Stack.js +27 -0
  23. node_modules/lodash/_Symbol.js +6 -0
  24. node_modules/lodash/_Uint8Array.js +6 -0
  25. node_modules/lodash/_WeakMap.js +7 -0
  26. node_modules/lodash/_apply.js +21 -0
  27. node_modules/lodash/_arrayAggregator.js +22 -0
  28. node_modules/lodash/_arrayEach.js +22 -0
  29. node_modules/lodash/_arrayEachRight.js +21 -0
  30. node_modules/lodash/_arrayEvery.js +23 -0
  31. node_modules/lodash/_arrayFilter.js +25 -0
  32. node_modules/lodash/_arrayIncludes.js +17 -0
  33. node_modules/lodash/_arrayIncludesWith.js +22 -0
  34. node_modules/lodash/_arrayLikeKeys.js +49 -0
  35. node_modules/lodash/_arrayMap.js +21 -0
  36. node_modules/lodash/_arrayPush.js +20 -0
  37. node_modules/lodash/_arrayReduce.js +26 -0
  38. node_modules/lodash/_arrayReduceRight.js +24 -0
  39. node_modules/lodash/_arraySample.js +15 -0
  40. node_modules/lodash/_arraySampleSize.js +17 -0
  41. node_modules/lodash/_arrayShuffle.js +15 -0
  42. node_modules/lodash/_arraySome.js +23 -0
  43. node_modules/lodash/_asciiSize.js +12 -0
  44. node_modules/lodash/_asciiToArray.js +12 -0
  45. node_modules/lodash/_asciiWords.js +15 -0
  46. node_modules/lodash/_assignMergeValue.js +20 -0
  47. node_modules/lodash/_assignValue.js +28 -0
  48. node_modules/lodash/_assocIndexOf.js +21 -0
  49. node_modules/lodash/_baseAggregator.js +21 -0
  50. node_modules/lodash/_baseAssign.js +17 -0
  51. node_modules/lodash/_baseAssignIn.js +17 -0
  52. node_modules/lodash/_baseAssignValue.js +25 -0
  53. node_modules/lodash/_baseAt.js +23 -0
  54. node_modules/lodash/_baseClamp.js +22 -0
  55. node_modules/lodash/_baseClone.js +166 -0
  56. node_modules/lodash/_baseConforms.js +18 -0
  57. node_modules/lodash/_baseConformsTo.js +27 -0
  58. node_modules/lodash/_baseCreate.js +30 -0
  59. node_modules/lodash/_baseDelay.js +21 -0
  60. node_modules/lodash/_baseDifference.js +67 -0
  61. node_modules/lodash/_baseEach.js +14 -0
  62. node_modules/lodash/_baseEachRight.js +14 -0
  63. node_modules/lodash/_baseEvery.js +21 -0
  64. node_modules/lodash/_baseExtremum.js +32 -0
  65. node_modules/lodash/_baseFill.js +32 -0
  66. node_modules/lodash/_baseFilter.js +21 -0
  67. node_modules/lodash/_baseFindIndex.js +24 -0
  68. node_modules/lodash/_baseFindKey.js +23 -0
  69. node_modules/lodash/_baseFlatten.js +38 -0
  70. node_modules/lodash/_baseFor.js +16 -0
  71. node_modules/lodash/_baseForOwn.js +16 -0
  72. node_modules/lodash/_baseForOwnRight.js +16 -0
  73. node_modules/lodash/_baseForRight.js +15 -0
  74. node_modules/lodash/_baseFunctions.js +19 -0
  75. node_modules/lodash/_baseGet.js +24 -0
  76. node_modules/lodash/_baseGetAllKeys.js +20 -0
  77. node_modules/lodash/_baseGetTag.js +28 -0
  78. node_modules/lodash/_baseGt.js +14 -0
  79. node_modules/lodash/_baseHas.js +19 -0
  80. node_modules/lodash/_baseHasIn.js +13 -0
  81. node_modules/lodash/_baseInRange.js +18 -0
  82. node_modules/lodash/_baseIndexOf.js +20 -0
  83. node_modules/lodash/_baseIndexOfWith.js +23 -0
  84. node_modules/lodash/_baseIntersection.js +74 -0
  85. node_modules/lodash/_baseInverter.js +21 -0
  86. node_modules/lodash/_baseInvoke.js +24 -0
  87. node_modules/lodash/_baseIsArguments.js +18 -0
  88. node_modules/lodash/_baseIsArrayBuffer.js +17 -0
  89. node_modules/lodash/_baseIsDate.js +18 -0
  90. node_modules/lodash/_baseIsEqual.js +28 -0
  91. node_modules/lodash/_baseIsEqualDeep.js +83 -0
  92. node_modules/lodash/_baseIsMap.js +18 -0
  93. node_modules/lodash/_baseIsMatch.js +62 -0
  94. node_modules/lodash/_baseIsNaN.js +12 -0
  95. node_modules/lodash/_baseIsNative.js +47 -0
  96. node_modules/lodash/_baseIsRegExp.js +18 -0
  97. node_modules/lodash/_baseIsSet.js +18 -0
  98. node_modules/lodash/_baseIsTypedArray.js +60 -0
  99. node_modules/lodash/_baseIteratee.js +31 -0
  100. node_modules/lodash/_baseKeys.js +30 -0
  101. node_modules/lodash/_baseKeysIn.js +33 -0
  102. node_modules/lodash/_baseLodash.js +10 -0
  103. node_modules/lodash/_baseLt.js +14 -0
  104. node_modules/lodash/_baseMap.js +22 -0
  105. node_modules/lodash/_baseMatches.js +22 -0
  106. node_modules/lodash/_baseMatchesProperty.js +33 -0
  107. node_modules/lodash/_baseMean.js +20 -0
  108. node_modules/lodash/_baseMerge.js +42 -0
  109. node_modules/lodash/_baseMergeDeep.js +94 -0
  110. node_modules/lodash/_baseNth.js +20 -0
  111. node_modules/lodash/_baseOrderBy.js +49 -0
  112. node_modules/lodash/_basePick.js +19 -0
  113. node_modules/lodash/_basePickBy.js +30 -0
  114. node_modules/lodash/_baseProperty.js +14 -0
  115. node_modules/lodash/_basePropertyDeep.js +16 -0
  116. node_modules/lodash/_basePropertyOf.js +14 -0
  117. node_modules/lodash/_basePullAll.js +51 -0
  118. node_modules/lodash/_basePullAt.js +37 -0
  119. node_modules/lodash/_baseRandom.js +18 -0
  120. node_modules/lodash/_baseRange.js +28 -0
  121. node_modules/lodash/_baseReduce.js +23 -0
  122. node_modules/lodash/_baseRepeat.js +35 -0
  123. node_modules/lodash/_baseRest.js +17 -0
  124. node_modules/lodash/_baseSample.js +15 -0
  125. node_modules/lodash/_baseSampleSize.js +18 -0
  126. node_modules/lodash/_baseSet.js +51 -0
  127. node_modules/lodash/_baseSetData.js +17 -0
  128. node_modules/lodash/_baseSetToString.js +22 -0
  129. node_modules/lodash/_baseShuffle.js +15 -0
  130. node_modules/lodash/_baseSlice.js +31 -0
  131. node_modules/lodash/_baseSome.js +22 -0
  132. node_modules/lodash/_baseSortBy.js +21 -0
  133. node_modules/lodash/_baseSortedIndex.js +42 -0
  134. node_modules/lodash/_baseSortedIndexBy.js +67 -0
  135. node_modules/lodash/_baseSortedUniq.js +30 -0
  136. node_modules/lodash/_baseSum.js +24 -0
  137. node_modules/lodash/_baseTimes.js +20 -0
  138. node_modules/lodash/_baseToNumber.js +24 -0
  139. node_modules/lodash/_baseToPairs.js +18 -0
  140. node_modules/lodash/_baseToString.js +37 -0
  141. node_modules/lodash/_baseUnary.js +14 -0
  142. node_modules/lodash/_baseUniq.js +72 -0
  143. node_modules/lodash/_baseUnset.js +20 -0
  144. node_modules/lodash/_baseUpdate.js +18 -0
  145. node_modules/lodash/_baseValues.js +19 -0
  146. node_modules/lodash/_baseWhile.js +26 -0
  147. node_modules/lodash/_baseWrapperValue.js +25 -0
  148. node_modules/lodash/_baseXor.js +36 -0
  149. node_modules/lodash/_baseZipObject.js +23 -0
  150. node_modules/lodash/_cacheHas.js +13 -0
  151. node_modules/lodash/_castArrayLikeObject.js +14 -0
  152. node_modules/lodash/_castFunction.js +14 -0
  153. node_modules/lodash/_castPath.js +21 -0
  154. node_modules/lodash/_castRest.js +14 -0
  155. node_modules/lodash/_castSlice.js +18 -0
  156. node_modules/lodash/_charsEndIndex.js +19 -0
  157. node_modules/lodash/_charsStartIndex.js +20 -0
  158. node_modules/lodash/_cloneArrayBuffer.js +16 -0
  159. node_modules/lodash/_cloneBuffer.js +35 -0
  160. node_modules/lodash/_cloneDataView.js +16 -0
  161. node_modules/lodash/_cloneRegExp.js +17 -0
  162. node_modules/lodash/_cloneSymbol.js +18 -0
  163. node_modules/lodash/_cloneTypedArray.js +16 -0
  164. node_modules/lodash/_compareAscending.js +41 -0
  165. node_modules/lodash/_compareMultiple.js +44 -0
  166. node_modules/lodash/_composeArgs.js +39 -0
  167. node_modules/lodash/_composeArgsRight.js +41 -0
  168. node_modules/lodash/_copyArray.js +20 -0
  169. node_modules/lodash/_copyObject.js +40 -0
  170. node_modules/lodash/_copySymbols.js +16 -0
  171. node_modules/lodash/_copySymbolsIn.js +16 -0
  172. node_modules/lodash/_coreJsData.js +6 -0
  173. node_modules/lodash/_countHolders.js +21 -0
  174. node_modules/lodash/_createAggregator.js +23 -0
  175. node_modules/lodash/_createAssigner.js +37 -0
  176. node_modules/lodash/_createBaseEach.js +32 -0
  177. node_modules/lodash/_createBaseFor.js +25 -0
  178. node_modules/lodash/_createBind.js +28 -0
  179. node_modules/lodash/_createCaseFirst.js +33 -0
  180. node_modules/lodash/_createCompounder.js +24 -0
  181. node_modules/lodash/_createCtor.js +37 -0
  182. node_modules/lodash/_createCurry.js +46 -0
  183. node_modules/lodash/_createFind.js +25 -0
  184. node_modules/lodash/_createFlow.js +78 -0
  185. node_modules/lodash/_createHybrid.js +92 -0
  186. node_modules/lodash/_createInverter.js +17 -0
  187. node_modules/lodash/_createMathOperation.js +38 -0
  188. node_modules/lodash/_createOver.js +27 -0
  189. node_modules/lodash/_createPadding.js +33 -0
  190. node_modules/lodash/_createPartial.js +43 -0
  191. node_modules/lodash/_createRange.js +30 -0
  192. node_modules/lodash/_createRecurry.js +56 -0
  193. node_modules/lodash/_createRelationalOperation.js +20 -0
  194. node_modules/lodash/_createRound.js +35 -0
  195. node_modules/lodash/_createSet.js +19 -0
  196. node_modules/lodash/_createToPairs.js +30 -0
  197. node_modules/lodash/_createWrap.js +106 -0
  198. node_modules/lodash/_customDefaultsAssignIn.js +29 -0
  199. node_modules/lodash/_customDefaultsMerge.js +28 -0
  200. node_modules/lodash/_customOmitClone.js +16 -0
  201. node_modules/lodash/_deburrLetter.js +71 -0
  202. node_modules/lodash/_defineProperty.js +11 -0
  203. node_modules/lodash/_equalArrays.js +84 -0
  204. node_modules/lodash/_equalByTag.js +112 -0
  205. node_modules/lodash/_equalObjects.js +90 -0
  206. node_modules/lodash/_escapeHtmlChar.js +21 -0
  207. node_modules/lodash/_escapeStringChar.js +22 -0
  208. node_modules/lodash/_flatRest.js +16 -0
  209. node_modules/lodash/_freeGlobal.js +4 -0
  210. node_modules/lodash/_getAllKeys.js +16 -0
  211. node_modules/lodash/_getAllKeysIn.js +17 -0
  212. node_modules/lodash/_getData.js +15 -0
  213. node_modules/lodash/_getFuncName.js +31 -0
  214. node_modules/lodash/_getHolder.js +13 -0
  215. node_modules/lodash/_getMapData.js +18 -0
  216. node_modules/lodash/_getMatchData.js +24 -0
  217. node_modules/lodash/_getNative.js +17 -0
  218. node_modules/lodash/_getPrototype.js +6 -0
  219. node_modules/lodash/_getRawTag.js +46 -0
  220. node_modules/lodash/_getSymbols.js +30 -0
  221. node_modules/lodash/_getSymbolsIn.js +25 -0
  222. node_modules/lodash/_getTag.js +58 -0
  223. node_modules/lodash/_getValue.js +13 -0
  224. node_modules/lodash/_getView.js +33 -0
  225. node_modules/lodash/_getWrapDetails.js +17 -0
  226. node_modules/lodash/_hasPath.js +39 -0
  227. node_modules/lodash/_hasUnicode.js +26 -0
  228. node_modules/lodash/_hasUnicodeWord.js +15 -0
  229. node_modules/lodash/_hashClear.js +15 -0
  230. node_modules/lodash/_hashDelete.js +17 -0
  231. node_modules/lodash/_hashGet.js +30 -0
  232. node_modules/lodash/_hashHas.js +23 -0
  233. node_modules/lodash/_hashSet.js +23 -0
  234. node_modules/lodash/_initCloneArray.js +26 -0
  235. node_modules/lodash/_initCloneByTag.js +77 -0
  236. node_modules/lodash/_initCloneObject.js +18 -0
  237. node_modules/lodash/_insertWrapDetails.js +23 -0
  238. node_modules/lodash/_isFlattenable.js +20 -0
  239. node_modules/lodash/_isIndex.js +25 -0
  240. node_modules/lodash/_isIterateeCall.js +30 -0
  241. node_modules/lodash/_isKey.js +29 -0
  242. node_modules/lodash/_isKeyable.js +15 -0
  243. node_modules/lodash/_isLaziable.js +28 -0
  244. node_modules/lodash/_isMaskable.js +14 -0
  245. node_modules/lodash/_isMasked.js +20 -0
  246. node_modules/lodash/_isPrototype.js +18 -0
  247. node_modules/lodash/_isStrictComparable.js +15 -0
  248. node_modules/lodash/_iteratorToArray.js +18 -0
  249. node_modules/lodash/_lazyClone.js +23 -0
  250. node_modules/lodash/_lazyReverse.js +23 -0
  251. node_modules/lodash/_lazyValue.js +69 -0
  252. node_modules/lodash/_listCacheClear.js +13 -0
  253. node_modules/lodash/_listCacheDelete.js +35 -0
  254. node_modules/lodash/_listCacheGet.js +19 -0
  255. node_modules/lodash/_listCacheHas.js +16 -0
  256. node_modules/lodash/_listCacheSet.js +26 -0
  257. node_modules/lodash/_mapCacheClear.js +21 -0
  258. node_modules/lodash/_mapCacheDelete.js +18 -0
  259. node_modules/lodash/_mapCacheGet.js +16 -0
  260. node_modules/lodash/_mapCacheHas.js +16 -0
  261. node_modules/lodash/_mapCacheSet.js +22 -0
  262. node_modules/lodash/_mapToArray.js +18 -0
  263. node_modules/lodash/_matchesStrictComparable.js +20 -0
  264. node_modules/lodash/_memoizeCapped.js +26 -0
  265. node_modules/lodash/_mergeData.js +90 -0
  266. node_modules/lodash/_metaMap.js +6 -0
  267. node_modules/lodash/_nativeCreate.js +6 -0
  268. node_modules/lodash/_nativeKeys.js +6 -0
  269. node_modules/lodash/_nativeKeysIn.js +20 -0
  270. node_modules/lodash/_nodeUtil.js +30 -0
  271. node_modules/lodash/_objectToString.js +22 -0
  272. node_modules/lodash/_overArg.js +15 -0
  273. node_modules/lodash/_overRest.js +36 -0
  274. node_modules/lodash/_parent.js +16 -0
  275. node_modules/lodash/_reEscape.js +4 -0
  276. node_modules/lodash/_reEvaluate.js +4 -0
  277. node_modules/lodash/_reInterpolate.js +4 -0
  278. node_modules/lodash/_realNames.js +4 -0
  279. node_modules/lodash/_reorder.js +29 -0
  280. node_modules/lodash/_replaceHolders.js +29 -0
  281. node_modules/lodash/_root.js +9 -0
  282. node_modules/lodash/_safeGet.js +21 -0
  283. node_modules/lodash/_setCacheAdd.js +19 -0
  284. node_modules/lodash/_setCacheHas.js +14 -0
  285. node_modules/lodash/_setData.js +20 -0
  286. node_modules/lodash/_setToArray.js +18 -0
  287. node_modules/lodash/_setToPairs.js +18 -0
  288. node_modules/lodash/_setToString.js +14 -0
  289. node_modules/lodash/_setWrapToString.js +21 -0
  290. node_modules/lodash/_shortOut.js +37 -0
  291. node_modules/lodash/_shuffleSelf.js +28 -0
  292. node_modules/lodash/_stackClear.js +15 -0
  293. node_modules/lodash/_stackDelete.js +18 -0
  294. node_modules/lodash/_stackGet.js +14 -0
  295. node_modules/lodash/_stackHas.js +14 -0
  296. node_modules/lodash/_stackSet.js +34 -0
  297. node_modules/lodash/_strictIndexOf.js +23 -0
  298. node_modules/lodash/_strictLastIndexOf.js +21 -0
  299. node_modules/lodash/_stringSize.js +18 -0
  300. node_modules/lodash/_stringToArray.js +18 -0
  301. node_modules/lodash/_stringToPath.js +27 -0
  302. node_modules/lodash/_toKey.js +21 -0
  303. node_modules/lodash/_toSource.js +26 -0
  304. node_modules/lodash/_unescapeHtmlChar.js +21 -0
  305. node_modules/lodash/_unicodeSize.js +44 -0
  306. node_modules/lodash/_unicodeToArray.js +40 -0
  307. node_modules/lodash/_unicodeWords.js +69 -0
  308. node_modules/lodash/_updateWrapDetails.js +46 -0
  309. node_modules/lodash/_wrapperClone.js +23 -0
  310. node_modules/lodash/add.js +22 -0
  311. node_modules/lodash/after.js +42 -0
  312. node_modules/lodash/array.js +67 -0
  313. node_modules/lodash/ary.js +29 -0
  314. node_modules/lodash/assign.js +58 -0
  315. node_modules/lodash/assignIn.js +40 -0
  316. node_modules/lodash/assignInWith.js +38 -0
  317. node_modules/lodash/assignWith.js +37 -0
  318. node_modules/lodash/at.js +23 -0
  319. node_modules/lodash/attempt.js +35 -0
  320. node_modules/lodash/before.js +40 -0
  321. node_modules/lodash/bind.js +57 -0
  322. node_modules/lodash/bindAll.js +41 -0
  323. node_modules/lodash/bindKey.js +68 -0
  324. node_modules/lodash/camelCase.js +29 -0
  325. node_modules/lodash/capitalize.js +23 -0
  326. node_modules/lodash/castArray.js +44 -0
  327. node_modules/lodash/ceil.js +26 -0
  328. node_modules/lodash/chain.js +38 -0
  329. node_modules/lodash/chunk.js +50 -0
  330. node_modules/lodash/clamp.js +39 -0
  331. node_modules/lodash/clone.js +36 -0
  332. node_modules/lodash/cloneDeep.js +29 -0
  333. node_modules/lodash/cloneDeepWith.js +40 -0
  334. node_modules/lodash/cloneWith.js +42 -0
  335. node_modules/lodash/collection.js +30 -0
  336. node_modules/lodash/commit.js +33 -0
  337. node_modules/lodash/compact.js +31 -0
  338. node_modules/lodash/concat.js +43 -0
  339. node_modules/lodash/cond.js +60 -0
  340. node_modules/lodash/conforms.js +35 -0
  341. node_modules/lodash/conformsTo.js +32 -0
  342. node_modules/lodash/constant.js +26 -0
  343. node_modules/lodash/core.js +3877 -0
  344. node_modules/lodash/core.min.js +30 -0
  345. node_modules/lodash/countBy.js +40 -0
  346. node_modules/lodash/create.js +43 -0
  347. node_modules/lodash/curry.js +57 -0
  348. node_modules/lodash/curryRight.js +54 -0
  349. node_modules/lodash/date.js +3 -0
  350. node_modules/lodash/debounce.js +191 -0
  351. node_modules/lodash/deburr.js +45 -0
  352. node_modules/lodash/defaultTo.js +25 -0
  353. node_modules/lodash/defaults.js +64 -0
  354. node_modules/lodash/defaultsDeep.js +30 -0
  355. node_modules/lodash/defer.js +26 -0
  356. node_modules/lodash/delay.js +28 -0
  357. node_modules/lodash/difference.js +33 -0
  358. node_modules/lodash/differenceBy.js +44 -0
  359. node_modules/lodash/differenceWith.js +40 -0
  360. node_modules/lodash/divide.js +22 -0
  361. node_modules/lodash/drop.js +38 -0
  362. node_modules/lodash/dropRight.js +39 -0
  363. node_modules/lodash/dropRightWhile.js +45 -0
  364. node_modules/lodash/dropWhile.js +45 -0
  365. node_modules/lodash/each.js +1 -0
  366. node_modules/lodash/eachRight.js +1 -0
  367. node_modules/lodash/endsWith.js +43 -0
  368. node_modules/lodash/entries.js +1 -0
  369. node_modules/lodash/entriesIn.js +1 -0
  370. node_modules/lodash/eq.js +37 -0
  371. node_modules/lodash/escape.js +43 -0
  372. node_modules/lodash/escapeRegExp.js +32 -0
  373. node_modules/lodash/every.js +56 -0
  374. node_modules/lodash/extend.js +1 -0
  375. node_modules/lodash/extendWith.js +1 -0
  376. node_modules/lodash/fill.js +45 -0
  377. node_modules/lodash/filter.js +52 -0
  378. node_modules/lodash/find.js +42 -0
  379. node_modules/lodash/findIndex.js +55 -0
  380. node_modules/lodash/findKey.js +44 -0
  381. node_modules/lodash/findLast.js +25 -0
  382. node_modules/lodash/findLastIndex.js +59 -0
  383. node_modules/lodash/findLastKey.js +44 -0
  384. node_modules/lodash/first.js +1 -0
  385. node_modules/lodash/flatMap.js +29 -0
  386. node_modules/lodash/flatMapDeep.js +31 -0
  387. node_modules/lodash/flatMapDepth.js +31 -0
  388. node_modules/lodash/flatten.js +22 -0
  389. node_modules/lodash/flattenDeep.js +25 -0
  390. node_modules/lodash/flattenDepth.js +33 -0
  391. node_modules/lodash/flip.js +28 -0
  392. node_modules/lodash/floor.js +26 -0
  393. node_modules/lodash/flow.js +27 -0
  394. node_modules/lodash/flowRight.js +26 -0
  395. node_modules/lodash/forEach.js +41 -0
  396. node_modules/lodash/forEachRight.js +31 -0
  397. node_modules/lodash/forIn.js +39 -0
  398. node_modules/lodash/forInRight.js +37 -0
  399. node_modules/lodash/forOwn.js +36 -0
  400. node_modules/lodash/forOwnRight.js +34 -0
  401. node_modules/lodash/fp.js +2 -0
  402. node_modules/lodash/fp/F.js +1 -0
  403. node_modules/lodash/fp/T.js +1 -0
  404. node_modules/lodash/fp/__.js +1 -0
  405. node_modules/lodash/fp/_baseConvert.js +569 -0
  406. node_modules/lodash/fp/_convertBrowser.js +18 -0
  407. node_modules/lodash/fp/_falseOptions.js +7 -0
  408. node_modules/lodash/fp/_mapping.js +358 -0
  409. node_modules/lodash/fp/_util.js +16 -0
  410. node_modules/lodash/fp/add.js +5 -0
  411. node_modules/lodash/fp/after.js +5 -0
  412. node_modules/lodash/fp/all.js +1 -0
  413. node_modules/lodash/fp/allPass.js +1 -0
  414. node_modules/lodash/fp/always.js +1 -0
  415. node_modules/lodash/fp/any.js +1 -0
  416. node_modules/lodash/fp/anyPass.js +1 -0
  417. node_modules/lodash/fp/apply.js +1 -0
  418. node_modules/lodash/fp/array.js +2 -0
  419. node_modules/lodash/fp/ary.js +5 -0
  420. node_modules/lodash/fp/assign.js +5 -0
  421. node_modules/lodash/fp/assignAll.js +5 -0
  422. node_modules/lodash/fp/assignAllWith.js +5 -0
  423. node_modules/lodash/fp/assignIn.js +5 -0
  424. node_modules/lodash/fp/assignInAll.js +5 -0
  425. node_modules/lodash/fp/assignInAllWith.js +5 -0
  426. node_modules/lodash/fp/assignInWith.js +5 -0
  427. node_modules/lodash/fp/assignWith.js +5 -0
  428. node_modules/lodash/fp/assoc.js +1 -0
  429. node_modules/lodash/fp/assocPath.js +1 -0
  430. node_modules/lodash/fp/at.js +5 -0
  431. node_modules/lodash/fp/attempt.js +5 -0
  432. node_modules/lodash/fp/before.js +5 -0
  433. node_modules/lodash/fp/bind.js +5 -0
  434. node_modules/lodash/fp/bindAll.js +5 -0
  435. node_modules/lodash/fp/bindKey.js +5 -0
  436. node_modules/lodash/fp/camelCase.js +5 -0
  437. node_modules/lodash/fp/capitalize.js +5 -0
  438. node_modules/lodash/fp/castArray.js +5 -0
  439. node_modules/lodash/fp/ceil.js +5 -0
  440. node_modules/lodash/fp/chain.js +5 -0
  441. node_modules/lodash/fp/chunk.js +5 -0
  442. node_modules/lodash/fp/clamp.js +5 -0
  443. node_modules/lodash/fp/clone.js +5 -0
  444. node_modules/lodash/fp/cloneDeep.js +5 -0
  445. node_modules/lodash/fp/cloneDeepWith.js +5 -0
  446. node_modules/lodash/fp/cloneWith.js +5 -0
  447. node_modules/lodash/fp/collection.js +2 -0
  448. node_modules/lodash/fp/commit.js +5 -0
  449. node_modules/lodash/fp/compact.js +5 -0
  450. node_modules/lodash/fp/complement.js +1 -0
  451. node_modules/lodash/fp/compose.js +1 -0
  452. node_modules/lodash/fp/concat.js +5 -0
  453. node_modules/lodash/fp/cond.js +5 -0
  454. node_modules/lodash/fp/conforms.js +1 -0
  455. node_modules/lodash/fp/conformsTo.js +5 -0
  456. node_modules/lodash/fp/constant.js +5 -0
  457. node_modules/lodash/fp/contains.js +1 -0
  458. node_modules/lodash/fp/convert.js +18 -0
  459. node_modules/lodash/fp/countBy.js +5 -0
  460. node_modules/lodash/fp/create.js +5 -0
  461. node_modules/lodash/fp/curry.js +5 -0
  462. node_modules/lodash/fp/curryN.js +5 -0
  463. node_modules/lodash/fp/curryRight.js +5 -0
  464. node_modules/lodash/fp/curryRightN.js +5 -0
  465. node_modules/lodash/fp/date.js +2 -0
  466. node_modules/lodash/fp/debounce.js +5 -0
  467. node_modules/lodash/fp/deburr.js +5 -0
  468. node_modules/lodash/fp/defaultTo.js +5 -0
  469. node_modules/lodash/fp/defaults.js +5 -0
  470. node_modules/lodash/fp/defaultsAll.js +5 -0
  471. node_modules/lodash/fp/defaultsDeep.js +5 -0
  472. node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  473. node_modules/lodash/fp/defer.js +5 -0
  474. node_modules/lodash/fp/delay.js +5 -0
  475. node_modules/lodash/fp/difference.js +5 -0
  476. node_modules/lodash/fp/differenceBy.js +5 -0
  477. node_modules/lodash/fp/differenceWith.js +5 -0
  478. node_modules/lodash/fp/dissoc.js +1 -0
  479. node_modules/lodash/fp/dissocPath.js +1 -0
  480. node_modules/lodash/fp/divide.js +5 -0
  481. node_modules/lodash/fp/drop.js +5 -0
  482. node_modules/lodash/fp/dropLast.js +1 -0
  483. node_modules/lodash/fp/dropLastWhile.js +1 -0
  484. node_modules/lodash/fp/dropRight.js +5 -0
  485. node_modules/lodash/fp/dropRightWhile.js +5 -0
  486. node_modules/lodash/fp/dropWhile.js +5 -0
  487. node_modules/lodash/fp/each.js +1 -0
  488. node_modules/lodash/fp/eachRight.js +1 -0
  489. node_modules/lodash/fp/endsWith.js +5 -0
  490. node_modules/lodash/fp/entries.js +1 -0
  491. node_modules/lodash/fp/entriesIn.js +1 -0
  492. node_modules/lodash/fp/eq.js +5 -0
  493. node_modules/lodash/fp/equals.js +1 -0
  494. node_modules/lodash/fp/escape.js +5 -0
  495. node_modules/lodash/fp/escapeRegExp.js +5 -0
  496. node_modules/lodash/fp/every.js +5 -0
  497. node_modules/lodash/fp/extend.js +1 -0
  498. node_modules/lodash/fp/extendAll.js +1 -0
  499. node_modules/lodash/fp/extendAllWith.js +1 -0
  500. node_modules/lodash/fp/extendWith.js +1 -0
  501. node_modules/lodash/fp/fill.js +5 -0
  502. node_modules/lodash/fp/filter.js +5 -0
  503. node_modules/lodash/fp/find.js +5 -0
  504. node_modules/lodash/fp/findFrom.js +5 -0
  505. node_modules/lodash/fp/findIndex.js +5 -0
  506. node_modules/lodash/fp/findIndexFrom.js +5 -0
  507. node_modules/lodash/fp/findKey.js +5 -0
  508. node_modules/lodash/fp/findLast.js +5 -0
  509. node_modules/lodash/fp/findLastFrom.js +5 -0
  510. node_modules/lodash/fp/findLastIndex.js +5 -0
  511. node_modules/lodash/fp/findLastIndexFrom.js +5 -0
  512. node_modules/lodash/fp/findLastKey.js +5 -0
  513. node_modules/lodash/fp/first.js +1 -0
  514. node_modules/lodash/fp/flatMap.js +5 -0
  515. node_modules/lodash/fp/flatMapDeep.js +5 -0
  516. node_modules/lodash/fp/flatMapDepth.js +5 -0
  517. node_modules/lodash/fp/flatten.js +5 -0
  518. node_modules/lodash/fp/flattenDeep.js +5 -0
  519. node_modules/lodash/fp/flattenDepth.js +5 -0
  520. node_modules/lodash/fp/flip.js +5 -0
  521. node_modules/lodash/fp/floor.js +5 -0
  522. node_modules/lodash/fp/flow.js +5 -0
  523. node_modules/lodash/fp/flowRight.js +5 -0
  524. node_modules/lodash/fp/forEach.js +5 -0
  525. node_modules/lodash/fp/forEachRight.js +5 -0
  526. node_modules/lodash/fp/forIn.js +5 -0
  527. node_modules/lodash/fp/forInRight.js +5 -0
  528. node_modules/lodash/fp/forOwn.js +5 -0
  529. node_modules/lodash/fp/forOwnRight.js +5 -0
  530. node_modules/lodash/fp/fromPairs.js +5 -0
  531. node_modules/lodash/fp/function.js +2 -0
  532. node_modules/lodash/fp/functions.js +5 -0
  533. node_modules/lodash/fp/functionsIn.js +5 -0
  534. node_modules/lodash/fp/get.js +5 -0
  535. node_modules/lodash/fp/getOr.js +5 -0
  536. node_modules/lodash/fp/groupBy.js +5 -0
  537. node_modules/lodash/fp/gt.js +5 -0
  538. node_modules/lodash/fp/gte.js +5 -0
  539. node_modules/lodash/fp/has.js +5 -0
  540. node_modules/lodash/fp/hasIn.js +5 -0
  541. node_modules/lodash/fp/head.js +5 -0
  542. node_modules/lodash/fp/identical.js +1 -0
  543. node_modules/lodash/fp/identity.js +5 -0
  544. node_modules/lodash/fp/inRange.js +5 -0
  545. node_modules/lodash/fp/includes.js +5 -0
  546. node_modules/lodash/fp/includesFrom.js +5 -0
  547. node_modules/lodash/fp/indexBy.js +1 -0
  548. node_modules/lodash/fp/indexOf.js +5 -0
  549. node_modules/lodash/fp/indexOfFrom.js +5 -0
  550. node_modules/lodash/fp/init.js +1 -0
  551. node_modules/lodash/fp/initial.js +5 -0
  552. node_modules/lodash/fp/intersection.js +5 -0
  553. node_modules/lodash/fp/intersectionBy.js +5 -0
  554. node_modules/lodash/fp/intersectionWith.js +5 -0
  555. node_modules/lodash/fp/invert.js +5 -0
  556. node_modules/lodash/fp/invertBy.js +5 -0
  557. node_modules/lodash/fp/invertObj.js +1 -0
  558. node_modules/lodash/fp/invoke.js +5 -0
  559. node_modules/lodash/fp/invokeArgs.js +5 -0
  560. node_modules/lodash/fp/invokeArgsMap.js +5 -0
  561. node_modules/lodash/fp/invokeMap.js +5 -0
  562. node_modules/lodash/fp/isArguments.js +5 -0
  563. node_modules/lodash/fp/isArray.js +5 -0
  564. node_modules/lodash/fp/isArrayBuffer.js +5 -0
  565. node_modules/lodash/fp/isArrayLike.js +5 -0
  566. node_modules/lodash/fp/isArrayLikeObject.js +5 -0
  567. node_modules/lodash/fp/isBoolean.js +5 -0
  568. node_modules/lodash/fp/isBuffer.js +5 -0
  569. node_modules/lodash/fp/isDate.js +5 -0
  570. node_modules/lodash/fp/isElement.js +5 -0
  571. node_modules/lodash/fp/isEmpty.js +5 -0
  572. node_modules/lodash/fp/isEqual.js +5 -0
  573. node_modules/lodash/fp/isEqualWith.js +5 -0
  574. node_modules/lodash/fp/isError.js +5 -0
  575. node_modules/lodash/fp/isFinite.js +5 -0
  576. node_modules/lodash/fp/isFunction.js +5 -0
  577. node_modules/lodash/fp/isInteger.js +5 -0
  578. node_modules/lodash/fp/isLength.js +5 -0
  579. node_modules/lodash/fp/isMap.js +5 -0
  580. node_modules/lodash/fp/isMatch.js +5 -0
  581. node_modules/lodash/fp/isMatchWith.js +5 -0
  582. node_modules/lodash/fp/isNaN.js +5 -0
  583. node_modules/lodash/fp/isNative.js +5 -0
  584. node_modules/lodash/fp/isNil.js +5 -0
  585. node_modules/lodash/fp/isNull.js +5 -0
  586. node_modules/lodash/fp/isNumber.js +5 -0
  587. node_modules/lodash/fp/isObject.js +5 -0
  588. node_modules/lodash/fp/isObjectLike.js +5 -0
  589. node_modules/lodash/fp/isPlainObject.js +5 -0
  590. node_modules/lodash/fp/isRegExp.js +5 -0
  591. node_modules/lodash/fp/isSafeInteger.js +5 -0
  592. node_modules/lodash/fp/isSet.js +5 -0
  593. node_modules/lodash/fp/isString.js +5 -0
  594. node_modules/lodash/fp/isSymbol.js +5 -0
  595. node_modules/lodash/fp/isTypedArray.js +5 -0
  596. node_modules/lodash/fp/isUndefined.js +5 -0
  597. node_modules/lodash/fp/isWeakMap.js +5 -0
  598. node_modules/lodash/fp/isWeakSet.js +5 -0
  599. node_modules/lodash/fp/iteratee.js +5 -0
  600. node_modules/lodash/fp/join.js +5 -0
  601. node_modules/lodash/fp/juxt.js +1 -0
  602. node_modules/lodash/fp/kebabCase.js +5 -0
  603. node_modules/lodash/fp/keyBy.js +5 -0
  604. node_modules/lodash/fp/keys.js +5 -0
  605. node_modules/lodash/fp/keysIn.js +5 -0
  606. node_modules/lodash/fp/lang.js +2 -0
  607. node_modules/lodash/fp/last.js +5 -0
  608. node_modules/lodash/fp/lastIndexOf.js +5 -0
  609. node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
  610. node_modules/lodash/fp/lowerCase.js +5 -0
  611. node_modules/lodash/fp/lowerFirst.js +5 -0
  612. node_modules/lodash/fp/lt.js +5 -0
  613. node_modules/lodash/fp/lte.js +5 -0
  614. node_modules/lodash/fp/map.js +5 -0
  615. node_modules/lodash/fp/mapKeys.js +5 -0
  616. node_modules/lodash/fp/mapValues.js +5 -0
  617. node_modules/lodash/fp/matches.js +1 -0
  618. node_modules/lodash/fp/matchesProperty.js +5 -0
  619. node_modules/lodash/fp/math.js +2 -0
  620. node_modules/lodash/fp/max.js +5 -0
  621. node_modules/lodash/fp/maxBy.js +5 -0
  622. node_modules/lodash/fp/mean.js +5 -0
  623. node_modules/lodash/fp/meanBy.js +5 -0
  624. node_modules/lodash/fp/memoize.js +5 -0
  625. node_modules/lodash/fp/merge.js +5 -0
  626. node_modules/lodash/fp/mergeAll.js +5 -0
  627. node_modules/lodash/fp/mergeAllWith.js +5 -0
  628. node_modules/lodash/fp/mergeWith.js +5 -0
  629. node_modules/lodash/fp/method.js +5 -0
  630. node_modules/lodash/fp/methodOf.js +5 -0
  631. node_modules/lodash/fp/min.js +5 -0
  632. node_modules/lodash/fp/minBy.js +5 -0
  633. node_modules/lodash/fp/mixin.js +5 -0
  634. node_modules/lodash/fp/multiply.js +5 -0
  635. node_modules/lodash/fp/nAry.js +1 -0
  636. node_modules/lodash/fp/negate.js +5 -0
  637. node_modules/lodash/fp/next.js +5 -0
  638. node_modules/lodash/fp/noop.js +5 -0
  639. node_modules/lodash/fp/now.js +5 -0
  640. node_modules/lodash/fp/nth.js +5 -0
  641. node_modules/lodash/fp/nthArg.js +5 -0
  642. node_modules/lodash/fp/number.js +2 -0
  643. node_modules/lodash/fp/object.js +2 -0
  644. node_modules/lodash/fp/omit.js +5 -0
  645. node_modules/lodash/fp/omitAll.js +1 -0
  646. node_modules/lodash/fp/omitBy.js +5 -0
  647. node_modules/lodash/fp/once.js +5 -0
  648. node_modules/lodash/fp/orderBy.js +5 -0
  649. node_modules/lodash/fp/over.js +5 -0
  650. node_modules/lodash/fp/overArgs.js +5 -0
  651. node_modules/lodash/fp/overEvery.js +5 -0
  652. node_modules/lodash/fp/overSome.js +5 -0
  653. node_modules/lodash/fp/pad.js +5 -0
  654. node_modules/lodash/fp/padChars.js +5 -0
  655. node_modules/lodash/fp/padCharsEnd.js +5 -0
  656. node_modules/lodash/fp/padCharsStart.js +5 -0
  657. node_modules/lodash/fp/padEnd.js +5 -0
  658. node_modules/lodash/fp/padStart.js +5 -0
  659. node_modules/lodash/fp/parseInt.js +5 -0
  660. node_modules/lodash/fp/partial.js +5 -0
  661. node_modules/lodash/fp/partialRight.js +5 -0
  662. node_modules/lodash/fp/partition.js +5 -0
  663. node_modules/lodash/fp/path.js +1 -0
  664. node_modules/lodash/fp/pathEq.js +1 -0
  665. node_modules/lodash/fp/pathOr.js +1 -0
  666. node_modules/lodash/fp/paths.js +1 -0
  667. node_modules/lodash/fp/pick.js +5 -0
  668. node_modules/lodash/fp/pickAll.js +1 -0
  669. node_modules/lodash/fp/pickBy.js +5 -0
  670. node_modules/lodash/fp/pipe.js +1 -0
  671. node_modules/lodash/fp/placeholder.js +6 -0
  672. node_modules/lodash/fp/plant.js +5 -0
  673. node_modules/lodash/fp/pluck.js +1 -0
  674. node_modules/lodash/fp/prop.js +1 -0
  675. node_modules/lodash/fp/propEq.js +1 -0
  676. node_modules/lodash/fp/propOr.js +1 -0
  677. node_modules/lodash/fp/property.js +1 -0
  678. node_modules/lodash/fp/propertyOf.js +5 -0
  679. node_modules/lodash/fp/props.js +1 -0
  680. node_modules/lodash/fp/pull.js +5 -0
  681. node_modules/lodash/fp/pullAll.js +5 -0
  682. node_modules/lodash/fp/pullAllBy.js +5 -0
  683. node_modules/lodash/fp/pullAllWith.js +5 -0
  684. node_modules/lodash/fp/pullAt.js +5 -0
  685. node_modules/lodash/fp/random.js +5 -0
  686. node_modules/lodash/fp/range.js +5 -0
  687. node_modules/lodash/fp/rangeRight.js +5 -0
  688. node_modules/lodash/fp/rangeStep.js +5 -0
  689. node_modules/lodash/fp/rangeStepRight.js +5 -0
  690. node_modules/lodash/fp/rearg.js +5 -0
  691. node_modules/lodash/fp/reduce.js +5 -0
  692. node_modules/lodash/fp/reduceRight.js +5 -0
  693. node_modules/lodash/fp/reject.js +5 -0
  694. node_modules/lodash/fp/remove.js +5 -0
  695. node_modules/lodash/fp/repeat.js +5 -0
  696. node_modules/lodash/fp/replace.js +5 -0
  697. node_modules/lodash/fp/rest.js +5 -0
  698. node_modules/lodash/fp/restFrom.js +5 -0
  699. node_modules/lodash/fp/result.js +5 -0
  700. node_modules/lodash/fp/reverse.js +5 -0
  701. node_modules/lodash/fp/round.js +5 -0
  702. node_modules/lodash/fp/sample.js +5 -0
  703. node_modules/lodash/fp/sampleSize.js +5 -0
  704. node_modules/lodash/fp/seq.js +2 -0
  705. node_modules/lodash/fp/set.js +5 -0
  706. node_modules/lodash/fp/setWith.js +5 -0
  707. node_modules/lodash/fp/shuffle.js +5 -0
  708. node_modules/lodash/fp/size.js +5 -0
  709. node_modules/lodash/fp/slice.js +5 -0
  710. node_modules/lodash/fp/snakeCase.js +5 -0
  711. node_modules/lodash/fp/some.js +5 -0
  712. node_modules/lodash/fp/sortBy.js +5 -0
  713. node_modules/lodash/fp/sortedIndex.js +5 -0
  714. node_modules/lodash/fp/sortedIndexBy.js +5 -0
  715. node_modules/lodash/fp/sortedIndexOf.js +5 -0
  716. node_modules/lodash/fp/sortedLastIndex.js +5 -0
  717. node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
  718. node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
  719. node_modules/lodash/fp/sortedUniq.js +5 -0
  720. node_modules/lodash/fp/sortedUniqBy.js +5 -0
  721. node_modules/lodash/fp/split.js +5 -0
  722. node_modules/lodash/fp/spread.js +5 -0
  723. node_modules/lodash/fp/spreadFrom.js +5 -0
  724. node_modules/lodash/fp/startCase.js +5 -0
  725. node_modules/lodash/fp/startsWith.js +5 -0
  726. node_modules/lodash/fp/string.js +2 -0
  727. node_modules/lodash/fp/stubArray.js +5 -0
  728. node_modules/lodash/fp/stubFalse.js +5 -0
  729. node_modules/lodash/fp/stubObject.js +5 -0
  730. node_modules/lodash/fp/stubString.js +5 -0
  731. node_modules/lodash/fp/stubTrue.js +5 -0
  732. node_modules/lodash/fp/subtract.js +5 -0
  733. node_modules/lodash/fp/sum.js +5 -0
  734. node_modules/lodash/fp/sumBy.js +5 -0
  735. node_modules/lodash/fp/symmetricDifference.js +1 -0
  736. node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
  737. node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
  738. node_modules/lodash/fp/tail.js +5 -0
  739. node_modules/lodash/fp/take.js +5 -0
  740. node_modules/lodash/fp/takeLast.js +1 -0
  741. node_modules/lodash/fp/takeLastWhile.js +1 -0
  742. node_modules/lodash/fp/takeRight.js +5 -0
  743. node_modules/lodash/fp/takeRightWhile.js +5 -0
  744. node_modules/lodash/fp/takeWhile.js +5 -0
  745. node_modules/lodash/fp/tap.js +5 -0
  746. node_modules/lodash/fp/template.js +5 -0
  747. node_modules/lodash/fp/templateSettings.js +5 -0
  748. node_modules/lodash/fp/throttle.js +5 -0
  749. node_modules/lodash/fp/thru.js +5 -0
  750. node_modules/lodash/fp/times.js +5 -0
  751. node_modules/lodash/fp/toArray.js +5 -0
  752. node_modules/lodash/fp/toFinite.js +5 -0
  753. node_modules/lodash/fp/toInteger.js +5 -0
  754. node_modules/lodash/fp/toIterator.js +5 -0
  755. node_modules/lodash/fp/toJSON.js +5 -0
  756. node_modules/lodash/fp/toLength.js +5 -0
  757. node_modules/lodash/fp/toLower.js +5 -0
  758. node_modules/lodash/fp/toNumber.js +5 -0
  759. node_modules/lodash/fp/toPairs.js +5 -0
  760. node_modules/lodash/fp/toPairsIn.js +5 -0
  761. node_modules/lodash/fp/toPath.js +5 -0
  762. node_modules/lodash/fp/toPlainObject.js +5 -0
  763. node_modules/lodash/fp/toSafeInteger.js +5 -0
  764. node_modules/lodash/fp/toString.js +5 -0
  765. node_modules/lodash/fp/toUpper.js +5 -0
  766. node_modules/lodash/fp/transform.js +5 -0
  767. node_modules/lodash/fp/trim.js +5 -0
  768. node_modules/lodash/fp/trimChars.js +5 -0
  769. node_modules/lodash/fp/trimCharsEnd.js +5 -0
  770. node_modules/lodash/fp/trimCharsStart.js +5 -0
  771. node_modules/lodash/fp/trimEnd.js +5 -0
  772. node_modules/lodash/fp/trimStart.js +5 -0
  773. node_modules/lodash/fp/truncate.js +5 -0
  774. node_modules/lodash/fp/unapply.js +1 -0
  775. node_modules/lodash/fp/unary.js +5 -0
  776. node_modules/lodash/fp/unescape.js +5 -0
  777. node_modules/lodash/fp/union.js +5 -0
  778. node_modules/lodash/fp/unionBy.js +5 -0
  779. node_modules/lodash/fp/unionWith.js +5 -0
  780. node_modules/lodash/fp/uniq.js +5 -0
  781. node_modules/lodash/fp/uniqBy.js +5 -0
  782. node_modules/lodash/fp/uniqWith.js +5 -0
  783. node_modules/lodash/fp/uniqueId.js +5 -0
  784. node_modules/lodash/fp/unnest.js +1 -0
  785. node_modules/lodash/fp/unset.js +5 -0
  786. node_modules/lodash/fp/unzip.js +5 -0
  787. node_modules/lodash/fp/unzipWith.js +5 -0
  788. node_modules/lodash/fp/update.js +5 -0
  789. node_modules/lodash/fp/updateWith.js +5 -0
  790. node_modules/lodash/fp/upperCase.js +5 -0
  791. node_modules/lodash/fp/upperFirst.js +5 -0
  792. node_modules/lodash/fp/useWith.js +1 -0
  793. node_modules/lodash/fp/util.js +2 -0
  794. node_modules/lodash/fp/value.js +5 -0
  795. node_modules/lodash/fp/valueOf.js +5 -0
  796. node_modules/lodash/fp/values.js +5 -0
  797. node_modules/lodash/fp/valuesIn.js +5 -0
  798. node_modules/lodash/fp/where.js +1 -0
  799. node_modules/lodash/fp/whereEq.js +1 -0
  800. node_modules/lodash/fp/without.js +5 -0
  801. node_modules/lodash/fp/words.js +5 -0
  802. node_modules/lodash/fp/wrap.js +5 -0
  803. node_modules/lodash/fp/wrapperAt.js +5 -0
  804. node_modules/lodash/fp/wrapperChain.js +5 -0
  805. node_modules/lodash/fp/wrapperLodash.js +5 -0
  806. node_modules/lodash/fp/wrapperReverse.js +5 -0
  807. node_modules/lodash/fp/wrapperValue.js +5 -0
  808. node_modules/lodash/fp/xor.js +5 -0
  809. node_modules/lodash/fp/xorBy.js +5 -0
  810. node_modules/lodash/fp/xorWith.js +5 -0
  811. node_modules/lodash/fp/zip.js +5 -0
  812. node_modules/lodash/fp/zipAll.js +5 -0
  813. node_modules/lodash/fp/zipObj.js +1 -0
  814. node_modules/lodash/fp/zipObject.js +5 -0
  815. node_modules/lodash/fp/zipObjectDeep.js +5 -0
  816. node_modules/lodash/fp/zipWith.js +5 -0
  817. node_modules/lodash/fromPairs.js +28 -0
  818. node_modules/lodash/function.js +25 -0
  819. node_modules/lodash/functions.js +31 -0
  820. node_modules/lodash/functionsIn.js +31 -0
  821. node_modules/lodash/get.js +33 -0
  822. node_modules/lodash/groupBy.js +41 -0
  823. node_modules/lodash/gt.js +29 -0
  824. node_modules/lodash/gte.js +30 -0
  825. node_modules/lodash/has.js +35 -0
  826. node_modules/lodash/hasIn.js +34 -0
  827. node_modules/lodash/head.js +23 -0
  828. node_modules/lodash/identity.js +21 -0
  829. node_modules/lodash/inRange.js +55 -0
  830. node_modules/lodash/includes.js +53 -0
  831. node_modules/lodash/index.js +1 -0
  832. node_modules/lodash/indexOf.js +42 -0
  833. node_modules/lodash/initial.js +22 -0
  834. node_modules/lodash/intersection.js +30 -0
  835. node_modules/lodash/intersectionBy.js +45 -0
  836. node_modules/lodash/intersectionWith.js +41 -0
  837. node_modules/lodash/invert.js +42 -0
  838. node_modules/lodash/invertBy.js +56 -0
  839. node_modules/lodash/invoke.js +24 -0
  840. node_modules/lodash/invokeMap.js +41 -0
  841. node_modules/lodash/isArguments.js +36 -0
  842. node_modules/lodash/isArray.js +26 -0
  843. node_modules/lodash/isArrayBuffer.js +27 -0
  844. node_modules/lodash/isArrayLike.js +33 -0
  845. node_modules/lodash/isArrayLikeObject.js +33 -0
  846. node_modules/lodash/isBoolean.js +29 -0
  847. node_modules/lodash/isBuffer.js +38 -0
  848. node_modules/lodash/isDate.js +27 -0
  849. node_modules/lodash/isElement.js +25 -0
  850. node_modules/lodash/isEmpty.js +77 -0
  851. node_modules/lodash/isEqual.js +35 -0
  852. node_modules/lodash/isEqualWith.js +41 -0
  853. node_modules/lodash/isError.js +36 -0
  854. node_modules/lodash/isFinite.js +36 -0
  855. node_modules/lodash/isFunction.js +37 -0
  856. node_modules/lodash/isInteger.js +33 -0
  857. node_modules/lodash/isLength.js +35 -0
  858. node_modules/lodash/isMap.js +27 -0
  859. node_modules/lodash/isMatch.js +36 -0
  860. node_modules/lodash/isMatchWith.js +41 -0
  861. node_modules/lodash/isNaN.js +38 -0
  862. node_modules/lodash/isNative.js +40 -0
  863. node_modules/lodash/isNil.js +25 -0
  864. node_modules/lodash/isNull.js +22 -0
  865. node_modules/lodash/isNumber.js +38 -0
  866. node_modules/lodash/isObject.js +31 -0
  867. node_modules/lodash/isObjectLike.js +29 -0
  868. node_modules/lodash/isPlainObject.js +62 -0
  869. node_modules/lodash/isRegExp.js +27 -0
  870. node_modules/lodash/isSafeInteger.js +37 -0
  871. node_modules/lodash/isSet.js +27 -0
  872. node_modules/lodash/isString.js +30 -0
  873. node_modules/lodash/isSymbol.js +29 -0
  874. node_modules/lodash/isTypedArray.js +27 -0
  875. node_modules/lodash/isUndefined.js +22 -0
  876. node_modules/lodash/isWeakMap.js +28 -0
  877. node_modules/lodash/isWeakSet.js +28 -0
  878. node_modules/lodash/iteratee.js +53 -0
  879. node_modules/lodash/join.js +26 -0
  880. node_modules/lodash/kebabCase.js +28 -0
  881. node_modules/lodash/keyBy.js +36 -0
  882. node_modules/lodash/keys.js +37 -0
  883. node_modules/lodash/keysIn.js +32 -0
  884. node_modules/lodash/lang.js +58 -0
  885. node_modules/lodash/last.js +20 -0
  886. node_modules/lodash/lastIndexOf.js +46 -0
  887. node_modules/lodash/lodash.js +6602 -0
assets/build/frontend.asset.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php return array('dependencies' => array('lodash', 'wp-hooks', 'wp-polyfill'), 'version' => '13ca4af4ccec83bb607147a8e96e8873');
assets/build/frontend.js ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // define getter function for harmony exports
37
+ /******/ __webpack_require__.d = function(exports, name, getter) {
38
+ /******/ if(!__webpack_require__.o(exports, name)) {
39
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
+ /******/ }
41
+ /******/ };
42
+ /******/
43
+ /******/ // define __esModule on exports
44
+ /******/ __webpack_require__.r = function(exports) {
45
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
+ /******/ }
48
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
+ /******/ };
50
+ /******/
51
+ /******/ // create a fake namespace object
52
+ /******/ // mode & 1: value is a module id, require it
53
+ /******/ // mode & 2: merge all properties of value into the ns
54
+ /******/ // mode & 4: return value when already ns object
55
+ /******/ // mode & 8|1: behave like require
56
+ /******/ __webpack_require__.t = function(value, mode) {
57
+ /******/ if(mode & 1) value = __webpack_require__(value);
58
+ /******/ if(mode & 8) return value;
59
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
+ /******/ var ns = Object.create(null);
61
+ /******/ __webpack_require__.r(ns);
62
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
+ /******/ return ns;
65
+ /******/ };
66
+ /******/
67
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
68
+ /******/ __webpack_require__.n = function(module) {
69
+ /******/ var getter = module && module.__esModule ?
70
+ /******/ function getDefault() { return module['default']; } :
71
+ /******/ function getModuleExports() { return module; };
72
+ /******/ __webpack_require__.d(getter, 'a', getter);
73
+ /******/ return getter;
74
+ /******/ };
75
+ /******/
76
+ /******/ // Object.prototype.hasOwnProperty.call
77
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
+ /******/
79
+ /******/ // __webpack_public_path__
80
+ /******/ __webpack_require__.p = "";
81
+ /******/
82
+ /******/
83
+ /******/ // Load entry module and return exports
84
+ /******/ return __webpack_require__(__webpack_require__.s = "./assets/src/frontend/index.js");
85
+ /******/ })
86
+ /************************************************************************/
87
+ /******/ ({
88
+
89
+ /***/ "./assets/src/frontend/index.js":
90
+ /*!**************************************!*\
91
+ !*** ./assets/src/frontend/index.js ***!
92
+ \**************************************/
93
+ /*! no exports provided */
94
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
+
96
+ "use strict";
97
+ __webpack_require__.r(__webpack_exports__);
98
+ /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ "lodash");
99
+ /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);
100
+ /* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/hooks */ "@wordpress/hooks");
101
+ /* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_1__);
102
+
103
+ // Initialise
104
+
105
+ var sayWhat = {
106
+ // Filter callbacks for each translation call. Uses handle() to do the heavy lifting.
107
+ gettext: function gettext(translation, text, domain) {
108
+ return sayWhat.handle(translation, text, text, undefined, undefined, domain);
109
+ },
110
+ gettext_with_context: function gettext_with_context(translation, text, context, domain) {
111
+ return sayWhat.handle(translation, text, text, undefined, context, domain);
112
+ },
113
+ ngettext: function ngettext(translation, single, plural, number, domain) {
114
+ return sayWhat.handle(translation, single, plural, number, undefined, domain);
115
+ },
116
+ ngettext_with_context: function ngettext_with_context(translation, single, plural, number, context, domain) {
117
+ return sayWhat.handle(translation, single, plural, number, context, domain);
118
+ },
119
+ has_translation: function has_translation(result, single, context, domain) {
120
+ var swpHasReplacement = sayWhat.handle(single, single, single, undefined, context, domain) !== single;
121
+ return result || swpHasReplacement;
122
+ },
123
+
124
+ /**
125
+ * Handle a call to a translation function.
126
+ *
127
+ * Looks for a replacement and filters the return value if required. If String Discovery is active
128
+ * also check whether this is a known available string or not, and queues discovery if not.
129
+ *
130
+ * @param {string} translation The translated string.
131
+ * @param {string} single Text to translate if non-plural.
132
+ * @param {string} plural Text to translate if plural.
133
+ * @param {string|undefined} number The number used to decide on plural/non-plural.
134
+ * @param {string|undefined} context Context information for the translators.
135
+ * @param {string} domain Domain to retrieve the translated text.
136
+ */
137
+ handle: function handle(translation, single, plural, number, context, domain) {
138
+ // Adjust inputs to expected format.
139
+ if (typeof domain === 'undefined') {
140
+ domain = '';
141
+ }
142
+
143
+ if (typeof context === 'undefined') {
144
+ context = '';
145
+ } // Assume we're using plural for now.
146
+
147
+
148
+ var compositeKey = domain + '|' + plural + '|' + context; // Revert to the single form if required.
149
+
150
+ if (number === undefined || number === 1) {
151
+ compositeKey = domain + '|' + single + '|' + context;
152
+ }
153
+ /**
154
+ * Look for replacements, and use them if configured.
155
+ */
156
+
157
+
158
+ if (lodash__WEBPACK_IMPORTED_MODULE_0__["has"](window.say_what_data.replacements, compositeKey)) {
159
+ return window.say_what_data.replacements[compositeKey];
160
+ } // No replacement. Return the value unchanged.
161
+
162
+
163
+ return translation;
164
+ }
165
+ };
166
+ /**
167
+ * Attach filters.
168
+ */
169
+
170
+ wp.hooks.addFilter('i18n.gettext', 'say-what', sayWhat.gettext, 99);
171
+ wp.hooks.addFilter('i18n.ngettext', 'say-what', sayWhat.ngettext, 99);
172
+ wp.hooks.addFilter('i18n.gettext_with_context', 'say-what', sayWhat.gettext_with_context, 99);
173
+ wp.hooks.addFilter('i18n.ngettext_with_context', 'say-what', sayWhat.ngettext_with_context, 99);
174
+ wp.hooks.addFilter('i18n.has_translation', 'say-what', sayWhat.has_translation, 99);
175
+
176
+ /***/ }),
177
+
178
+ /***/ "@wordpress/hooks":
179
+ /*!*******************************!*\
180
+ !*** external ["wp","hooks"] ***!
181
+ \*******************************/
182
+ /*! no static exports found */
183
+ /***/ (function(module, exports) {
184
+
185
+ (function() { module.exports = window["wp"]["hooks"]; }());
186
+
187
+ /***/ }),
188
+
189
+ /***/ "lodash":
190
+ /*!*************************!*\
191
+ !*** external "lodash" ***!
192
+ \*************************/
193
+ /*! no static exports found */
194
+ /***/ (function(module, exports) {
195
+
196
+ (function() { module.exports = window["lodash"]; }());
197
+
198
+ /***/ })
199
+
200
+ /******/ });
201
+ //# sourceMappingURL=frontend.js.map
assets/build/frontend.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/src/frontend/index.js","webpack:///external [\"wp\",\"hooks\"]","webpack:///external \"lodash\""],"names":["sayWhat","gettext","translation","text","domain","handle","undefined","gettext_with_context","context","ngettext","single","plural","number","ngettext_with_context","has_translation","result","swpHasReplacement","compositeKey","lodash","window","say_what_data","replacements","wp","hooks","addFilter"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;CAGA;;AACA,IAAMA,OAAO,GAAG;AACf;AACAC,SAFe,mBAENC,WAFM,EAEOC,IAFP,EAEaC,MAFb,EAEsB;AACpC,WAAOJ,OAAO,CAACK,MAAR,CACNH,WADM,EAENC,IAFM,EAGNA,IAHM,EAING,SAJM,EAKNA,SALM,EAMNF,MANM,CAAP;AAQA,GAXc;AAYfG,sBAZe,gCAYOL,WAZP,EAYoBC,IAZpB,EAY0BK,OAZ1B,EAYmCJ,MAZnC,EAY4C;AAC1D,WAAOJ,OAAO,CAACK,MAAR,CACNH,WADM,EAENC,IAFM,EAGNA,IAHM,EAING,SAJM,EAKNE,OALM,EAMNJ,MANM,CAAP;AAQA,GArBc;AAsBfK,UAtBe,oBAsBLP,WAtBK,EAsBQQ,MAtBR,EAsBgBC,MAtBhB,EAsBwBC,MAtBxB,EAsBgCR,MAtBhC,EAsByC;AACvD,WAAOJ,OAAO,CAACK,MAAR,CACNH,WADM,EAENQ,MAFM,EAGNC,MAHM,EAINC,MAJM,EAKNN,SALM,EAMNF,MANM,CAAP;AAQA,GA/Bc;AAgCfS,uBAhCe,iCAiCdX,WAjCc,EAkCdQ,MAlCc,EAmCdC,MAnCc,EAoCdC,MApCc,EAqCdJ,OArCc,EAsCdJ,MAtCc,EAuCb;AACD,WAAOJ,OAAO,CAACK,MAAR,CACNH,WADM,EAENQ,MAFM,EAGNC,MAHM,EAINC,MAJM,EAKNJ,OALM,EAMNJ,MANM,CAAP;AAQA,GAhDc;AAiDfU,iBAjDe,2BAiDEC,MAjDF,EAiDUL,MAjDV,EAiDkBF,OAjDlB,EAiD2BJ,MAjD3B,EAiDoC;AAClD,QAAMY,iBAAiB,GACtBhB,OAAO,CAACK,MAAR,CACCK,MADD,EAECA,MAFD,EAGCA,MAHD,EAICJ,SAJD,EAKCE,OALD,EAMCJ,MAND,MAOMM,MARP;AASA,WAAOK,MAAM,IAAIC,iBAAjB;AACA,GA5Dc;;AA6Df;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACCX,QA1Ee,kBA0EPH,WA1EO,EA0EMQ,MA1EN,EA0EcC,MA1Ed,EA0EsBC,MA1EtB,EA0E8BJ,OA1E9B,EA0EuCJ,MA1EvC,EA0EgD;AAC9D;AACA,QAAK,OAAOA,MAAP,KAAkB,WAAvB,EAAqC;AACpCA,YAAM,GAAG,EAAT;AACA;;AACD,QAAK,OAAOI,OAAP,KAAmB,WAAxB,EAAsC;AACrCA,aAAO,GAAG,EAAV;AACA,KAP6D,CAS9D;;;AACA,QAAIS,YAAY,GAAGb,MAAM,GAAG,GAAT,GAAeO,MAAf,GAAwB,GAAxB,GAA8BH,OAAjD,CAV8D,CAW9D;;AACA,QAAKI,MAAM,KAAKN,SAAX,IAAwBM,MAAM,KAAK,CAAxC,EAA4C;AAC3CK,kBAAY,GAAGb,MAAM,GAAG,GAAT,GAAeM,MAAf,GAAwB,GAAxB,GAA8BF,OAA7C;AACA;AAED;AACF;AACA;;;AACE,QAAKU,0CAAA,CAAYC,MAAM,CAACC,aAAP,CAAqBC,YAAjC,EAA+CJ,YAA/C,CAAL,EAAqE;AACpE,aAAOE,MAAM,CAACC,aAAP,CAAqBC,YAArB,CAAmCJ,YAAnC,CAAP;AACA,KArB6D,CAuB9D;;;AACA,WAAOf,WAAP;AACA;AAnGc,CAAhB;AAsGA;AACA;AACA;;AACAoB,EAAE,CAACC,KAAH,CAASC,SAAT,CAAoB,cAApB,EAAoC,UAApC,EAAgDxB,OAAO,CAACC,OAAxD,EAAiE,EAAjE;AACAqB,EAAE,CAACC,KAAH,CAASC,SAAT,CAAoB,eAApB,EAAqC,UAArC,EAAiDxB,OAAO,CAACS,QAAzD,EAAmE,EAAnE;AACAa,EAAE,CAACC,KAAH,CAASC,SAAT,CACC,2BADD,EAEC,UAFD,EAGCxB,OAAO,CAACO,oBAHT,EAIC,EAJD;AAMAe,EAAE,CAACC,KAAH,CAASC,SAAT,CACC,4BADD,EAEC,UAFD,EAGCxB,OAAO,CAACa,qBAHT,EAIC,EAJD;AAMAS,EAAE,CAACC,KAAH,CAASC,SAAT,CACC,sBADD,EAEC,UAFD,EAGCxB,OAAO,CAACc,eAHT,EAIC,EAJD,E;;;;;;;;;;;AC3HA,aAAa,wCAAwC,EAAE,I;;;;;;;;;;;ACAvD,aAAa,mCAAmC,EAAE,I","file":"frontend.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./assets/src/frontend/index.js\");\n","import * as lodash from 'lodash';\nimport '@wordpress/hooks';\n\n// Initialise\nconst sayWhat = {\n\t// Filter callbacks for each translation call. Uses handle() to do the heavy lifting.\n\tgettext( translation, text, domain ) {\n\t\treturn sayWhat.handle(\n\t\t\ttranslation,\n\t\t\ttext,\n\t\t\ttext,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tdomain\n\t\t);\n\t},\n\tgettext_with_context( translation, text, context, domain ) {\n\t\treturn sayWhat.handle(\n\t\t\ttranslation,\n\t\t\ttext,\n\t\t\ttext,\n\t\t\tundefined,\n\t\t\tcontext,\n\t\t\tdomain\n\t\t);\n\t},\n\tngettext( translation, single, plural, number, domain ) {\n\t\treturn sayWhat.handle(\n\t\t\ttranslation,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber,\n\t\t\tundefined,\n\t\t\tdomain\n\t\t);\n\t},\n\tngettext_with_context(\n\t\ttranslation,\n\t\tsingle,\n\t\tplural,\n\t\tnumber,\n\t\tcontext,\n\t\tdomain\n\t) {\n\t\treturn sayWhat.handle(\n\t\t\ttranslation,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber,\n\t\t\tcontext,\n\t\t\tdomain\n\t\t);\n\t},\n\thas_translation( result, single, context, domain ) {\n\t\tconst swpHasReplacement =\n\t\t\tsayWhat.handle(\n\t\t\t\tsingle,\n\t\t\t\tsingle,\n\t\t\t\tsingle,\n\t\t\t\tundefined,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t) !== single;\n\t\treturn result || swpHasReplacement;\n\t},\n\t/**\n\t * Handle a call to a translation function.\n\t *\n\t * Looks for a replacement and filters the return value if required. If String Discovery is active\n\t * also check whether this is a known available string or not, and queues discovery if not.\n\t *\n\t * @param {string} translation The translated string.\n\t * @param {string} single Text to translate if non-plural.\n\t * @param {string} plural Text to translate if plural.\n\t * @param {string|undefined} number The number used to decide on plural/non-plural.\n\t * @param {string|undefined} context Context information for the translators.\n\t * @param {string} domain Domain to retrieve the translated text.\n\t */\n\thandle( translation, single, plural, number, context, domain ) {\n\t\t// Adjust inputs to expected format.\n\t\tif ( typeof domain === 'undefined' ) {\n\t\t\tdomain = '';\n\t\t}\n\t\tif ( typeof context === 'undefined' ) {\n\t\t\tcontext = '';\n\t\t}\n\n\t\t// Assume we're using plural for now.\n\t\tlet compositeKey = domain + '|' + plural + '|' + context;\n\t\t// Revert to the single form if required.\n\t\tif ( number === undefined || number === 1 ) {\n\t\t\tcompositeKey = domain + '|' + single + '|' + context;\n\t\t}\n\n\t\t/**\n\t\t * Look for replacements, and use them if configured.\n\t\t */\n\t\tif ( lodash.has( window.say_what_data.replacements, compositeKey ) ) {\n\t\t\treturn window.say_what_data.replacements[ compositeKey ];\n\t\t}\n\n\t\t// No replacement. Return the value unchanged.\n\t\treturn translation;\n\t},\n};\n\n/**\n * Attach filters.\n */\nwp.hooks.addFilter( 'i18n.gettext', 'say-what', sayWhat.gettext, 99 );\nwp.hooks.addFilter( 'i18n.ngettext', 'say-what', sayWhat.ngettext, 99 );\nwp.hooks.addFilter(\n\t'i18n.gettext_with_context',\n\t'say-what',\n\tsayWhat.gettext_with_context,\n\t99\n);\nwp.hooks.addFilter(\n\t'i18n.ngettext_with_context',\n\t'say-what',\n\tsayWhat.ngettext_with_context,\n\t99\n);\nwp.hooks.addFilter(\n\t'i18n.has_translation',\n\t'say-what',\n\tsayWhat.has_translation,\n\t99\n);\n","(function() { module.exports = window[\"wp\"][\"hooks\"]; }());","(function() { module.exports = window[\"lodash\"]; }());"],"sourceRoot":""}
assets/src/frontend/index.js ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as lodash from 'lodash';
2
+ import '@wordpress/hooks';
3
+
4
+ // Initialise
5
+ const sayWhat = {
6
+ // Filter callbacks for each translation call. Uses handle() to do the heavy lifting.
7
+ gettext( translation, text, domain ) {
8
+ return sayWhat.handle(
9
+ translation,
10
+ text,
11
+ text,
12
+ undefined,
13
+ undefined,
14
+ domain
15
+ );
16
+ },
17
+ gettext_with_context( translation, text, context, domain ) {
18
+ return sayWhat.handle(
19
+ translation,
20
+ text,
21
+ text,
22
+ undefined,
23
+ context,
24
+ domain
25
+ );
26
+ },
27
+ ngettext( translation, single, plural, number, domain ) {
28
+ return sayWhat.handle(
29
+ translation,
30
+ single,
31
+ plural,
32
+ number,
33
+ undefined,
34
+ domain
35
+ );
36
+ },
37
+ ngettext_with_context(
38
+ translation,
39
+ single,
40
+ plural,
41
+ number,
42
+ context,
43
+ domain
44
+ ) {
45
+ return sayWhat.handle(
46
+ translation,
47
+ single,
48
+ plural,
49
+ number,
50
+ context,
51
+ domain
52
+ );
53
+ },
54
+ has_translation( result, single, context, domain ) {
55
+ const swpHasReplacement =
56
+ sayWhat.handle(
57
+ single,
58
+ single,
59
+ single,
60
+ undefined,
61
+ context,
62
+ domain
63
+ ) !== single;
64
+ return result || swpHasReplacement;
65
+ },
66
+ /**
67
+ * Handle a call to a translation function.
68
+ *
69
+ * Looks for a replacement and filters the return value if required. If String Discovery is active
70
+ * also check whether this is a known available string or not, and queues discovery if not.
71
+ *
72
+ * @param {string} translation The translated string.
73
+ * @param {string} single Text to translate if non-plural.
74
+ * @param {string} plural Text to translate if plural.
75
+ * @param {string|undefined} number The number used to decide on plural/non-plural.
76
+ * @param {string|undefined} context Context information for the translators.
77
+ * @param {string} domain Domain to retrieve the translated text.
78
+ */
79
+ handle( translation, single, plural, number, context, domain ) {
80
+ // Adjust inputs to expected format.
81
+ if ( typeof domain === 'undefined' ) {
82
+ domain = '';
83
+ }
84
+ if ( typeof context === 'undefined' ) {
85
+ context = '';
86
+ }
87
+
88
+ // Assume we're using plural for now.
89
+ let compositeKey = domain + '|' + plural + '|' + context;
90
+ // Revert to the single form if required.
91
+ if ( number === undefined || number === 1 ) {
92
+ compositeKey = domain + '|' + single + '|' + context;
93
+ }
94
+
95
+ /**
96
+ * Look for replacements, and use them if configured.
97
+ */
98
+ if ( lodash.has( window.say_what_data.replacements, compositeKey ) ) {
99
+ return window.say_what_data.replacements[ compositeKey ];
100
+ }
101
+
102
+ // No replacement. Return the value unchanged.
103
+ return translation;
104
+ },
105
+ };
106
+
107
+ /**
108
+ * Attach filters.
109
+ */
110
+ wp.hooks.addFilter( 'i18n.gettext', 'say-what', sayWhat.gettext, 99 );
111
+ wp.hooks.addFilter( 'i18n.ngettext', 'say-what', sayWhat.ngettext, 99 );
112
+ wp.hooks.addFilter(
113
+ 'i18n.gettext_with_context',
114
+ 'say-what',
115
+ sayWhat.gettext_with_context,
116
+ 99
117
+ );
118
+ wp.hooks.addFilter(
119
+ 'i18n.ngettext_with_context',
120
+ 'say-what',
121
+ sayWhat.ngettext_with_context,
122
+ 99
123
+ );
124
+ wp.hooks.addFilter(
125
+ 'i18n.has_translation',
126
+ 'say-what',
127
+ sayWhat.has_translation,
128
+ 99
129
+ );
css/admin.css CHANGED
@@ -72,10 +72,11 @@
72
  margin: 4px;
73
  }
74
 
75
- .swp-cpw .button:hover {
76
  background-color: #0c9e77;
77
  border-color: #0c9e77;
78
  }
 
79
  .swp-cpw .button {
80
  color: #fff !important;
81
  text-decoration: none;
72
  margin: 4px;
73
  }
74
 
75
+ .swp-cpw .button:hover, .swp-cpw .button:active, .swp-cpw .button:focus {
76
  background-color: #0c9e77;
77
  border-color: #0c9e77;
78
  }
79
+
80
  .swp-cpw .button {
81
  color: #fff !important;
82
  text-decoration: none;
html/say-what-admin-addedit.php CHANGED
@@ -1,4 +1,3 @@
1
-
2
  <div class="wrap">
3
  <div id="icon-tools" class="icon32"></div>
4
  <h2><?php _e( 'Text changes', 'say-what' ); ?></h2>
 
1
  <div class="wrap">
2
  <div id="icon-tools" class="icon32"></div>
3
  <h2><?php _e( 'Text changes', 'say-what' ); ?></h2>
html/say-what-admin-list.php CHANGED
@@ -12,7 +12,7 @@
12
  <hr>
13
  <div class="swp-cpw">
14
  <div class="swp-img-container">
15
- <a href="https://ecologi.com/ademtisoftware?gift-trees" target="_blank" rel="noopener noreferrer nofollow">
16
  <img src="<?php echo esc_attr( plugins_url( 'say-what/img/cpw.png' ) ); ?>"
17
  alt="We're a climate positive workforce">
18
  </a>
@@ -20,7 +20,7 @@
20
  <div class="swp-intro-container">
21
  <p class="swp-intro">Using this plugin on your live site? Please buy the world some trees...</p>
22
  <div><a class="button" target="_blank" rel="noopener noreferrer nofollow"
23
- href="https://ecologi.com/ademtisoftware?gift-trees">Support this free plugin by planting trees</a></div>
24
  </div>
25
  <div class="swp-content-container">
26
  <p>It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our
@@ -30,7 +30,7 @@
30
  <p>As a business, we already donate a percentage of our profits from premium plugins to global climate
31
  change projects. You're free to use package free of charge, but if you do, please consider <a
32
  target="_blank" rel="noopener noreferrer nofollow"
33
- href="https://ecologi.com/ademtisoftware?gift-trees">buying the world some trees</a> in return.
34
  You’ll be creating employment for local families and restoring wildlife habitats.</p>
35
  </div>
36
  </div>
12
  <hr>
13
  <div class="swp-cpw">
14
  <div class="swp-img-container">
15
+ <a href="https://ecologi.com/ademtisoftware?gift-trees&amp;r=ademtisoftware" target="_blank" rel="noopener noreferrer nofollow">
16
  <img src="<?php echo esc_attr( plugins_url( 'say-what/img/cpw.png' ) ); ?>"
17
  alt="We're a climate positive workforce">
18
  </a>
20
  <div class="swp-intro-container">
21
  <p class="swp-intro">Using this plugin on your live site? Please buy the world some trees...</p>
22
  <div><a class="button" target="_blank" rel="noopener noreferrer nofollow"
23
+ href="https://ecologi.com/ademtisoftware?gift-trees&amp;r=ademtisoftware">Support this free plugin by planting trees</a></div>
24
  </div>
25
  <div class="swp-content-container">
26
  <p>It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our
30
  <p>As a business, we already donate a percentage of our profits from premium plugins to global climate
31
  change projects. You're free to use package free of charge, but if you do, please consider <a
32
  target="_blank" rel="noopener noreferrer nofollow"
33
+ href="https://ecologi.com/ademtisoftware?gift-trees&amp;r=ademtisoftware">buying the world some trees</a> in return.
34
  You’ll be creating employment for local families and restoring wildlife habitats.</p>
35
  </div>
36
  </div>
img/bg.jpg ADDED
Binary file
img/cpw-banner.png ADDED
Binary file
node_modules/lodash/LICENSE ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
2
+
3
+ Based on Underscore.js, copyright Jeremy Ashkenas,
4
+ DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
5
+
6
+ This software consists of voluntary contributions made by many
7
+ individuals. For exact contribution history, see the revision history
8
+ available at https://github.com/lodash/lodash
9
+
10
+ The following license applies to all parts of this software except as
11
+ documented below:
12
+
13
+ ====
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining
16
+ a copy of this software and associated documentation files (the
17
+ "Software"), to deal in the Software without restriction, including
18
+ without limitation the rights to use, copy, modify, merge, publish,
19
+ distribute, sublicense, and/or sell copies of the Software, and to
20
+ permit persons to whom the Software is furnished to do so, subject to
21
+ the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be
24
+ included in all copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
+
34
+ ====
35
+
36
+ Copyright and related rights for sample code are waived via CC0. Sample
37
+ code is defined as all source code displayed within the prose of the
38
+ documentation.
39
+
40
+ CC0: http://creativecommons.org/publicdomain/zero/1.0/
41
+
42
+ ====
43
+
44
+ Files located in the node_modules and vendor directories are externally
45
+ maintained libraries used by this software which have their own
46
+ licenses; we recommend you read them, as their terms may differ from the
47
+ terms above.
node_modules/lodash/README.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # lodash v4.17.20
2
+
3
+ The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
4
+
5
+ ## Installation
6
+
7
+ Using npm:
8
+ ```shell
9
+ $ npm i -g npm
10
+ $ npm i --save lodash
11
+ ```
12
+
13
+ In Node.js:
14
+ ```js
15
+ // Load the full build.
16
+ var _ = require('lodash');
17
+ // Load the core build.
18
+ var _ = require('lodash/core');
19
+ // Load the FP build for immutable auto-curried iteratee-first data-last methods.
20
+ var fp = require('lodash/fp');
21
+
22
+ // Load method categories.
23
+ var array = require('lodash/array');
24
+ var object = require('lodash/fp/object');
25
+
26
+ // Cherry-pick methods for smaller browserify/rollup/webpack bundles.
27
+ var at = require('lodash/at');
28
+ var curryN = require('lodash/fp/curryN');
29
+ ```
30
+
31
+ See the [package source](https://github.com/lodash/lodash/tree/4.17.20-npm) for more details.
32
+
33
+ **Note:**<br>
34
+ Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL.
35
+
36
+ ## Support
37
+
38
+ Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.<br>
39
+ Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available.
node_modules/lodash/_DataView.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative'),
2
+ root = require('./_root');
3
+
4
+ /* Built-in method references that are verified to be native. */
5
+ var DataView = getNative(root, 'DataView');
6
+
7
+ module.exports = DataView;
node_modules/lodash/_Hash.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var hashClear = require('./_hashClear'),
2
+ hashDelete = require('./_hashDelete'),
3
+ hashGet = require('./_hashGet'),
4
+ hashHas = require('./_hashHas'),
5
+ hashSet = require('./_hashSet');
6
+
7
+ /**
8
+ * Creates a hash object.
9
+ *
10
+ * @private
11
+ * @constructor
12
+ * @param {Array} [entries] The key-value pairs to cache.
13
+ */
14
+ function Hash(entries) {
15
+ var index = -1,
16
+ length = entries == null ? 0 : entries.length;
17
+
18
+ this.clear();
19
+ while (++index < length) {
20
+ var entry = entries[index];
21
+ this.set(entry[0], entry[1]);
22
+ }
23
+ }
24
+
25
+ // Add methods to `Hash`.
26
+ Hash.prototype.clear = hashClear;
27
+ Hash.prototype['delete'] = hashDelete;
28
+ Hash.prototype.get = hashGet;
29
+ Hash.prototype.has = hashHas;
30
+ Hash.prototype.set = hashSet;
31
+
32
+ module.exports = Hash;
node_modules/lodash/_LazyWrapper.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseCreate = require('./_baseCreate'),
2
+ baseLodash = require('./_baseLodash');
3
+
4
+ /** Used as references for the maximum length and index of an array. */
5
+ var MAX_ARRAY_LENGTH = 4294967295;
6
+
7
+ /**
8
+ * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
9
+ *
10
+ * @private
11
+ * @constructor
12
+ * @param {*} value The value to wrap.
13
+ */
14
+ function LazyWrapper(value) {
15
+ this.__wrapped__ = value;
16
+ this.__actions__ = [];
17
+ this.__dir__ = 1;
18
+ this.__filtered__ = false;
19
+ this.__iteratees__ = [];
20
+ this.__takeCount__ = MAX_ARRAY_LENGTH;
21
+ this.__views__ = [];
22
+ }
23
+
24
+ // Ensure `LazyWrapper` is an instance of `baseLodash`.
25
+ LazyWrapper.prototype = baseCreate(baseLodash.prototype);
26
+ LazyWrapper.prototype.constructor = LazyWrapper;
27
+
28
+ module.exports = LazyWrapper;
node_modules/lodash/_ListCache.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var listCacheClear = require('./_listCacheClear'),
2
+ listCacheDelete = require('./_listCacheDelete'),
3
+ listCacheGet = require('./_listCacheGet'),
4
+ listCacheHas = require('./_listCacheHas'),
5
+ listCacheSet = require('./_listCacheSet');
6
+
7
+ /**
8
+ * Creates an list cache object.
9
+ *
10
+ * @private
11
+ * @constructor
12
+ * @param {Array} [entries] The key-value pairs to cache.
13
+ */
14
+ function ListCache(entries) {
15
+ var index = -1,
16
+ length = entries == null ? 0 : entries.length;
17
+
18
+ this.clear();
19
+ while (++index < length) {
20
+ var entry = entries[index];
21
+ this.set(entry[0], entry[1]);
22
+ }
23
+ }
24
+
25
+ // Add methods to `ListCache`.
26
+ ListCache.prototype.clear = listCacheClear;
27
+ ListCache.prototype['delete'] = listCacheDelete;
28
+ ListCache.prototype.get = listCacheGet;
29
+ ListCache.prototype.has = listCacheHas;
30
+ ListCache.prototype.set = listCacheSet;
31
+
32
+ module.exports = ListCache;
node_modules/lodash/_LodashWrapper.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseCreate = require('./_baseCreate'),
2
+ baseLodash = require('./_baseLodash');
3
+
4
+ /**
5
+ * The base constructor for creating `lodash` wrapper objects.
6
+ *
7
+ * @private
8
+ * @param {*} value The value to wrap.
9
+ * @param {boolean} [chainAll] Enable explicit method chain sequences.
10
+ */
11
+ function LodashWrapper(value, chainAll) {
12
+ this.__wrapped__ = value;
13
+ this.__actions__ = [];
14
+ this.__chain__ = !!chainAll;
15
+ this.__index__ = 0;
16
+ this.__values__ = undefined;
17
+ }
18
+
19
+ LodashWrapper.prototype = baseCreate(baseLodash.prototype);
20
+ LodashWrapper.prototype.constructor = LodashWrapper;
21
+
22
+ module.exports = LodashWrapper;
node_modules/lodash/_Map.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative'),
2
+ root = require('./_root');
3
+
4
+ /* Built-in method references that are verified to be native. */
5
+ var Map = getNative(root, 'Map');
6
+
7
+ module.exports = Map;
node_modules/lodash/_MapCache.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var mapCacheClear = require('./_mapCacheClear'),
2
+ mapCacheDelete = require('./_mapCacheDelete'),
3
+ mapCacheGet = require('./_mapCacheGet'),
4
+ mapCacheHas = require('./_mapCacheHas'),
5
+ mapCacheSet = require('./_mapCacheSet');
6
+
7
+ /**
8
+ * Creates a map cache object to store key-value pairs.
9
+ *
10
+ * @private
11
+ * @constructor
12
+ * @param {Array} [entries] The key-value pairs to cache.
13
+ */
14
+ function MapCache(entries) {
15
+ var index = -1,
16
+ length = entries == null ? 0 : entries.length;
17
+
18
+ this.clear();
19
+ while (++index < length) {
20
+ var entry = entries[index];
21
+ this.set(entry[0], entry[1]);
22
+ }
23
+ }
24
+
25
+ // Add methods to `MapCache`.
26
+ MapCache.prototype.clear = mapCacheClear;
27
+ MapCache.prototype['delete'] = mapCacheDelete;
28
+ MapCache.prototype.get = mapCacheGet;
29
+ MapCache.prototype.has = mapCacheHas;
30
+ MapCache.prototype.set = mapCacheSet;
31
+
32
+ module.exports = MapCache;
node_modules/lodash/_Promise.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative'),
2
+ root = require('./_root');
3
+
4
+ /* Built-in method references that are verified to be native. */
5
+ var Promise = getNative(root, 'Promise');
6
+
7
+ module.exports = Promise;
node_modules/lodash/_Set.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative'),
2
+ root = require('./_root');
3
+
4
+ /* Built-in method references that are verified to be native. */
5
+ var Set = getNative(root, 'Set');
6
+
7
+ module.exports = Set;
node_modules/lodash/_SetCache.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var MapCache = require('./_MapCache'),
2
+ setCacheAdd = require('./_setCacheAdd'),
3
+ setCacheHas = require('./_setCacheHas');
4
+
5
+ /**
6
+ *
7
+ * Creates an array cache object to store unique values.
8
+ *
9
+ * @private
10
+ * @constructor
11
+ * @param {Array} [values] The values to cache.
12
+ */
13
+ function SetCache(values) {
14
+ var index = -1,
15
+ length = values == null ? 0 : values.length;
16
+
17
+ this.__data__ = new MapCache;
18
+ while (++index < length) {
19
+ this.add(values[index]);
20
+ }
21
+ }
22
+
23
+ // Add methods to `SetCache`.
24
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
25
+ SetCache.prototype.has = setCacheHas;
26
+
27
+ module.exports = SetCache;
node_modules/lodash/_Stack.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var ListCache = require('./_ListCache'),
2
+ stackClear = require('./_stackClear'),
3
+ stackDelete = require('./_stackDelete'),
4
+ stackGet = require('./_stackGet'),
5
+ stackHas = require('./_stackHas'),
6
+ stackSet = require('./_stackSet');
7
+
8
+ /**
9
+ * Creates a stack cache object to store key-value pairs.
10
+ *
11
+ * @private
12
+ * @constructor
13
+ * @param {Array} [entries] The key-value pairs to cache.
14
+ */
15
+ function Stack(entries) {
16
+ var data = this.__data__ = new ListCache(entries);
17
+ this.size = data.size;
18
+ }
19
+
20
+ // Add methods to `Stack`.
21
+ Stack.prototype.clear = stackClear;
22
+ Stack.prototype['delete'] = stackDelete;
23
+ Stack.prototype.get = stackGet;
24
+ Stack.prototype.has = stackHas;
25
+ Stack.prototype.set = stackSet;
26
+
27
+ module.exports = Stack;
node_modules/lodash/_Symbol.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var root = require('./_root');
2
+
3
+ /** Built-in value references. */
4
+ var Symbol = root.Symbol;
5
+
6
+ module.exports = Symbol;
node_modules/lodash/_Uint8Array.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var root = require('./_root');
2
+
3
+ /** Built-in value references. */
4
+ var Uint8Array = root.Uint8Array;
5
+
6
+ module.exports = Uint8Array;
node_modules/lodash/_WeakMap.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative'),
2
+ root = require('./_root');
3
+
4
+ /* Built-in method references that are verified to be native. */
5
+ var WeakMap = getNative(root, 'WeakMap');
6
+
7
+ module.exports = WeakMap;
node_modules/lodash/_apply.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A faster alternative to `Function#apply`, this function invokes `func`
3
+ * with the `this` binding of `thisArg` and the arguments of `args`.
4
+ *
5
+ * @private
6
+ * @param {Function} func The function to invoke.
7
+ * @param {*} thisArg The `this` binding of `func`.
8
+ * @param {Array} args The arguments to invoke `func` with.
9
+ * @returns {*} Returns the result of `func`.
10
+ */
11
+ function apply(func, thisArg, args) {
12
+ switch (args.length) {
13
+ case 0: return func.call(thisArg);
14
+ case 1: return func.call(thisArg, args[0]);
15
+ case 2: return func.call(thisArg, args[0], args[1]);
16
+ case 3: return func.call(thisArg, args[0], args[1], args[2]);
17
+ }
18
+ return func.apply(thisArg, args);
19
+ }
20
+
21
+ module.exports = apply;
node_modules/lodash/_arrayAggregator.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `baseAggregator` for arrays.
3
+ *
4
+ * @private
5
+ * @param {Array} [array] The array to iterate over.
6
+ * @param {Function} setter The function to set `accumulator` values.
7
+ * @param {Function} iteratee The iteratee to transform keys.
8
+ * @param {Object} accumulator The initial aggregated object.
9
+ * @returns {Function} Returns `accumulator`.
10
+ */
11
+ function arrayAggregator(array, setter, iteratee, accumulator) {
12
+ var index = -1,
13
+ length = array == null ? 0 : array.length;
14
+
15
+ while (++index < length) {
16
+ var value = array[index];
17
+ setter(accumulator, value, iteratee(value), array);
18
+ }
19
+ return accumulator;
20
+ }
21
+
22
+ module.exports = arrayAggregator;
node_modules/lodash/_arrayEach.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.forEach` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @returns {Array} Returns `array`.
9
+ */
10
+ function arrayEach(array, iteratee) {
11
+ var index = -1,
12
+ length = array == null ? 0 : array.length;
13
+
14
+ while (++index < length) {
15
+ if (iteratee(array[index], index, array) === false) {
16
+ break;
17
+ }
18
+ }
19
+ return array;
20
+ }
21
+
22
+ module.exports = arrayEach;
node_modules/lodash/_arrayEachRight.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.forEachRight` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @returns {Array} Returns `array`.
9
+ */
10
+ function arrayEachRight(array, iteratee) {
11
+ var length = array == null ? 0 : array.length;
12
+
13
+ while (length--) {
14
+ if (iteratee(array[length], length, array) === false) {
15
+ break;
16
+ }
17
+ }
18
+ return array;
19
+ }
20
+
21
+ module.exports = arrayEachRight;
node_modules/lodash/_arrayEvery.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.every` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} predicate The function invoked per iteration.
8
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
9
+ * else `false`.
10
+ */
11
+ function arrayEvery(array, predicate) {
12
+ var index = -1,
13
+ length = array == null ? 0 : array.length;
14
+
15
+ while (++index < length) {
16
+ if (!predicate(array[index], index, array)) {
17
+ return false;
18
+ }
19
+ }
20
+ return true;
21
+ }
22
+
23
+ module.exports = arrayEvery;
node_modules/lodash/_arrayFilter.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.filter` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} predicate The function invoked per iteration.
8
+ * @returns {Array} Returns the new filtered array.
9
+ */
10
+ function arrayFilter(array, predicate) {
11
+ var index = -1,
12
+ length = array == null ? 0 : array.length,
13
+ resIndex = 0,
14
+ result = [];
15
+
16
+ while (++index < length) {
17
+ var value = array[index];
18
+ if (predicate(value, index, array)) {
19
+ result[resIndex++] = value;
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+
25
+ module.exports = arrayFilter;
node_modules/lodash/_arrayIncludes.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIndexOf = require('./_baseIndexOf');
2
+
3
+ /**
4
+ * A specialized version of `_.includes` for arrays without support for
5
+ * specifying an index to search from.
6
+ *
7
+ * @private
8
+ * @param {Array} [array] The array to inspect.
9
+ * @param {*} target The value to search for.
10
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
11
+ */
12
+ function arrayIncludes(array, value) {
13
+ var length = array == null ? 0 : array.length;
14
+ return !!length && baseIndexOf(array, value, 0) > -1;
15
+ }
16
+
17
+ module.exports = arrayIncludes;
node_modules/lodash/_arrayIncludesWith.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This function is like `arrayIncludes` except that it accepts a comparator.
3
+ *
4
+ * @private
5
+ * @param {Array} [array] The array to inspect.
6
+ * @param {*} target The value to search for.
7
+ * @param {Function} comparator The comparator invoked per element.
8
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
9
+ */
10
+ function arrayIncludesWith(array, value, comparator) {
11
+ var index = -1,
12
+ length = array == null ? 0 : array.length;
13
+
14
+ while (++index < length) {
15
+ if (comparator(value, array[index])) {
16
+ return true;
17
+ }
18
+ }
19
+ return false;
20
+ }
21
+
22
+ module.exports = arrayIncludesWith;
node_modules/lodash/_arrayLikeKeys.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseTimes = require('./_baseTimes'),
2
+ isArguments = require('./isArguments'),
3
+ isArray = require('./isArray'),
4
+ isBuffer = require('./isBuffer'),
5
+ isIndex = require('./_isIndex'),
6
+ isTypedArray = require('./isTypedArray');
7
+
8
+ /** Used for built-in method references. */
9
+ var objectProto = Object.prototype;
10
+
11
+ /** Used to check objects for own properties. */
12
+ var hasOwnProperty = objectProto.hasOwnProperty;
13
+
14
+ /**
15
+ * Creates an array of the enumerable property names of the array-like `value`.
16
+ *
17
+ * @private
18
+ * @param {*} value The value to query.
19
+ * @param {boolean} inherited Specify returning inherited property names.
20
+ * @returns {Array} Returns the array of property names.
21
+ */
22
+ function arrayLikeKeys(value, inherited) {
23
+ var isArr = isArray(value),
24
+ isArg = !isArr && isArguments(value),
25
+ isBuff = !isArr && !isArg && isBuffer(value),
26
+ isType = !isArr && !isArg && !isBuff && isTypedArray(value),
27
+ skipIndexes = isArr || isArg || isBuff || isType,
28
+ result = skipIndexes ? baseTimes(value.length, String) : [],
29
+ length = result.length;
30
+
31
+ for (var key in value) {
32
+ if ((inherited || hasOwnProperty.call(value, key)) &&
33
+ !(skipIndexes && (
34
+ // Safari 9 has enumerable `arguments.length` in strict mode.
35
+ key == 'length' ||
36
+ // Node.js 0.10 has enumerable non-index properties on buffers.
37
+ (isBuff && (key == 'offset' || key == 'parent')) ||
38
+ // PhantomJS 2 has enumerable non-index properties on typed arrays.
39
+ (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
40
+ // Skip index properties.
41
+ isIndex(key, length)
42
+ ))) {
43
+ result.push(key);
44
+ }
45
+ }
46
+ return result;
47
+ }
48
+
49
+ module.exports = arrayLikeKeys;
node_modules/lodash/_arrayMap.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.map` for arrays without support for iteratee
3
+ * shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @returns {Array} Returns the new mapped array.
9
+ */
10
+ function arrayMap(array, iteratee) {
11
+ var index = -1,
12
+ length = array == null ? 0 : array.length,
13
+ result = Array(length);
14
+
15
+ while (++index < length) {
16
+ result[index] = iteratee(array[index], index, array);
17
+ }
18
+ return result;
19
+ }
20
+
21
+ module.exports = arrayMap;
node_modules/lodash/_arrayPush.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Appends the elements of `values` to `array`.
3
+ *
4
+ * @private
5
+ * @param {Array} array The array to modify.
6
+ * @param {Array} values The values to append.
7
+ * @returns {Array} Returns `array`.
8
+ */
9
+ function arrayPush(array, values) {
10
+ var index = -1,
11
+ length = values.length,
12
+ offset = array.length;
13
+
14
+ while (++index < length) {
15
+ array[offset + index] = values[index];
16
+ }
17
+ return array;
18
+ }
19
+
20
+ module.exports = arrayPush;
node_modules/lodash/_arrayReduce.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.reduce` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @param {*} [accumulator] The initial value.
9
+ * @param {boolean} [initAccum] Specify using the first element of `array` as
10
+ * the initial value.
11
+ * @returns {*} Returns the accumulated value.
12
+ */
13
+ function arrayReduce(array, iteratee, accumulator, initAccum) {
14
+ var index = -1,
15
+ length = array == null ? 0 : array.length;
16
+
17
+ if (initAccum && length) {
18
+ accumulator = array[++index];
19
+ }
20
+ while (++index < length) {
21
+ accumulator = iteratee(accumulator, array[index], index, array);
22
+ }
23
+ return accumulator;
24
+ }
25
+
26
+ module.exports = arrayReduce;
node_modules/lodash/_arrayReduceRight.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.reduceRight` for arrays without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @param {*} [accumulator] The initial value.
9
+ * @param {boolean} [initAccum] Specify using the last element of `array` as
10
+ * the initial value.
11
+ * @returns {*} Returns the accumulated value.
12
+ */
13
+ function arrayReduceRight(array, iteratee, accumulator, initAccum) {
14
+ var length = array == null ? 0 : array.length;
15
+ if (initAccum && length) {
16
+ accumulator = array[--length];
17
+ }
18
+ while (length--) {
19
+ accumulator = iteratee(accumulator, array[length], length, array);
20
+ }
21
+ return accumulator;
22
+ }
23
+
24
+ module.exports = arrayReduceRight;
node_modules/lodash/_arraySample.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRandom = require('./_baseRandom');
2
+
3
+ /**
4
+ * A specialized version of `_.sample` for arrays.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to sample.
8
+ * @returns {*} Returns the random element.
9
+ */
10
+ function arraySample(array) {
11
+ var length = array.length;
12
+ return length ? array[baseRandom(0, length - 1)] : undefined;
13
+ }
14
+
15
+ module.exports = arraySample;
node_modules/lodash/_arraySampleSize.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClamp = require('./_baseClamp'),
2
+ copyArray = require('./_copyArray'),
3
+ shuffleSelf = require('./_shuffleSelf');
4
+
5
+ /**
6
+ * A specialized version of `_.sampleSize` for arrays.
7
+ *
8
+ * @private
9
+ * @param {Array} array The array to sample.
10
+ * @param {number} n The number of elements to sample.
11
+ * @returns {Array} Returns the random elements.
12
+ */
13
+ function arraySampleSize(array, n) {
14
+ return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
15
+ }
16
+
17
+ module.exports = arraySampleSize;
node_modules/lodash/_arrayShuffle.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyArray = require('./_copyArray'),
2
+ shuffleSelf = require('./_shuffleSelf');
3
+
4
+ /**
5
+ * A specialized version of `_.shuffle` for arrays.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to shuffle.
9
+ * @returns {Array} Returns the new shuffled array.
10
+ */
11
+ function arrayShuffle(array) {
12
+ return shuffleSelf(copyArray(array));
13
+ }
14
+
15
+ module.exports = arrayShuffle;
node_modules/lodash/_arraySome.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.some` for arrays without support for iteratee
3
+ * shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} [array] The array to iterate over.
7
+ * @param {Function} predicate The function invoked per iteration.
8
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
9
+ * else `false`.
10
+ */
11
+ function arraySome(array, predicate) {
12
+ var index = -1,
13
+ length = array == null ? 0 : array.length;
14
+
15
+ while (++index < length) {
16
+ if (predicate(array[index], index, array)) {
17
+ return true;
18
+ }
19
+ }
20
+ return false;
21
+ }
22
+
23
+ module.exports = arraySome;
node_modules/lodash/_asciiSize.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseProperty = require('./_baseProperty');
2
+
3
+ /**
4
+ * Gets the size of an ASCII `string`.
5
+ *
6
+ * @private
7
+ * @param {string} string The string inspect.
8
+ * @returns {number} Returns the string size.
9
+ */
10
+ var asciiSize = baseProperty('length');
11
+
12
+ module.exports = asciiSize;
node_modules/lodash/_asciiToArray.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Converts an ASCII `string` to an array.
3
+ *
4
+ * @private
5
+ * @param {string} string The string to convert.
6
+ * @returns {Array} Returns the converted array.
7
+ */
8
+ function asciiToArray(string) {
9
+ return string.split('');
10
+ }
11
+
12
+ module.exports = asciiToArray;
node_modules/lodash/_asciiWords.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to match words composed of alphanumeric characters. */
2
+ var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
3
+
4
+ /**
5
+ * Splits an ASCII `string` into an array of its words.
6
+ *
7
+ * @private
8
+ * @param {string} The string to inspect.
9
+ * @returns {Array} Returns the words of `string`.
10
+ */
11
+ function asciiWords(string) {
12
+ return string.match(reAsciiWord) || [];
13
+ }
14
+
15
+ module.exports = asciiWords;
node_modules/lodash/_assignMergeValue.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssignValue = require('./_baseAssignValue'),
2
+ eq = require('./eq');
3
+
4
+ /**
5
+ * This function is like `assignValue` except that it doesn't assign
6
+ * `undefined` values.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to modify.
10
+ * @param {string} key The key of the property to assign.
11
+ * @param {*} value The value to assign.
12
+ */
13
+ function assignMergeValue(object, key, value) {
14
+ if ((value !== undefined && !eq(object[key], value)) ||
15
+ (value === undefined && !(key in object))) {
16
+ baseAssignValue(object, key, value);
17
+ }
18
+ }
19
+
20
+ module.exports = assignMergeValue;
node_modules/lodash/_assignValue.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssignValue = require('./_baseAssignValue'),
2
+ eq = require('./eq');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /**
11
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
12
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13
+ * for equality comparisons.
14
+ *
15
+ * @private
16
+ * @param {Object} object The object to modify.
17
+ * @param {string} key The key of the property to assign.
18
+ * @param {*} value The value to assign.
19
+ */
20
+ function assignValue(object, key, value) {
21
+ var objValue = object[key];
22
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
23
+ (value === undefined && !(key in object))) {
24
+ baseAssignValue(object, key, value);
25
+ }
26
+ }
27
+
28
+ module.exports = assignValue;
node_modules/lodash/_assocIndexOf.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var eq = require('./eq');
2
+
3
+ /**
4
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to inspect.
8
+ * @param {*} key The key to search for.
9
+ * @returns {number} Returns the index of the matched value, else `-1`.
10
+ */
11
+ function assocIndexOf(array, key) {
12
+ var length = array.length;
13
+ while (length--) {
14
+ if (eq(array[length][0], key)) {
15
+ return length;
16
+ }
17
+ }
18
+ return -1;
19
+ }
20
+
21
+ module.exports = assocIndexOf;
node_modules/lodash/_baseAggregator.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseEach = require('./_baseEach');
2
+
3
+ /**
4
+ * Aggregates elements of `collection` on `accumulator` with keys transformed
5
+ * by `iteratee` and values set by `setter`.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to iterate over.
9
+ * @param {Function} setter The function to set `accumulator` values.
10
+ * @param {Function} iteratee The iteratee to transform keys.
11
+ * @param {Object} accumulator The initial aggregated object.
12
+ * @returns {Function} Returns `accumulator`.
13
+ */
14
+ function baseAggregator(collection, setter, iteratee, accumulator) {
15
+ baseEach(collection, function(value, key, collection) {
16
+ setter(accumulator, value, iteratee(value), collection);
17
+ });
18
+ return accumulator;
19
+ }
20
+
21
+ module.exports = baseAggregator;
node_modules/lodash/_baseAssign.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * The base implementation of `_.assign` without support for multiple sources
6
+ * or `customizer` functions.
7
+ *
8
+ * @private
9
+ * @param {Object} object The destination object.
10
+ * @param {Object} source The source object.
11
+ * @returns {Object} Returns `object`.
12
+ */
13
+ function baseAssign(object, source) {
14
+ return object && copyObject(source, keys(source), object);
15
+ }
16
+
17
+ module.exports = baseAssign;
node_modules/lodash/_baseAssignIn.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ keysIn = require('./keysIn');
3
+
4
+ /**
5
+ * The base implementation of `_.assignIn` without support for multiple sources
6
+ * or `customizer` functions.
7
+ *
8
+ * @private
9
+ * @param {Object} object The destination object.
10
+ * @param {Object} source The source object.
11
+ * @returns {Object} Returns `object`.
12
+ */
13
+ function baseAssignIn(object, source) {
14
+ return object && copyObject(source, keysIn(source), object);
15
+ }
16
+
17
+ module.exports = baseAssignIn;
node_modules/lodash/_baseAssignValue.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var defineProperty = require('./_defineProperty');
2
+
3
+ /**
4
+ * The base implementation of `assignValue` and `assignMergeValue` without
5
+ * value checks.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to modify.
9
+ * @param {string} key The key of the property to assign.
10
+ * @param {*} value The value to assign.
11
+ */
12
+ function baseAssignValue(object, key, value) {
13
+ if (key == '__proto__' && defineProperty) {
14
+ defineProperty(object, key, {
15
+ 'configurable': true,
16
+ 'enumerable': true,
17
+ 'value': value,
18
+ 'writable': true
19
+ });
20
+ } else {
21
+ object[key] = value;
22
+ }
23
+ }
24
+
25
+ module.exports = baseAssignValue;
node_modules/lodash/_baseAt.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var get = require('./get');
2
+
3
+ /**
4
+ * The base implementation of `_.at` without support for individual paths.
5
+ *
6
+ * @private
7
+ * @param {Object} object The object to iterate over.
8
+ * @param {string[]} paths The property paths to pick.
9
+ * @returns {Array} Returns the picked elements.
10
+ */
11
+ function baseAt(object, paths) {
12
+ var index = -1,
13
+ length = paths.length,
14
+ result = Array(length),
15
+ skip = object == null;
16
+
17
+ while (++index < length) {
18
+ result[index] = skip ? undefined : get(object, paths[index]);
19
+ }
20
+ return result;
21
+ }
22
+
23
+ module.exports = baseAt;
node_modules/lodash/_baseClamp.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.clamp` which doesn't coerce arguments.
3
+ *
4
+ * @private
5
+ * @param {number} number The number to clamp.
6
+ * @param {number} [lower] The lower bound.
7
+ * @param {number} upper The upper bound.
8
+ * @returns {number} Returns the clamped number.
9
+ */
10
+ function baseClamp(number, lower, upper) {
11
+ if (number === number) {
12
+ if (upper !== undefined) {
13
+ number = number <= upper ? number : upper;
14
+ }
15
+ if (lower !== undefined) {
16
+ number = number >= lower ? number : lower;
17
+ }
18
+ }
19
+ return number;
20
+ }
21
+
22
+ module.exports = baseClamp;
node_modules/lodash/_baseClone.js ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Stack = require('./_Stack'),
2
+ arrayEach = require('./_arrayEach'),
3
+ assignValue = require('./_assignValue'),
4
+ baseAssign = require('./_baseAssign'),
5
+ baseAssignIn = require('./_baseAssignIn'),
6
+ cloneBuffer = require('./_cloneBuffer'),
7
+ copyArray = require('./_copyArray'),
8
+ copySymbols = require('./_copySymbols'),
9
+ copySymbolsIn = require('./_copySymbolsIn'),
10
+ getAllKeys = require('./_getAllKeys'),
11
+ getAllKeysIn = require('./_getAllKeysIn'),
12
+ getTag = require('./_getTag'),
13
+ initCloneArray = require('./_initCloneArray'),
14
+ initCloneByTag = require('./_initCloneByTag'),
15
+ initCloneObject = require('./_initCloneObject'),
16
+ isArray = require('./isArray'),
17
+ isBuffer = require('./isBuffer'),
18
+ isMap = require('./isMap'),
19
+ isObject = require('./isObject'),
20
+ isSet = require('./isSet'),
21
+ keys = require('./keys'),
22
+ keysIn = require('./keysIn');
23
+
24
+ /** Used to compose bitmasks for cloning. */
25
+ var CLONE_DEEP_FLAG = 1,
26
+ CLONE_FLAT_FLAG = 2,
27
+ CLONE_SYMBOLS_FLAG = 4;
28
+
29
+ /** `Object#toString` result references. */
30
+ var argsTag = '[object Arguments]',
31
+ arrayTag = '[object Array]',
32
+ boolTag = '[object Boolean]',
33
+ dateTag = '[object Date]',
34
+ errorTag = '[object Error]',
35
+ funcTag = '[object Function]',
36
+ genTag = '[object GeneratorFunction]',
37
+ mapTag = '[object Map]',
38
+ numberTag = '[object Number]',
39
+ objectTag = '[object Object]',
40
+ regexpTag = '[object RegExp]',
41
+ setTag = '[object Set]',
42
+ stringTag = '[object String]',
43
+ symbolTag = '[object Symbol]',
44
+ weakMapTag = '[object WeakMap]';
45
+
46
+ var arrayBufferTag = '[object ArrayBuffer]',
47
+ dataViewTag = '[object DataView]',
48
+ float32Tag = '[object Float32Array]',
49
+ float64Tag = '[object Float64Array]',
50
+ int8Tag = '[object Int8Array]',
51
+ int16Tag = '[object Int16Array]',
52
+ int32Tag = '[object Int32Array]',
53
+ uint8Tag = '[object Uint8Array]',
54
+ uint8ClampedTag = '[object Uint8ClampedArray]',
55
+ uint16Tag = '[object Uint16Array]',
56
+ uint32Tag = '[object Uint32Array]';
57
+
58
+ /** Used to identify `toStringTag` values supported by `_.clone`. */
59
+ var cloneableTags = {};
60
+ cloneableTags[argsTag] = cloneableTags[arrayTag] =
61
+ cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
62
+ cloneableTags[boolTag] = cloneableTags[dateTag] =
63
+ cloneableTags[float32Tag] = cloneableTags[float64Tag] =
64
+ cloneableTags[int8Tag] = cloneableTags[int16Tag] =
65
+ cloneableTags[int32Tag] = cloneableTags[mapTag] =
66
+ cloneableTags[numberTag] = cloneableTags[objectTag] =
67
+ cloneableTags[regexpTag] = cloneableTags[setTag] =
68
+ cloneableTags[stringTag] = cloneableTags[symbolTag] =
69
+ cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
70
+ cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
71
+ cloneableTags[errorTag] = cloneableTags[funcTag] =
72
+ cloneableTags[weakMapTag] = false;
73
+
74
+ /**
75
+ * The base implementation of `_.clone` and `_.cloneDeep` which tracks
76
+ * traversed objects.
77
+ *
78
+ * @private
79
+ * @param {*} value The value to clone.
80
+ * @param {boolean} bitmask The bitmask flags.
81
+ * 1 - Deep clone
82
+ * 2 - Flatten inherited properties
83
+ * 4 - Clone symbols
84
+ * @param {Function} [customizer] The function to customize cloning.
85
+ * @param {string} [key] The key of `value`.
86
+ * @param {Object} [object] The parent object of `value`.
87
+ * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
88
+ * @returns {*} Returns the cloned value.
89
+ */
90
+ function baseClone(value, bitmask, customizer, key, object, stack) {
91
+ var result,
92
+ isDeep = bitmask & CLONE_DEEP_FLAG,
93
+ isFlat = bitmask & CLONE_FLAT_FLAG,
94
+ isFull = bitmask & CLONE_SYMBOLS_FLAG;
95
+
96
+ if (customizer) {
97
+ result = object ? customizer(value, key, object, stack) : customizer(value);
98
+ }
99
+ if (result !== undefined) {
100
+ return result;
101
+ }
102
+ if (!isObject(value)) {
103
+ return value;
104
+ }
105
+ var isArr = isArray(value);
106
+ if (isArr) {
107
+ result = initCloneArray(value);
108
+ if (!isDeep) {
109
+ return copyArray(value, result);
110
+ }
111
+ } else {
112
+ var tag = getTag(value),
113
+ isFunc = tag == funcTag || tag == genTag;
114
+
115
+ if (isBuffer(value)) {
116
+ return cloneBuffer(value, isDeep);
117
+ }
118
+ if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
119
+ result = (isFlat || isFunc) ? {} : initCloneObject(value);
120
+ if (!isDeep) {
121
+ return isFlat
122
+ ? copySymbolsIn(value, baseAssignIn(result, value))
123
+ : copySymbols(value, baseAssign(result, value));
124
+ }
125
+ } else {
126
+ if (!cloneableTags[tag]) {
127
+ return object ? value : {};
128
+ }
129
+ result = initCloneByTag(value, tag, isDeep);
130
+ }
131
+ }
132
+ // Check for circular references and return its corresponding clone.
133
+ stack || (stack = new Stack);
134
+ var stacked = stack.get(value);
135
+ if (stacked) {
136
+ return stacked;
137
+ }
138
+ stack.set(value, result);
139
+
140
+ if (isSet(value)) {
141
+ value.forEach(function(subValue) {
142
+ result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
143
+ });
144
+ } else if (isMap(value)) {
145
+ value.forEach(function(subValue, key) {
146
+ result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
147
+ });
148
+ }
149
+
150
+ var keysFunc = isFull
151
+ ? (isFlat ? getAllKeysIn : getAllKeys)
152
+ : (isFlat ? keysIn : keys);
153
+
154
+ var props = isArr ? undefined : keysFunc(value);
155
+ arrayEach(props || value, function(subValue, key) {
156
+ if (props) {
157
+ key = subValue;
158
+ subValue = value[key];
159
+ }
160
+ // Recursively populate clone (susceptible to call stack limits).
161
+ assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
162
+ });
163
+ return result;
164
+ }
165
+
166
+ module.exports = baseClone;
node_modules/lodash/_baseConforms.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseConformsTo = require('./_baseConformsTo'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * The base implementation of `_.conforms` which doesn't clone `source`.
6
+ *
7
+ * @private
8
+ * @param {Object} source The object of property predicates to conform to.
9
+ * @returns {Function} Returns the new spec function.
10
+ */
11
+ function baseConforms(source) {
12
+ var props = keys(source);
13
+ return function(object) {
14
+ return baseConformsTo(object, source, props);
15
+ };
16
+ }
17
+
18
+ module.exports = baseConforms;
node_modules/lodash/_baseConformsTo.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.conformsTo` which accepts `props` to check.
3
+ *
4
+ * @private
5
+ * @param {Object} object The object to inspect.
6
+ * @param {Object} source The object of property predicates to conform to.
7
+ * @returns {boolean} Returns `true` if `object` conforms, else `false`.
8
+ */
9
+ function baseConformsTo(object, source, props) {
10
+ var length = props.length;
11
+ if (object == null) {
12
+ return !length;
13
+ }
14
+ object = Object(object);
15
+ while (length--) {
16
+ var key = props[length],
17
+ predicate = source[key],
18
+ value = object[key];
19
+
20
+ if ((value === undefined && !(key in object)) || !predicate(value)) {
21
+ return false;
22
+ }
23
+ }
24
+ return true;
25
+ }
26
+
27
+ module.exports = baseConformsTo;
node_modules/lodash/_baseCreate.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isObject = require('./isObject');
2
+
3
+ /** Built-in value references. */
4
+ var objectCreate = Object.create;
5
+
6
+ /**
7
+ * The base implementation of `_.create` without support for assigning
8
+ * properties to the created object.
9
+ *
10
+ * @private
11
+ * @param {Object} proto The object to inherit from.
12
+ * @returns {Object} Returns the new object.
13
+ */
14
+ var baseCreate = (function() {
15
+ function object() {}
16
+ return function(proto) {
17
+ if (!isObject(proto)) {
18
+ return {};
19
+ }
20
+ if (objectCreate) {
21
+ return objectCreate(proto);
22
+ }
23
+ object.prototype = proto;
24
+ var result = new object;
25
+ object.prototype = undefined;
26
+ return result;
27
+ };
28
+ }());
29
+
30
+ module.exports = baseCreate;
node_modules/lodash/_baseDelay.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Error message constants. */
2
+ var FUNC_ERROR_TEXT = 'Expected a function';
3
+
4
+ /**
5
+ * The base implementation of `_.delay` and `_.defer` which accepts `args`
6
+ * to provide to `func`.
7
+ *
8
+ * @private
9
+ * @param {Function} func The function to delay.
10
+ * @param {number} wait The number of milliseconds to delay invocation.
11
+ * @param {Array} args The arguments to provide to `func`.
12
+ * @returns {number|Object} Returns the timer id or timeout object.
13
+ */
14
+ function baseDelay(func, wait, args) {
15
+ if (typeof func != 'function') {
16
+ throw new TypeError(FUNC_ERROR_TEXT);
17
+ }
18
+ return setTimeout(function() { func.apply(undefined, args); }, wait);
19
+ }
20
+
21
+ module.exports = baseDelay;
node_modules/lodash/_baseDifference.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var SetCache = require('./_SetCache'),
2
+ arrayIncludes = require('./_arrayIncludes'),
3
+ arrayIncludesWith = require('./_arrayIncludesWith'),
4
+ arrayMap = require('./_arrayMap'),
5
+ baseUnary = require('./_baseUnary'),
6
+ cacheHas = require('./_cacheHas');
7
+
8
+ /** Used as the size to enable large array optimizations. */
9
+ var LARGE_ARRAY_SIZE = 200;
10
+
11
+ /**
12
+ * The base implementation of methods like `_.difference` without support
13
+ * for excluding multiple arrays or iteratee shorthands.
14
+ *
15
+ * @private
16
+ * @param {Array} array The array to inspect.
17
+ * @param {Array} values The values to exclude.
18
+ * @param {Function} [iteratee] The iteratee invoked per element.
19
+ * @param {Function} [comparator] The comparator invoked per element.
20
+ * @returns {Array} Returns the new array of filtered values.
21
+ */
22
+ function baseDifference(array, values, iteratee, comparator) {
23
+ var index = -1,
24
+ includes = arrayIncludes,
25
+ isCommon = true,
26
+ length = array.length,
27
+ result = [],
28
+ valuesLength = values.length;
29
+
30
+ if (!length) {
31
+ return result;
32
+ }
33
+ if (iteratee) {
34
+ values = arrayMap(values, baseUnary(iteratee));
35
+ }
36
+ if (comparator) {
37
+ includes = arrayIncludesWith;
38
+ isCommon = false;
39
+ }
40
+ else if (values.length >= LARGE_ARRAY_SIZE) {
41
+ includes = cacheHas;
42
+ isCommon = false;
43
+ values = new SetCache(values);
44
+ }
45
+ outer:
46
+ while (++index < length) {
47
+ var value = array[index],
48
+ computed = iteratee == null ? value : iteratee(value);
49
+
50
+ value = (comparator || value !== 0) ? value : 0;
51
+ if (isCommon && computed === computed) {
52
+ var valuesIndex = valuesLength;
53
+ while (valuesIndex--) {
54
+ if (values[valuesIndex] === computed) {
55
+ continue outer;
56
+ }
57
+ }
58
+ result.push(value);
59
+ }
60
+ else if (!includes(values, computed, comparator)) {
61
+ result.push(value);
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+
67
+ module.exports = baseDifference;
node_modules/lodash/_baseEach.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForOwn = require('./_baseForOwn'),
2
+ createBaseEach = require('./_createBaseEach');
3
+
4
+ /**
5
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @returns {Array|Object} Returns `collection`.
11
+ */
12
+ var baseEach = createBaseEach(baseForOwn);
13
+
14
+ module.exports = baseEach;
node_modules/lodash/_baseEachRight.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForOwnRight = require('./_baseForOwnRight'),
2
+ createBaseEach = require('./_createBaseEach');
3
+
4
+ /**
5
+ * The base implementation of `_.forEachRight` without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @returns {Array|Object} Returns `collection`.
11
+ */
12
+ var baseEachRight = createBaseEach(baseForOwnRight, true);
13
+
14
+ module.exports = baseEachRight;
node_modules/lodash/_baseEvery.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseEach = require('./_baseEach');
2
+
3
+ /**
4
+ * The base implementation of `_.every` without support for iteratee shorthands.
5
+ *
6
+ * @private
7
+ * @param {Array|Object} collection The collection to iterate over.
8
+ * @param {Function} predicate The function invoked per iteration.
9
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
10
+ * else `false`
11
+ */
12
+ function baseEvery(collection, predicate) {
13
+ var result = true;
14
+ baseEach(collection, function(value, index, collection) {
15
+ result = !!predicate(value, index, collection);
16
+ return result;
17
+ });
18
+ return result;
19
+ }
20
+
21
+ module.exports = baseEvery;
node_modules/lodash/_baseExtremum.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isSymbol = require('./isSymbol');
2
+
3
+ /**
4
+ * The base implementation of methods like `_.max` and `_.min` which accepts a
5
+ * `comparator` to determine the extremum value.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to iterate over.
9
+ * @param {Function} iteratee The iteratee invoked per iteration.
10
+ * @param {Function} comparator The comparator used to compare values.
11
+ * @returns {*} Returns the extremum value.
12
+ */
13
+ function baseExtremum(array, iteratee, comparator) {
14
+ var index = -1,
15
+ length = array.length;
16
+
17
+ while (++index < length) {
18
+ var value = array[index],
19
+ current = iteratee(value);
20
+
21
+ if (current != null && (computed === undefined
22
+ ? (current === current && !isSymbol(current))
23
+ : comparator(current, computed)
24
+ )) {
25
+ var computed = current,
26
+ result = value;
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+
32
+ module.exports = baseExtremum;
node_modules/lodash/_baseFill.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toInteger = require('./toInteger'),
2
+ toLength = require('./toLength');
3
+
4
+ /**
5
+ * The base implementation of `_.fill` without an iteratee call guard.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to fill.
9
+ * @param {*} value The value to fill `array` with.
10
+ * @param {number} [start=0] The start position.
11
+ * @param {number} [end=array.length] The end position.
12
+ * @returns {Array} Returns `array`.
13
+ */
14
+ function baseFill(array, value, start, end) {
15
+ var length = array.length;
16
+
17
+ start = toInteger(start);
18
+ if (start < 0) {
19
+ start = -start > length ? 0 : (length + start);
20
+ }
21
+ end = (end === undefined || end > length) ? length : toInteger(end);
22
+ if (end < 0) {
23
+ end += length;
24
+ }
25
+ end = start > end ? 0 : toLength(end);
26
+ while (start < end) {
27
+ array[start++] = value;
28
+ }
29
+ return array;
30
+ }
31
+
32
+ module.exports = baseFill;
node_modules/lodash/_baseFilter.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseEach = require('./_baseEach');
2
+
3
+ /**
4
+ * The base implementation of `_.filter` without support for iteratee shorthands.
5
+ *
6
+ * @private
7
+ * @param {Array|Object} collection The collection to iterate over.
8
+ * @param {Function} predicate The function invoked per iteration.
9
+ * @returns {Array} Returns the new filtered array.
10
+ */
11
+ function baseFilter(collection, predicate) {
12
+ var result = [];
13
+ baseEach(collection, function(value, index, collection) {
14
+ if (predicate(value, index, collection)) {
15
+ result.push(value);
16
+ }
17
+ });
18
+ return result;
19
+ }
20
+
21
+ module.exports = baseFilter;
node_modules/lodash/_baseFindIndex.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
3
+ * support for iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} array The array to inspect.
7
+ * @param {Function} predicate The function invoked per iteration.
8
+ * @param {number} fromIndex The index to search from.
9
+ * @param {boolean} [fromRight] Specify iterating from right to left.
10
+ * @returns {number} Returns the index of the matched value, else `-1`.
11
+ */
12
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
13
+ var length = array.length,
14
+ index = fromIndex + (fromRight ? 1 : -1);
15
+
16
+ while ((fromRight ? index-- : ++index < length)) {
17
+ if (predicate(array[index], index, array)) {
18
+ return index;
19
+ }
20
+ }
21
+ return -1;
22
+ }
23
+
24
+ module.exports = baseFindIndex;
node_modules/lodash/_baseFindKey.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of methods like `_.findKey` and `_.findLastKey`,
3
+ * without support for iteratee shorthands, which iterates over `collection`
4
+ * using `eachFunc`.
5
+ *
6
+ * @private
7
+ * @param {Array|Object} collection The collection to inspect.
8
+ * @param {Function} predicate The function invoked per iteration.
9
+ * @param {Function} eachFunc The function to iterate over `collection`.
10
+ * @returns {*} Returns the found element or its key, else `undefined`.
11
+ */
12
+ function baseFindKey(collection, predicate, eachFunc) {
13
+ var result;
14
+ eachFunc(collection, function(value, key, collection) {
15
+ if (predicate(value, key, collection)) {
16
+ result = key;
17
+ return false;
18
+ }
19
+ });
20
+ return result;
21
+ }
22
+
23
+ module.exports = baseFindKey;
node_modules/lodash/_baseFlatten.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayPush = require('./_arrayPush'),
2
+ isFlattenable = require('./_isFlattenable');
3
+
4
+ /**
5
+ * The base implementation of `_.flatten` with support for restricting flattening.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to flatten.
9
+ * @param {number} depth The maximum recursion depth.
10
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
11
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
12
+ * @param {Array} [result=[]] The initial result value.
13
+ * @returns {Array} Returns the new flattened array.
14
+ */
15
+ function baseFlatten(array, depth, predicate, isStrict, result) {
16
+ var index = -1,
17
+ length = array.length;
18
+
19
+ predicate || (predicate = isFlattenable);
20
+ result || (result = []);
21
+
22
+ while (++index < length) {
23
+ var value = array[index];
24
+ if (depth > 0 && predicate(value)) {
25
+ if (depth > 1) {
26
+ // Recursively flatten arrays (susceptible to call stack limits).
27
+ baseFlatten(value, depth - 1, predicate, isStrict, result);
28
+ } else {
29
+ arrayPush(result, value);
30
+ }
31
+ } else if (!isStrict) {
32
+ result[result.length] = value;
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+
38
+ module.exports = baseFlatten;
node_modules/lodash/_baseFor.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createBaseFor = require('./_createBaseFor');
2
+
3
+ /**
4
+ * The base implementation of `baseForOwn` which iterates over `object`
5
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
6
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to iterate over.
10
+ * @param {Function} iteratee The function invoked per iteration.
11
+ * @param {Function} keysFunc The function to get the keys of `object`.
12
+ * @returns {Object} Returns `object`.
13
+ */
14
+ var baseFor = createBaseFor();
15
+
16
+ module.exports = baseFor;
node_modules/lodash/_baseForOwn.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFor = require('./_baseFor'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @returns {Object} Returns `object`.
11
+ */
12
+ function baseForOwn(object, iteratee) {
13
+ return object && baseFor(object, iteratee, keys);
14
+ }
15
+
16
+ module.exports = baseForOwn;
node_modules/lodash/_baseForOwnRight.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForRight = require('./_baseForRight'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @returns {Object} Returns `object`.
11
+ */
12
+ function baseForOwnRight(object, iteratee) {
13
+ return object && baseForRight(object, iteratee, keys);
14
+ }
15
+
16
+ module.exports = baseForOwnRight;
node_modules/lodash/_baseForRight.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createBaseFor = require('./_createBaseFor');
2
+
3
+ /**
4
+ * This function is like `baseFor` except that it iterates over properties
5
+ * in the opposite order.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @param {Function} keysFunc The function to get the keys of `object`.
11
+ * @returns {Object} Returns `object`.
12
+ */
13
+ var baseForRight = createBaseFor(true);
14
+
15
+ module.exports = baseForRight;
node_modules/lodash/_baseFunctions.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayFilter = require('./_arrayFilter'),
2
+ isFunction = require('./isFunction');
3
+
4
+ /**
5
+ * The base implementation of `_.functions` which creates an array of
6
+ * `object` function property names filtered from `props`.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to inspect.
10
+ * @param {Array} props The property names to filter.
11
+ * @returns {Array} Returns the function names.
12
+ */
13
+ function baseFunctions(object, props) {
14
+ return arrayFilter(props, function(key) {
15
+ return isFunction(object[key]);
16
+ });
17
+ }
18
+
19
+ module.exports = baseFunctions;
node_modules/lodash/_baseGet.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var castPath = require('./_castPath'),
2
+ toKey = require('./_toKey');
3
+
4
+ /**
5
+ * The base implementation of `_.get` without support for default values.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to query.
9
+ * @param {Array|string} path The path of the property to get.
10
+ * @returns {*} Returns the resolved value.
11
+ */
12
+ function baseGet(object, path) {
13
+ path = castPath(path, object);
14
+
15
+ var index = 0,
16
+ length = path.length;
17
+
18
+ while (object != null && index < length) {
19
+ object = object[toKey(path[index++])];
20
+ }
21
+ return (index && index == length) ? object : undefined;
22
+ }
23
+
24
+ module.exports = baseGet;
node_modules/lodash/_baseGetAllKeys.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayPush = require('./_arrayPush'),
2
+ isArray = require('./isArray');
3
+
4
+ /**
5
+ * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
6
+ * `keysFunc` and `symbolsFunc` to get the enumerable property names and
7
+ * symbols of `object`.
8
+ *
9
+ * @private
10
+ * @param {Object} object The object to query.
11
+ * @param {Function} keysFunc The function to get the keys of `object`.
12
+ * @param {Function} symbolsFunc The function to get the symbols of `object`.
13
+ * @returns {Array} Returns the array of property names and symbols.
14
+ */
15
+ function baseGetAllKeys(object, keysFunc, symbolsFunc) {
16
+ var result = keysFunc(object);
17
+ return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
18
+ }
19
+
20
+ module.exports = baseGetAllKeys;
node_modules/lodash/_baseGetTag.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol'),
2
+ getRawTag = require('./_getRawTag'),
3
+ objectToString = require('./_objectToString');
4
+
5
+ /** `Object#toString` result references. */
6
+ var nullTag = '[object Null]',
7
+ undefinedTag = '[object Undefined]';
8
+
9
+ /** Built-in value references. */
10
+ var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
11
+
12
+ /**
13
+ * The base implementation of `getTag` without fallbacks for buggy environments.
14
+ *
15
+ * @private
16
+ * @param {*} value The value to query.
17
+ * @returns {string} Returns the `toStringTag`.
18
+ */
19
+ function baseGetTag(value) {
20
+ if (value == null) {
21
+ return value === undefined ? undefinedTag : nullTag;
22
+ }
23
+ return (symToStringTag && symToStringTag in Object(value))
24
+ ? getRawTag(value)
25
+ : objectToString(value);
26
+ }
27
+
28
+ module.exports = baseGetTag;
node_modules/lodash/_baseGt.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.gt` which doesn't coerce arguments.
3
+ *
4
+ * @private
5
+ * @param {*} value The value to compare.
6
+ * @param {*} other The other value to compare.
7
+ * @returns {boolean} Returns `true` if `value` is greater than `other`,
8
+ * else `false`.
9
+ */
10
+ function baseGt(value, other) {
11
+ return value > other;
12
+ }
13
+
14
+ module.exports = baseGt;
node_modules/lodash/_baseHas.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var objectProto = Object.prototype;
3
+
4
+ /** Used to check objects for own properties. */
5
+ var hasOwnProperty = objectProto.hasOwnProperty;
6
+
7
+ /**
8
+ * The base implementation of `_.has` without support for deep paths.
9
+ *
10
+ * @private
11
+ * @param {Object} [object] The object to query.
12
+ * @param {Array|string} key The key to check.
13
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
14
+ */
15
+ function baseHas(object, key) {
16
+ return object != null && hasOwnProperty.call(object, key);
17
+ }
18
+
19
+ module.exports = baseHas;
node_modules/lodash/_baseHasIn.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.hasIn` without support for deep paths.
3
+ *
4
+ * @private
5
+ * @param {Object} [object] The object to query.
6
+ * @param {Array|string} key The key to check.
7
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
8
+ */
9
+ function baseHasIn(object, key) {
10
+ return object != null && key in Object(object);
11
+ }
12
+
13
+ module.exports = baseHasIn;
node_modules/lodash/_baseInRange.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeMax = Math.max,
3
+ nativeMin = Math.min;
4
+
5
+ /**
6
+ * The base implementation of `_.inRange` which doesn't coerce arguments.
7
+ *
8
+ * @private
9
+ * @param {number} number The number to check.
10
+ * @param {number} start The start of the range.
11
+ * @param {number} end The end of the range.
12
+ * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
13
+ */
14
+ function baseInRange(number, start, end) {
15
+ return number >= nativeMin(start, end) && number < nativeMax(start, end);
16
+ }
17
+
18
+ module.exports = baseInRange;
node_modules/lodash/_baseIndexOf.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindIndex = require('./_baseFindIndex'),
2
+ baseIsNaN = require('./_baseIsNaN'),
3
+ strictIndexOf = require('./_strictIndexOf');
4
+
5
+ /**
6
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
7
+ *
8
+ * @private
9
+ * @param {Array} array The array to inspect.
10
+ * @param {*} value The value to search for.
11
+ * @param {number} fromIndex The index to search from.
12
+ * @returns {number} Returns the index of the matched value, else `-1`.
13
+ */
14
+ function baseIndexOf(array, value, fromIndex) {
15
+ return value === value
16
+ ? strictIndexOf(array, value, fromIndex)
17
+ : baseFindIndex(array, baseIsNaN, fromIndex);
18
+ }
19
+
20
+ module.exports = baseIndexOf;
node_modules/lodash/_baseIndexOfWith.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This function is like `baseIndexOf` except that it accepts a comparator.
3
+ *
4
+ * @private
5
+ * @param {Array} array The array to inspect.
6
+ * @param {*} value The value to search for.
7
+ * @param {number} fromIndex The index to search from.
8
+ * @param {Function} comparator The comparator invoked per element.
9
+ * @returns {number} Returns the index of the matched value, else `-1`.
10
+ */
11
+ function baseIndexOfWith(array, value, fromIndex, comparator) {
12
+ var index = fromIndex - 1,
13
+ length = array.length;
14
+
15
+ while (++index < length) {
16
+ if (comparator(array[index], value)) {
17
+ return index;
18
+ }
19
+ }
20
+ return -1;
21
+ }
22
+
23
+ module.exports = baseIndexOfWith;
node_modules/lodash/_baseIntersection.js ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var SetCache = require('./_SetCache'),
2
+ arrayIncludes = require('./_arrayIncludes'),
3
+ arrayIncludesWith = require('./_arrayIncludesWith'),
4
+ arrayMap = require('./_arrayMap'),
5
+ baseUnary = require('./_baseUnary'),
6
+ cacheHas = require('./_cacheHas');
7
+
8
+ /* Built-in method references for those with the same name as other `lodash` methods. */
9
+ var nativeMin = Math.min;
10
+
11
+ /**
12
+ * The base implementation of methods like `_.intersection`, without support
13
+ * for iteratee shorthands, that accepts an array of arrays to inspect.
14
+ *
15
+ * @private
16
+ * @param {Array} arrays The arrays to inspect.
17
+ * @param {Function} [iteratee] The iteratee invoked per element.
18
+ * @param {Function} [comparator] The comparator invoked per element.
19
+ * @returns {Array} Returns the new array of shared values.
20
+ */
21
+ function baseIntersection(arrays, iteratee, comparator) {
22
+ var includes = comparator ? arrayIncludesWith : arrayIncludes,
23
+ length = arrays[0].length,
24
+ othLength = arrays.length,
25
+ othIndex = othLength,
26
+ caches = Array(othLength),
27
+ maxLength = Infinity,
28
+ result = [];
29
+
30
+ while (othIndex--) {
31
+ var array = arrays[othIndex];
32
+ if (othIndex && iteratee) {
33
+ array = arrayMap(array, baseUnary(iteratee));
34
+ }
35
+ maxLength = nativeMin(array.length, maxLength);
36
+ caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
37
+ ? new SetCache(othIndex && array)
38
+ : undefined;
39
+ }
40
+ array = arrays[0];
41
+
42
+ var index = -1,
43
+ seen = caches[0];
44
+
45
+ outer:
46
+ while (++index < length && result.length < maxLength) {
47
+ var value = array[index],
48
+ computed = iteratee ? iteratee(value) : value;
49
+
50
+ value = (comparator || value !== 0) ? value : 0;
51
+ if (!(seen
52
+ ? cacheHas(seen, computed)
53
+ : includes(result, computed, comparator)
54
+ )) {
55
+ othIndex = othLength;
56
+ while (--othIndex) {
57
+ var cache = caches[othIndex];
58
+ if (!(cache
59
+ ? cacheHas(cache, computed)
60
+ : includes(arrays[othIndex], computed, comparator))
61
+ ) {
62
+ continue outer;
63
+ }
64
+ }
65
+ if (seen) {
66
+ seen.push(computed);
67
+ }
68
+ result.push(value);
69
+ }
70
+ }
71
+ return result;
72
+ }
73
+
74
+ module.exports = baseIntersection;
node_modules/lodash/_baseInverter.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForOwn = require('./_baseForOwn');
2
+
3
+ /**
4
+ * The base implementation of `_.invert` and `_.invertBy` which inverts
5
+ * `object` with values transformed by `iteratee` and set by `setter`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to iterate over.
9
+ * @param {Function} setter The function to set `accumulator` values.
10
+ * @param {Function} iteratee The iteratee to transform values.
11
+ * @param {Object} accumulator The initial inverted object.
12
+ * @returns {Function} Returns `accumulator`.
13
+ */
14
+ function baseInverter(object, setter, iteratee, accumulator) {
15
+ baseForOwn(object, function(value, key, object) {
16
+ setter(accumulator, iteratee(value), key, object);
17
+ });
18
+ return accumulator;
19
+ }
20
+
21
+ module.exports = baseInverter;
node_modules/lodash/_baseInvoke.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ castPath = require('./_castPath'),
3
+ last = require('./last'),
4
+ parent = require('./_parent'),
5
+ toKey = require('./_toKey');
6
+
7
+ /**
8
+ * The base implementation of `_.invoke` without support for individual
9
+ * method arguments.
10
+ *
11
+ * @private
12
+ * @param {Object} object The object to query.
13
+ * @param {Array|string} path The path of the method to invoke.
14
+ * @param {Array} args The arguments to invoke the method with.
15
+ * @returns {*} Returns the result of the invoked method.
16
+ */
17
+ function baseInvoke(object, path, args) {
18
+ path = castPath(path, object);
19
+ object = parent(object, path);
20
+ var func = object == null ? object : object[toKey(last(path))];
21
+ return func == null ? undefined : apply(func, object, args);
22
+ }
23
+
24
+ module.exports = baseInvoke;
node_modules/lodash/_baseIsArguments.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var argsTag = '[object Arguments]';
6
+
7
+ /**
8
+ * The base implementation of `_.isArguments`.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
13
+ */
14
+ function baseIsArguments(value) {
15
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
16
+ }
17
+
18
+ module.exports = baseIsArguments;
node_modules/lodash/_baseIsArrayBuffer.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ var arrayBufferTag = '[object ArrayBuffer]';
5
+
6
+ /**
7
+ * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
8
+ *
9
+ * @private
10
+ * @param {*} value The value to check.
11
+ * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
12
+ */
13
+ function baseIsArrayBuffer(value) {
14
+ return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
15
+ }
16
+
17
+ module.exports = baseIsArrayBuffer;
node_modules/lodash/_baseIsDate.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var dateTag = '[object Date]';
6
+
7
+ /**
8
+ * The base implementation of `_.isDate` without Node.js optimizations.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
13
+ */
14
+ function baseIsDate(value) {
15
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
16
+ }
17
+
18
+ module.exports = baseIsDate;
node_modules/lodash/_baseIsEqual.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsEqualDeep = require('./_baseIsEqualDeep'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /**
5
+ * The base implementation of `_.isEqual` which supports partial comparisons
6
+ * and tracks traversed objects.
7
+ *
8
+ * @private
9
+ * @param {*} value The value to compare.
10
+ * @param {*} other The other value to compare.
11
+ * @param {boolean} bitmask The bitmask flags.
12
+ * 1 - Unordered comparison
13
+ * 2 - Partial comparison
14
+ * @param {Function} [customizer] The function to customize comparisons.
15
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
16
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17
+ */
18
+ function baseIsEqual(value, other, bitmask, customizer, stack) {
19
+ if (value === other) {
20
+ return true;
21
+ }
22
+ if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
23
+ return value !== value && other !== other;
24
+ }
25
+ return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
26
+ }
27
+
28
+ module.exports = baseIsEqual;
node_modules/lodash/_baseIsEqualDeep.js ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Stack = require('./_Stack'),
2
+ equalArrays = require('./_equalArrays'),
3
+ equalByTag = require('./_equalByTag'),
4
+ equalObjects = require('./_equalObjects'),
5
+ getTag = require('./_getTag'),
6
+ isArray = require('./isArray'),
7
+ isBuffer = require('./isBuffer'),
8
+ isTypedArray = require('./isTypedArray');
9
+
10
+ /** Used to compose bitmasks for value comparisons. */
11
+ var COMPARE_PARTIAL_FLAG = 1;
12
+
13
+ /** `Object#toString` result references. */
14
+ var argsTag = '[object Arguments]',
15
+ arrayTag = '[object Array]',
16
+ objectTag = '[object Object]';
17
+
18
+ /** Used for built-in method references. */
19
+ var objectProto = Object.prototype;
20
+
21
+ /** Used to check objects for own properties. */
22
+ var hasOwnProperty = objectProto.hasOwnProperty;
23
+
24
+ /**
25
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
26
+ * deep comparisons and tracks traversed objects enabling objects with circular
27
+ * references to be compared.
28
+ *
29
+ * @private
30
+ * @param {Object} object The object to compare.
31
+ * @param {Object} other The other object to compare.
32
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
33
+ * @param {Function} customizer The function to customize comparisons.
34
+ * @param {Function} equalFunc The function to determine equivalents of values.
35
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
36
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
37
+ */
38
+ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
39
+ var objIsArr = isArray(object),
40
+ othIsArr = isArray(other),
41
+ objTag = objIsArr ? arrayTag : getTag(object),
42
+ othTag = othIsArr ? arrayTag : getTag(other);
43
+
44
+ objTag = objTag == argsTag ? objectTag : objTag;
45
+ othTag = othTag == argsTag ? objectTag : othTag;
46
+
47
+ var objIsObj = objTag == objectTag,
48
+ othIsObj = othTag == objectTag,
49
+ isSameTag = objTag == othTag;
50
+
51
+ if (isSameTag && isBuffer(object)) {
52
+ if (!isBuffer(other)) {
53
+ return false;
54
+ }
55
+ objIsArr = true;
56
+ objIsObj = false;
57
+ }
58
+ if (isSameTag && !objIsObj) {
59
+ stack || (stack = new Stack);
60
+ return (objIsArr || isTypedArray(object))
61
+ ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
62
+ : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
63
+ }
64
+ if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
65
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
66
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
67
+
68
+ if (objIsWrapped || othIsWrapped) {
69
+ var objUnwrapped = objIsWrapped ? object.value() : object,
70
+ othUnwrapped = othIsWrapped ? other.value() : other;
71
+
72
+ stack || (stack = new Stack);
73
+ return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
74
+ }
75
+ }
76
+ if (!isSameTag) {
77
+ return false;
78
+ }
79
+ stack || (stack = new Stack);
80
+ return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
81
+ }
82
+
83
+ module.exports = baseIsEqualDeep;
node_modules/lodash/_baseIsMap.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getTag = require('./_getTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var mapTag = '[object Map]';
6
+
7
+ /**
8
+ * The base implementation of `_.isMap` without Node.js optimizations.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
13
+ */
14
+ function baseIsMap(value) {
15
+ return isObjectLike(value) && getTag(value) == mapTag;
16
+ }
17
+
18
+ module.exports = baseIsMap;
node_modules/lodash/_baseIsMatch.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Stack = require('./_Stack'),
2
+ baseIsEqual = require('./_baseIsEqual');
3
+
4
+ /** Used to compose bitmasks for value comparisons. */
5
+ var COMPARE_PARTIAL_FLAG = 1,
6
+ COMPARE_UNORDERED_FLAG = 2;
7
+
8
+ /**
9
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
10
+ *
11
+ * @private
12
+ * @param {Object} object The object to inspect.
13
+ * @param {Object} source The object of property values to match.
14
+ * @param {Array} matchData The property names, values, and compare flags to match.
15
+ * @param {Function} [customizer] The function to customize comparisons.
16
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
17
+ */
18
+ function baseIsMatch(object, source, matchData, customizer) {
19
+ var index = matchData.length,
20
+ length = index,
21
+ noCustomizer = !customizer;
22
+
23
+ if (object == null) {
24
+ return !length;
25
+ }
26
+ object = Object(object);
27
+ while (index--) {
28
+ var data = matchData[index];
29
+ if ((noCustomizer && data[2])
30
+ ? data[1] !== object[data[0]]
31
+ : !(data[0] in object)
32
+ ) {
33
+ return false;
34
+ }
35
+ }
36
+ while (++index < length) {
37
+ data = matchData[index];
38
+ var key = data[0],
39
+ objValue = object[key],
40
+ srcValue = data[1];
41
+
42
+ if (noCustomizer && data[2]) {
43
+ if (objValue === undefined && !(key in object)) {
44
+ return false;
45
+ }
46
+ } else {
47
+ var stack = new Stack;
48
+ if (customizer) {
49
+ var result = customizer(objValue, srcValue, key, object, source, stack);
50
+ }
51
+ if (!(result === undefined
52
+ ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
53
+ : result
54
+ )) {
55
+ return false;
56
+ }
57
+ }
58
+ }
59
+ return true;
60
+ }
61
+
62
+ module.exports = baseIsMatch;
node_modules/lodash/_baseIsNaN.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.isNaN` without support for number objects.
3
+ *
4
+ * @private
5
+ * @param {*} value The value to check.
6
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
7
+ */
8
+ function baseIsNaN(value) {
9
+ return value !== value;
10
+ }
11
+
12
+ module.exports = baseIsNaN;
node_modules/lodash/_baseIsNative.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isFunction = require('./isFunction'),
2
+ isMasked = require('./_isMasked'),
3
+ isObject = require('./isObject'),
4
+ toSource = require('./_toSource');
5
+
6
+ /**
7
+ * Used to match `RegExp`
8
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
9
+ */
10
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
11
+
12
+ /** Used to detect host constructors (Safari). */
13
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
14
+
15
+ /** Used for built-in method references. */
16
+ var funcProto = Function.prototype,
17
+ objectProto = Object.prototype;
18
+
19
+ /** Used to resolve the decompiled source of functions. */
20
+ var funcToString = funcProto.toString;
21
+
22
+ /** Used to check objects for own properties. */
23
+ var hasOwnProperty = objectProto.hasOwnProperty;
24
+
25
+ /** Used to detect if a method is native. */
26
+ var reIsNative = RegExp('^' +
27
+ funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
28
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
29
+ );
30
+
31
+ /**
32
+ * The base implementation of `_.isNative` without bad shim checks.
33
+ *
34
+ * @private
35
+ * @param {*} value The value to check.
36
+ * @returns {boolean} Returns `true` if `value` is a native function,
37
+ * else `false`.
38
+ */
39
+ function baseIsNative(value) {
40
+ if (!isObject(value) || isMasked(value)) {
41
+ return false;
42
+ }
43
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
44
+ return pattern.test(toSource(value));
45
+ }
46
+
47
+ module.exports = baseIsNative;
node_modules/lodash/_baseIsRegExp.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var regexpTag = '[object RegExp]';
6
+
7
+ /**
8
+ * The base implementation of `_.isRegExp` without Node.js optimizations.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
13
+ */
14
+ function baseIsRegExp(value) {
15
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
16
+ }
17
+
18
+ module.exports = baseIsRegExp;
node_modules/lodash/_baseIsSet.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getTag = require('./_getTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var setTag = '[object Set]';
6
+
7
+ /**
8
+ * The base implementation of `_.isSet` without Node.js optimizations.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
13
+ */
14
+ function baseIsSet(value) {
15
+ return isObjectLike(value) && getTag(value) == setTag;
16
+ }
17
+
18
+ module.exports = baseIsSet;
node_modules/lodash/_baseIsTypedArray.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isLength = require('./isLength'),
3
+ isObjectLike = require('./isObjectLike');
4
+
5
+ /** `Object#toString` result references. */
6
+ var argsTag = '[object Arguments]',
7
+ arrayTag = '[object Array]',
8
+ boolTag = '[object Boolean]',
9
+ dateTag = '[object Date]',
10
+ errorTag = '[object Error]',
11
+ funcTag = '[object Function]',
12
+ mapTag = '[object Map]',
13
+ numberTag = '[object Number]',
14
+ objectTag = '[object Object]',
15
+ regexpTag = '[object RegExp]',
16
+ setTag = '[object Set]',
17
+ stringTag = '[object String]',
18
+ weakMapTag = '[object WeakMap]';
19
+
20
+ var arrayBufferTag = '[object ArrayBuffer]',
21
+ dataViewTag = '[object DataView]',
22
+ float32Tag = '[object Float32Array]',
23
+ float64Tag = '[object Float64Array]',
24
+ int8Tag = '[object Int8Array]',
25
+ int16Tag = '[object Int16Array]',
26
+ int32Tag = '[object Int32Array]',
27
+ uint8Tag = '[object Uint8Array]',
28
+ uint8ClampedTag = '[object Uint8ClampedArray]',
29
+ uint16Tag = '[object Uint16Array]',
30
+ uint32Tag = '[object Uint32Array]';
31
+
32
+ /** Used to identify `toStringTag` values of typed arrays. */
33
+ var typedArrayTags = {};
34
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
35
+ typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
36
+ typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
37
+ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
38
+ typedArrayTags[uint32Tag] = true;
39
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
40
+ typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
41
+ typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
42
+ typedArrayTags[errorTag] = typedArrayTags[funcTag] =
43
+ typedArrayTags[mapTag] = typedArrayTags[numberTag] =
44
+ typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
45
+ typedArrayTags[setTag] = typedArrayTags[stringTag] =
46
+ typedArrayTags[weakMapTag] = false;
47
+
48
+ /**
49
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
50
+ *
51
+ * @private
52
+ * @param {*} value The value to check.
53
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
54
+ */
55
+ function baseIsTypedArray(value) {
56
+ return isObjectLike(value) &&
57
+ isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
58
+ }
59
+
60
+ module.exports = baseIsTypedArray;
node_modules/lodash/_baseIteratee.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseMatches = require('./_baseMatches'),
2
+ baseMatchesProperty = require('./_baseMatchesProperty'),
3
+ identity = require('./identity'),
4
+ isArray = require('./isArray'),
5
+ property = require('./property');
6
+
7
+ /**
8
+ * The base implementation of `_.iteratee`.
9
+ *
10
+ * @private
11
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
12
+ * @returns {Function} Returns the iteratee.
13
+ */
14
+ function baseIteratee(value) {
15
+ // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
16
+ // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
17
+ if (typeof value == 'function') {
18
+ return value;
19
+ }
20
+ if (value == null) {
21
+ return identity;
22
+ }
23
+ if (typeof value == 'object') {
24
+ return isArray(value)
25
+ ? baseMatchesProperty(value[0], value[1])
26
+ : baseMatches(value);
27
+ }
28
+ return property(value);
29
+ }
30
+
31
+ module.exports = baseIteratee;
node_modules/lodash/_baseKeys.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isPrototype = require('./_isPrototype'),
2
+ nativeKeys = require('./_nativeKeys');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /**
11
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
12
+ *
13
+ * @private
14
+ * @param {Object} object The object to query.
15
+ * @returns {Array} Returns the array of property names.
16
+ */
17
+ function baseKeys(object) {
18
+ if (!isPrototype(object)) {
19
+ return nativeKeys(object);
20
+ }
21
+ var result = [];
22
+ for (var key in Object(object)) {
23
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
24
+ result.push(key);
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+
30
+ module.exports = baseKeys;
node_modules/lodash/_baseKeysIn.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isObject = require('./isObject'),
2
+ isPrototype = require('./_isPrototype'),
3
+ nativeKeysIn = require('./_nativeKeysIn');
4
+
5
+ /** Used for built-in method references. */
6
+ var objectProto = Object.prototype;
7
+
8
+ /** Used to check objects for own properties. */
9
+ var hasOwnProperty = objectProto.hasOwnProperty;
10
+
11
+ /**
12
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
13
+ *
14
+ * @private
15
+ * @param {Object} object The object to query.
16
+ * @returns {Array} Returns the array of property names.
17
+ */
18
+ function baseKeysIn(object) {
19
+ if (!isObject(object)) {
20
+ return nativeKeysIn(object);
21
+ }
22
+ var isProto = isPrototype(object),
23
+ result = [];
24
+
25
+ for (var key in object) {
26
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
27
+ result.push(key);
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+
33
+ module.exports = baseKeysIn;
node_modules/lodash/_baseLodash.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The function whose prototype chain sequence wrappers inherit from.
3
+ *
4
+ * @private
5
+ */
6
+ function baseLodash() {
7
+ // No operation performed.
8
+ }
9
+
10
+ module.exports = baseLodash;
node_modules/lodash/_baseLt.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.lt` which doesn't coerce arguments.
3
+ *
4
+ * @private
5
+ * @param {*} value The value to compare.
6
+ * @param {*} other The other value to compare.
7
+ * @returns {boolean} Returns `true` if `value` is less than `other`,
8
+ * else `false`.
9
+ */
10
+ function baseLt(value, other) {
11
+ return value < other;
12
+ }
13
+
14
+ module.exports = baseLt;
node_modules/lodash/_baseMap.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseEach = require('./_baseEach'),
2
+ isArrayLike = require('./isArrayLike');
3
+
4
+ /**
5
+ * The base implementation of `_.map` without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to iterate over.
9
+ * @param {Function} iteratee The function invoked per iteration.
10
+ * @returns {Array} Returns the new mapped array.
11
+ */
12
+ function baseMap(collection, iteratee) {
13
+ var index = -1,
14
+ result = isArrayLike(collection) ? Array(collection.length) : [];
15
+
16
+ baseEach(collection, function(value, key, collection) {
17
+ result[++index] = iteratee(value, key, collection);
18
+ });
19
+ return result;
20
+ }
21
+
22
+ module.exports = baseMap;
node_modules/lodash/_baseMatches.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsMatch = require('./_baseIsMatch'),
2
+ getMatchData = require('./_getMatchData'),
3
+ matchesStrictComparable = require('./_matchesStrictComparable');
4
+
5
+ /**
6
+ * The base implementation of `_.matches` which doesn't clone `source`.
7
+ *
8
+ * @private
9
+ * @param {Object} source The object of property values to match.
10
+ * @returns {Function} Returns the new spec function.
11
+ */
12
+ function baseMatches(source) {
13
+ var matchData = getMatchData(source);
14
+ if (matchData.length == 1 && matchData[0][2]) {
15
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
16
+ }
17
+ return function(object) {
18
+ return object === source || baseIsMatch(object, source, matchData);
19
+ };
20
+ }
21
+
22
+ module.exports = baseMatches;
node_modules/lodash/_baseMatchesProperty.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsEqual = require('./_baseIsEqual'),
2
+ get = require('./get'),
3
+ hasIn = require('./hasIn'),
4
+ isKey = require('./_isKey'),
5
+ isStrictComparable = require('./_isStrictComparable'),
6
+ matchesStrictComparable = require('./_matchesStrictComparable'),
7
+ toKey = require('./_toKey');
8
+
9
+ /** Used to compose bitmasks for value comparisons. */
10
+ var COMPARE_PARTIAL_FLAG = 1,
11
+ COMPARE_UNORDERED_FLAG = 2;
12
+
13
+ /**
14
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
15
+ *
16
+ * @private
17
+ * @param {string} path The path of the property to get.
18
+ * @param {*} srcValue The value to match.
19
+ * @returns {Function} Returns the new spec function.
20
+ */
21
+ function baseMatchesProperty(path, srcValue) {
22
+ if (isKey(path) && isStrictComparable(srcValue)) {
23
+ return matchesStrictComparable(toKey(path), srcValue);
24
+ }
25
+ return function(object) {
26
+ var objValue = get(object, path);
27
+ return (objValue === undefined && objValue === srcValue)
28
+ ? hasIn(object, path)
29
+ : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
30
+ };
31
+ }
32
+
33
+ module.exports = baseMatchesProperty;
node_modules/lodash/_baseMean.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSum = require('./_baseSum');
2
+
3
+ /** Used as references for various `Number` constants. */
4
+ var NAN = 0 / 0;
5
+
6
+ /**
7
+ * The base implementation of `_.mean` and `_.meanBy` without support for
8
+ * iteratee shorthands.
9
+ *
10
+ * @private
11
+ * @param {Array} array The array to iterate over.
12
+ * @param {Function} iteratee The function invoked per iteration.
13
+ * @returns {number} Returns the mean.
14
+ */
15
+ function baseMean(array, iteratee) {
16
+ var length = array == null ? 0 : array.length;
17
+ return length ? (baseSum(array, iteratee) / length) : NAN;
18
+ }
19
+
20
+ module.exports = baseMean;
node_modules/lodash/_baseMerge.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Stack = require('./_Stack'),
2
+ assignMergeValue = require('./_assignMergeValue'),
3
+ baseFor = require('./_baseFor'),
4
+ baseMergeDeep = require('./_baseMergeDeep'),
5
+ isObject = require('./isObject'),
6
+ keysIn = require('./keysIn'),
7
+ safeGet = require('./_safeGet');
8
+
9
+ /**
10
+ * The base implementation of `_.merge` without support for multiple sources.
11
+ *
12
+ * @private
13
+ * @param {Object} object The destination object.
14
+ * @param {Object} source The source object.
15
+ * @param {number} srcIndex The index of `source`.
16
+ * @param {Function} [customizer] The function to customize merged values.
17
+ * @param {Object} [stack] Tracks traversed source values and their merged
18
+ * counterparts.
19
+ */
20
+ function baseMerge(object, source, srcIndex, customizer, stack) {
21
+ if (object === source) {
22
+ return;
23
+ }
24
+ baseFor(source, function(srcValue, key) {
25
+ stack || (stack = new Stack);
26
+ if (isObject(srcValue)) {
27
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
28
+ }
29
+ else {
30
+ var newValue = customizer
31
+ ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
32
+ : undefined;
33
+
34
+ if (newValue === undefined) {
35
+ newValue = srcValue;
36
+ }
37
+ assignMergeValue(object, key, newValue);
38
+ }
39
+ }, keysIn);
40
+ }
41
+
42
+ module.exports = baseMerge;
node_modules/lodash/_baseMergeDeep.js ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assignMergeValue = require('./_assignMergeValue'),
2
+ cloneBuffer = require('./_cloneBuffer'),
3
+ cloneTypedArray = require('./_cloneTypedArray'),
4
+ copyArray = require('./_copyArray'),
5
+ initCloneObject = require('./_initCloneObject'),
6
+ isArguments = require('./isArguments'),
7
+ isArray = require('./isArray'),
8
+ isArrayLikeObject = require('./isArrayLikeObject'),
9
+ isBuffer = require('./isBuffer'),
10
+ isFunction = require('./isFunction'),
11
+ isObject = require('./isObject'),
12
+ isPlainObject = require('./isPlainObject'),
13
+ isTypedArray = require('./isTypedArray'),
14
+ safeGet = require('./_safeGet'),
15
+ toPlainObject = require('./toPlainObject');
16
+
17
+ /**
18
+ * A specialized version of `baseMerge` for arrays and objects which performs
19
+ * deep merges and tracks traversed objects enabling objects with circular
20
+ * references to be merged.
21
+ *
22
+ * @private
23
+ * @param {Object} object The destination object.
24
+ * @param {Object} source The source object.
25
+ * @param {string} key The key of the value to merge.
26
+ * @param {number} srcIndex The index of `source`.
27
+ * @param {Function} mergeFunc The function to merge values.
28
+ * @param {Function} [customizer] The function to customize assigned values.
29
+ * @param {Object} [stack] Tracks traversed source values and their merged
30
+ * counterparts.
31
+ */
32
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
33
+ var objValue = safeGet(object, key),
34
+ srcValue = safeGet(source, key),
35
+ stacked = stack.get(srcValue);
36
+
37
+ if (stacked) {
38
+ assignMergeValue(object, key, stacked);
39
+ return;
40
+ }
41
+ var newValue = customizer
42
+ ? customizer(objValue, srcValue, (key + ''), object, source, stack)
43
+ : undefined;
44
+
45
+ var isCommon = newValue === undefined;
46
+
47
+ if (isCommon) {
48
+ var isArr = isArray(srcValue),
49
+ isBuff = !isArr && isBuffer(srcValue),
50
+ isTyped = !isArr && !isBuff && isTypedArray(srcValue);
51
+
52
+ newValue = srcValue;
53
+ if (isArr || isBuff || isTyped) {
54
+ if (isArray(objValue)) {
55
+ newValue = objValue;
56
+ }
57
+ else if (isArrayLikeObject(objValue)) {
58
+ newValue = copyArray(objValue);
59
+ }
60
+ else if (isBuff) {
61
+ isCommon = false;
62
+ newValue = cloneBuffer(srcValue, true);
63
+ }
64
+ else if (isTyped) {
65
+ isCommon = false;
66
+ newValue = cloneTypedArray(srcValue, true);
67
+ }
68
+ else {
69
+ newValue = [];
70
+ }
71
+ }
72
+ else if (isPlainObject(srcValue) || isArguments(srcValue)) {
73
+ newValue = objValue;
74
+ if (isArguments(objValue)) {
75
+ newValue = toPlainObject(objValue);
76
+ }
77
+ else if (!isObject(objValue) || isFunction(objValue)) {
78
+ newValue = initCloneObject(srcValue);
79
+ }
80
+ }
81
+ else {
82
+ isCommon = false;
83
+ }
84
+ }
85
+ if (isCommon) {
86
+ // Recursively merge objects and arrays (susceptible to call stack limits).
87
+ stack.set(srcValue, newValue);
88
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
89
+ stack['delete'](srcValue);
90
+ }
91
+ assignMergeValue(object, key, newValue);
92
+ }
93
+
94
+ module.exports = baseMergeDeep;
node_modules/lodash/_baseNth.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isIndex = require('./_isIndex');
2
+
3
+ /**
4
+ * The base implementation of `_.nth` which doesn't coerce arguments.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to query.
8
+ * @param {number} n The index of the element to return.
9
+ * @returns {*} Returns the nth element of `array`.
10
+ */
11
+ function baseNth(array, n) {
12
+ var length = array.length;
13
+ if (!length) {
14
+ return;
15
+ }
16
+ n += n < 0 ? length : 0;
17
+ return isIndex(n, length) ? array[n] : undefined;
18
+ }
19
+
20
+ module.exports = baseNth;
node_modules/lodash/_baseOrderBy.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap'),
2
+ baseGet = require('./_baseGet'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ baseMap = require('./_baseMap'),
5
+ baseSortBy = require('./_baseSortBy'),
6
+ baseUnary = require('./_baseUnary'),
7
+ compareMultiple = require('./_compareMultiple'),
8
+ identity = require('./identity'),
9
+ isArray = require('./isArray');
10
+
11
+ /**
12
+ * The base implementation of `_.orderBy` without param guards.
13
+ *
14
+ * @private
15
+ * @param {Array|Object} collection The collection to iterate over.
16
+ * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
17
+ * @param {string[]} orders The sort orders of `iteratees`.
18
+ * @returns {Array} Returns the new sorted array.
19
+ */
20
+ function baseOrderBy(collection, iteratees, orders) {
21
+ if (iteratees.length) {
22
+ iteratees = arrayMap(iteratees, function(iteratee) {
23
+ if (isArray(iteratee)) {
24
+ return function(value) {
25
+ return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
26
+ }
27
+ }
28
+ return iteratee;
29
+ });
30
+ } else {
31
+ iteratees = [identity];
32
+ }
33
+
34
+ var index = -1;
35
+ iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
36
+
37
+ var result = baseMap(collection, function(value, key, collection) {
38
+ var criteria = arrayMap(iteratees, function(iteratee) {
39
+ return iteratee(value);
40
+ });
41
+ return { 'criteria': criteria, 'index': ++index, 'value': value };
42
+ });
43
+
44
+ return baseSortBy(result, function(object, other) {
45
+ return compareMultiple(object, other, orders);
46
+ });
47
+ }
48
+
49
+ module.exports = baseOrderBy;
node_modules/lodash/_basePick.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var basePickBy = require('./_basePickBy'),
2
+ hasIn = require('./hasIn');
3
+
4
+ /**
5
+ * The base implementation of `_.pick` without support for individual
6
+ * property identifiers.
7
+ *
8
+ * @private
9
+ * @param {Object} object The source object.
10
+ * @param {string[]} paths The property paths to pick.
11
+ * @returns {Object} Returns the new object.
12
+ */
13
+ function basePick(object, paths) {
14
+ return basePickBy(object, paths, function(value, path) {
15
+ return hasIn(object, path);
16
+ });
17
+ }
18
+
19
+ module.exports = basePick;
node_modules/lodash/_basePickBy.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGet = require('./_baseGet'),
2
+ baseSet = require('./_baseSet'),
3
+ castPath = require('./_castPath');
4
+
5
+ /**
6
+ * The base implementation of `_.pickBy` without support for iteratee shorthands.
7
+ *
8
+ * @private
9
+ * @param {Object} object The source object.
10
+ * @param {string[]} paths The property paths to pick.
11
+ * @param {Function} predicate The function invoked per property.
12
+ * @returns {Object} Returns the new object.
13
+ */
14
+ function basePickBy(object, paths, predicate) {
15
+ var index = -1,
16
+ length = paths.length,
17
+ result = {};
18
+
19
+ while (++index < length) {
20
+ var path = paths[index],
21
+ value = baseGet(object, path);
22
+
23
+ if (predicate(value, path)) {
24
+ baseSet(result, castPath(path, object), value);
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+
30
+ module.exports = basePickBy;
node_modules/lodash/_baseProperty.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.property` without support for deep paths.
3
+ *
4
+ * @private
5
+ * @param {string} key The key of the property to get.
6
+ * @returns {Function} Returns the new accessor function.
7
+ */
8
+ function baseProperty(key) {
9
+ return function(object) {
10
+ return object == null ? undefined : object[key];
11
+ };
12
+ }
13
+
14
+ module.exports = baseProperty;
node_modules/lodash/_basePropertyDeep.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGet = require('./_baseGet');
2
+
3
+ /**
4
+ * A specialized version of `baseProperty` which supports deep paths.
5
+ *
6
+ * @private
7
+ * @param {Array|string} path The path of the property to get.
8
+ * @returns {Function} Returns the new accessor function.
9
+ */
10
+ function basePropertyDeep(path) {
11
+ return function(object) {
12
+ return baseGet(object, path);
13
+ };
14
+ }
15
+
16
+ module.exports = basePropertyDeep;
node_modules/lodash/_basePropertyOf.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.propertyOf` without support for deep paths.
3
+ *
4
+ * @private
5
+ * @param {Object} object The object to query.
6
+ * @returns {Function} Returns the new accessor function.
7
+ */
8
+ function basePropertyOf(object) {
9
+ return function(key) {
10
+ return object == null ? undefined : object[key];
11
+ };
12
+ }
13
+
14
+ module.exports = basePropertyOf;
node_modules/lodash/_basePullAll.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap'),
2
+ baseIndexOf = require('./_baseIndexOf'),
3
+ baseIndexOfWith = require('./_baseIndexOfWith'),
4
+ baseUnary = require('./_baseUnary'),
5
+ copyArray = require('./_copyArray');
6
+
7
+ /** Used for built-in method references. */
8
+ var arrayProto = Array.prototype;
9
+
10
+ /** Built-in value references. */
11
+ var splice = arrayProto.splice;
12
+
13
+ /**
14
+ * The base implementation of `_.pullAllBy` without support for iteratee
15
+ * shorthands.
16
+ *
17
+ * @private
18
+ * @param {Array} array The array to modify.
19
+ * @param {Array} values The values to remove.
20
+ * @param {Function} [iteratee] The iteratee invoked per element.
21
+ * @param {Function} [comparator] The comparator invoked per element.
22
+ * @returns {Array} Returns `array`.
23
+ */
24
+ function basePullAll(array, values, iteratee, comparator) {
25
+ var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
26
+ index = -1,
27
+ length = values.length,
28
+ seen = array;
29
+
30
+ if (array === values) {
31
+ values = copyArray(values);
32
+ }
33
+ if (iteratee) {
34
+ seen = arrayMap(array, baseUnary(iteratee));
35
+ }
36
+ while (++index < length) {
37
+ var fromIndex = 0,
38
+ value = values[index],
39
+ computed = iteratee ? iteratee(value) : value;
40
+
41
+ while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
42
+ if (seen !== array) {
43
+ splice.call(seen, fromIndex, 1);
44
+ }
45
+ splice.call(array, fromIndex, 1);
46
+ }
47
+ }
48
+ return array;
49
+ }
50
+
51
+ module.exports = basePullAll;
node_modules/lodash/_basePullAt.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseUnset = require('./_baseUnset'),
2
+ isIndex = require('./_isIndex');
3
+
4
+ /** Used for built-in method references. */
5
+ var arrayProto = Array.prototype;
6
+
7
+ /** Built-in value references. */
8
+ var splice = arrayProto.splice;
9
+
10
+ /**
11
+ * The base implementation of `_.pullAt` without support for individual
12
+ * indexes or capturing the removed elements.
13
+ *
14
+ * @private
15
+ * @param {Array} array The array to modify.
16
+ * @param {number[]} indexes The indexes of elements to remove.
17
+ * @returns {Array} Returns `array`.
18
+ */
19
+ function basePullAt(array, indexes) {
20
+ var length = array ? indexes.length : 0,
21
+ lastIndex = length - 1;
22
+
23
+ while (length--) {
24
+ var index = indexes[length];
25
+ if (length == lastIndex || index !== previous) {
26
+ var previous = index;
27
+ if (isIndex(index)) {
28
+ splice.call(array, index, 1);
29
+ } else {
30
+ baseUnset(array, index);
31
+ }
32
+ }
33
+ }
34
+ return array;
35
+ }
36
+
37
+ module.exports = basePullAt;
node_modules/lodash/_baseRandom.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeFloor = Math.floor,
3
+ nativeRandom = Math.random;
4
+
5
+ /**
6
+ * The base implementation of `_.random` without support for returning
7
+ * floating-point numbers.
8
+ *
9
+ * @private
10
+ * @param {number} lower The lower bound.
11
+ * @param {number} upper The upper bound.
12
+ * @returns {number} Returns the random number.
13
+ */
14
+ function baseRandom(lower, upper) {
15
+ return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
16
+ }
17
+
18
+ module.exports = baseRandom;
node_modules/lodash/_baseRange.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeCeil = Math.ceil,
3
+ nativeMax = Math.max;
4
+
5
+ /**
6
+ * The base implementation of `_.range` and `_.rangeRight` which doesn't
7
+ * coerce arguments.
8
+ *
9
+ * @private
10
+ * @param {number} start The start of the range.
11
+ * @param {number} end The end of the range.
12
+ * @param {number} step The value to increment or decrement by.
13
+ * @param {boolean} [fromRight] Specify iterating from right to left.
14
+ * @returns {Array} Returns the range of numbers.
15
+ */
16
+ function baseRange(start, end, step, fromRight) {
17
+ var index = -1,
18
+ length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
19
+ result = Array(length);
20
+
21
+ while (length--) {
22
+ result[fromRight ? length : ++index] = start;
23
+ start += step;
24
+ }
25
+ return result;
26
+ }
27
+
28
+ module.exports = baseRange;
node_modules/lodash/_baseReduce.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.reduce` and `_.reduceRight`, without support
3
+ * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
4
+ *
5
+ * @private
6
+ * @param {Array|Object} collection The collection to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @param {*} accumulator The initial value.
9
+ * @param {boolean} initAccum Specify using the first or last element of
10
+ * `collection` as the initial value.
11
+ * @param {Function} eachFunc The function to iterate over `collection`.
12
+ * @returns {*} Returns the accumulated value.
13
+ */
14
+ function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
15
+ eachFunc(collection, function(value, index, collection) {
16
+ accumulator = initAccum
17
+ ? (initAccum = false, value)
18
+ : iteratee(accumulator, value, index, collection);
19
+ });
20
+ return accumulator;
21
+ }
22
+
23
+ module.exports = baseReduce;
node_modules/lodash/_baseRepeat.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used as references for various `Number` constants. */
2
+ var MAX_SAFE_INTEGER = 9007199254740991;
3
+
4
+ /* Built-in method references for those with the same name as other `lodash` methods. */
5
+ var nativeFloor = Math.floor;
6
+
7
+ /**
8
+ * The base implementation of `_.repeat` which doesn't coerce arguments.
9
+ *
10
+ * @private
11
+ * @param {string} string The string to repeat.
12
+ * @param {number} n The number of times to repeat the string.
13
+ * @returns {string} Returns the repeated string.
14
+ */
15
+ function baseRepeat(string, n) {
16
+ var result = '';
17
+ if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
18
+ return result;
19
+ }
20
+ // Leverage the exponentiation by squaring algorithm for a faster repeat.
21
+ // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
22
+ do {
23
+ if (n % 2) {
24
+ result += string;
25
+ }
26
+ n = nativeFloor(n / 2);
27
+ if (n) {
28
+ string += string;
29
+ }
30
+ } while (n);
31
+
32
+ return result;
33
+ }
34
+
35
+ module.exports = baseRepeat;
node_modules/lodash/_baseRest.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var identity = require('./identity'),
2
+ overRest = require('./_overRest'),
3
+ setToString = require('./_setToString');
4
+
5
+ /**
6
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
7
+ *
8
+ * @private
9
+ * @param {Function} func The function to apply a rest parameter to.
10
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
11
+ * @returns {Function} Returns the new function.
12
+ */
13
+ function baseRest(func, start) {
14
+ return setToString(overRest(func, start, identity), func + '');
15
+ }
16
+
17
+ module.exports = baseRest;
node_modules/lodash/_baseSample.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arraySample = require('./_arraySample'),
2
+ values = require('./values');
3
+
4
+ /**
5
+ * The base implementation of `_.sample`.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to sample.
9
+ * @returns {*} Returns the random element.
10
+ */
11
+ function baseSample(collection) {
12
+ return arraySample(values(collection));
13
+ }
14
+
15
+ module.exports = baseSample;
node_modules/lodash/_baseSampleSize.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClamp = require('./_baseClamp'),
2
+ shuffleSelf = require('./_shuffleSelf'),
3
+ values = require('./values');
4
+
5
+ /**
6
+ * The base implementation of `_.sampleSize` without param guards.
7
+ *
8
+ * @private
9
+ * @param {Array|Object} collection The collection to sample.
10
+ * @param {number} n The number of elements to sample.
11
+ * @returns {Array} Returns the random elements.
12
+ */
13
+ function baseSampleSize(collection, n) {
14
+ var array = values(collection);
15
+ return shuffleSelf(array, baseClamp(n, 0, array.length));
16
+ }
17
+
18
+ module.exports = baseSampleSize;
node_modules/lodash/_baseSet.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assignValue = require('./_assignValue'),
2
+ castPath = require('./_castPath'),
3
+ isIndex = require('./_isIndex'),
4
+ isObject = require('./isObject'),
5
+ toKey = require('./_toKey');
6
+
7
+ /**
8
+ * The base implementation of `_.set`.
9
+ *
10
+ * @private
11
+ * @param {Object} object The object to modify.
12
+ * @param {Array|string} path The path of the property to set.
13
+ * @param {*} value The value to set.
14
+ * @param {Function} [customizer] The function to customize path creation.
15
+ * @returns {Object} Returns `object`.
16
+ */
17
+ function baseSet(object, path, value, customizer) {
18
+ if (!isObject(object)) {
19
+ return object;
20
+ }
21
+ path = castPath(path, object);
22
+
23
+ var index = -1,
24
+ length = path.length,
25
+ lastIndex = length - 1,
26
+ nested = object;
27
+
28
+ while (nested != null && ++index < length) {
29
+ var key = toKey(path[index]),
30
+ newValue = value;
31
+
32
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
33
+ return object;
34
+ }
35
+
36
+ if (index != lastIndex) {
37
+ var objValue = nested[key];
38
+ newValue = customizer ? customizer(objValue, key, nested) : undefined;
39
+ if (newValue === undefined) {
40
+ newValue = isObject(objValue)
41
+ ? objValue
42
+ : (isIndex(path[index + 1]) ? [] : {});
43
+ }
44
+ }
45
+ assignValue(nested, key, newValue);
46
+ nested = nested[key];
47
+ }
48
+ return object;
49
+ }
50
+
51
+ module.exports = baseSet;
node_modules/lodash/_baseSetData.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var identity = require('./identity'),
2
+ metaMap = require('./_metaMap');
3
+
4
+ /**
5
+ * The base implementation of `setData` without support for hot loop shorting.
6
+ *
7
+ * @private
8
+ * @param {Function} func The function to associate metadata with.
9
+ * @param {*} data The metadata.
10
+ * @returns {Function} Returns `func`.
11
+ */
12
+ var baseSetData = !metaMap ? identity : function(func, data) {
13
+ metaMap.set(func, data);
14
+ return func;
15
+ };
16
+
17
+ module.exports = baseSetData;
node_modules/lodash/_baseSetToString.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var constant = require('./constant'),
2
+ defineProperty = require('./_defineProperty'),
3
+ identity = require('./identity');
4
+
5
+ /**
6
+ * The base implementation of `setToString` without support for hot loop shorting.
7
+ *
8
+ * @private
9
+ * @param {Function} func The function to modify.
10
+ * @param {Function} string The `toString` result.
11
+ * @returns {Function} Returns `func`.
12
+ */
13
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
14
+ return defineProperty(func, 'toString', {
15
+ 'configurable': true,
16
+ 'enumerable': false,
17
+ 'value': constant(string),
18
+ 'writable': true
19
+ });
20
+ };
21
+
22
+ module.exports = baseSetToString;
node_modules/lodash/_baseShuffle.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var shuffleSelf = require('./_shuffleSelf'),
2
+ values = require('./values');
3
+
4
+ /**
5
+ * The base implementation of `_.shuffle`.
6
+ *
7
+ * @private
8
+ * @param {Array|Object} collection The collection to shuffle.
9
+ * @returns {Array} Returns the new shuffled array.
10
+ */
11
+ function baseShuffle(collection) {
12
+ return shuffleSelf(values(collection));
13
+ }
14
+
15
+ module.exports = baseShuffle;
node_modules/lodash/_baseSlice.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.slice` without an iteratee call guard.
3
+ *
4
+ * @private
5
+ * @param {Array} array The array to slice.
6
+ * @param {number} [start=0] The start position.
7
+ * @param {number} [end=array.length] The end position.
8
+ * @returns {Array} Returns the slice of `array`.
9
+ */
10
+ function baseSlice(array, start, end) {
11
+ var index = -1,
12
+ length = array.length;
13
+
14
+ if (start < 0) {
15
+ start = -start > length ? 0 : (length + start);
16
+ }
17
+ end = end > length ? length : end;
18
+ if (end < 0) {
19
+ end += length;
20
+ }
21
+ length = start > end ? 0 : ((end - start) >>> 0);
22
+ start >>>= 0;
23
+
24
+ var result = Array(length);
25
+ while (++index < length) {
26
+ result[index] = array[index + start];
27
+ }
28
+ return result;
29
+ }
30
+
31
+ module.exports = baseSlice;
node_modules/lodash/_baseSome.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseEach = require('./_baseEach');
2
+
3
+ /**
4
+ * The base implementation of `_.some` without support for iteratee shorthands.
5
+ *
6
+ * @private
7
+ * @param {Array|Object} collection The collection to iterate over.
8
+ * @param {Function} predicate The function invoked per iteration.
9
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
10
+ * else `false`.
11
+ */
12
+ function baseSome(collection, predicate) {
13
+ var result;
14
+
15
+ baseEach(collection, function(value, index, collection) {
16
+ result = predicate(value, index, collection);
17
+ return !result;
18
+ });
19
+ return !!result;
20
+ }
21
+
22
+ module.exports = baseSome;
node_modules/lodash/_baseSortBy.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.sortBy` which uses `comparer` to define the
3
+ * sort order of `array` and replaces criteria objects with their corresponding
4
+ * values.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to sort.
8
+ * @param {Function} comparer The function to define sort order.
9
+ * @returns {Array} Returns `array`.
10
+ */
11
+ function baseSortBy(array, comparer) {
12
+ var length = array.length;
13
+
14
+ array.sort(comparer);
15
+ while (length--) {
16
+ array[length] = array[length].value;
17
+ }
18
+ return array;
19
+ }
20
+
21
+ module.exports = baseSortBy;
node_modules/lodash/_baseSortedIndex.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSortedIndexBy = require('./_baseSortedIndexBy'),
2
+ identity = require('./identity'),
3
+ isSymbol = require('./isSymbol');
4
+
5
+ /** Used as references for the maximum length and index of an array. */
6
+ var MAX_ARRAY_LENGTH = 4294967295,
7
+ HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
8
+
9
+ /**
10
+ * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
11
+ * performs a binary search of `array` to determine the index at which `value`
12
+ * should be inserted into `array` in order to maintain its sort order.
13
+ *
14
+ * @private
15
+ * @param {Array} array The sorted array to inspect.
16
+ * @param {*} value The value to evaluate.
17
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
18
+ * @returns {number} Returns the index at which `value` should be inserted
19
+ * into `array`.
20
+ */
21
+ function baseSortedIndex(array, value, retHighest) {
22
+ var low = 0,
23
+ high = array == null ? low : array.length;
24
+
25
+ if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
26
+ while (low < high) {
27
+ var mid = (low + high) >>> 1,
28
+ computed = array[mid];
29
+
30
+ if (computed !== null && !isSymbol(computed) &&
31
+ (retHighest ? (computed <= value) : (computed < value))) {
32
+ low = mid + 1;
33
+ } else {
34
+ high = mid;
35
+ }
36
+ }
37
+ return high;
38
+ }
39
+ return baseSortedIndexBy(array, value, identity, retHighest);
40
+ }
41
+
42
+ module.exports = baseSortedIndex;
node_modules/lodash/_baseSortedIndexBy.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isSymbol = require('./isSymbol');
2
+
3
+ /** Used as references for the maximum length and index of an array. */
4
+ var MAX_ARRAY_LENGTH = 4294967295,
5
+ MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;
6
+
7
+ /* Built-in method references for those with the same name as other `lodash` methods. */
8
+ var nativeFloor = Math.floor,
9
+ nativeMin = Math.min;
10
+
11
+ /**
12
+ * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
13
+ * which invokes `iteratee` for `value` and each element of `array` to compute
14
+ * their sort ranking. The iteratee is invoked with one argument; (value).
15
+ *
16
+ * @private
17
+ * @param {Array} array The sorted array to inspect.
18
+ * @param {*} value The value to evaluate.
19
+ * @param {Function} iteratee The iteratee invoked per element.
20
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
21
+ * @returns {number} Returns the index at which `value` should be inserted
22
+ * into `array`.
23
+ */
24
+ function baseSortedIndexBy(array, value, iteratee, retHighest) {
25
+ var low = 0,
26
+ high = array == null ? 0 : array.length;
27
+ if (high === 0) {
28
+ return 0;
29
+ }
30
+
31
+ value = iteratee(value);
32
+ var valIsNaN = value !== value,
33
+ valIsNull = value === null,
34
+ valIsSymbol = isSymbol(value),
35
+ valIsUndefined = value === undefined;
36
+
37
+ while (low < high) {
38
+ var mid = nativeFloor((low + high) / 2),
39
+ computed = iteratee(array[mid]),
40
+ othIsDefined = computed !== undefined,
41
+ othIsNull = computed === null,
42
+ othIsReflexive = computed === computed,
43
+ othIsSymbol = isSymbol(computed);
44
+
45
+ if (valIsNaN) {
46
+ var setLow = retHighest || othIsReflexive;
47
+ } else if (valIsUndefined) {
48
+ setLow = othIsReflexive && (retHighest || othIsDefined);
49
+ } else if (valIsNull) {
50
+ setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
51
+ } else if (valIsSymbol) {
52
+ setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
53
+ } else if (othIsNull || othIsSymbol) {
54
+ setLow = false;
55
+ } else {
56
+ setLow = retHighest ? (computed <= value) : (computed < value);
57
+ }
58
+ if (setLow) {
59
+ low = mid + 1;
60
+ } else {
61
+ high = mid;
62
+ }
63
+ }
64
+ return nativeMin(high, MAX_ARRAY_INDEX);
65
+ }
66
+
67
+ module.exports = baseSortedIndexBy;
node_modules/lodash/_baseSortedUniq.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var eq = require('./eq');
2
+
3
+ /**
4
+ * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
5
+ * support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to inspect.
9
+ * @param {Function} [iteratee] The iteratee invoked per element.
10
+ * @returns {Array} Returns the new duplicate free array.
11
+ */
12
+ function baseSortedUniq(array, iteratee) {
13
+ var index = -1,
14
+ length = array.length,
15
+ resIndex = 0,
16
+ result = [];
17
+
18
+ while (++index < length) {
19
+ var value = array[index],
20
+ computed = iteratee ? iteratee(value) : value;
21
+
22
+ if (!index || !eq(computed, seen)) {
23
+ var seen = computed;
24
+ result[resIndex++] = value === 0 ? 0 : value;
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+
30
+ module.exports = baseSortedUniq;
node_modules/lodash/_baseSum.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.sum` and `_.sumBy` without support for
3
+ * iteratee shorthands.
4
+ *
5
+ * @private
6
+ * @param {Array} array The array to iterate over.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @returns {number} Returns the sum.
9
+ */
10
+ function baseSum(array, iteratee) {
11
+ var result,
12
+ index = -1,
13
+ length = array.length;
14
+
15
+ while (++index < length) {
16
+ var current = iteratee(array[index]);
17
+ if (current !== undefined) {
18
+ result = result === undefined ? current : (result + current);
19
+ }
20
+ }
21
+ return result;
22
+ }
23
+
24
+ module.exports = baseSum;
node_modules/lodash/_baseTimes.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.times` without support for iteratee shorthands
3
+ * or max array length checks.
4
+ *
5
+ * @private
6
+ * @param {number} n The number of times to invoke `iteratee`.
7
+ * @param {Function} iteratee The function invoked per iteration.
8
+ * @returns {Array} Returns the array of results.
9
+ */
10
+ function baseTimes(n, iteratee) {
11
+ var index = -1,
12
+ result = Array(n);
13
+
14
+ while (++index < n) {
15
+ result[index] = iteratee(index);
16
+ }
17
+ return result;
18
+ }
19
+
20
+ module.exports = baseTimes;
node_modules/lodash/_baseToNumber.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isSymbol = require('./isSymbol');
2
+
3
+ /** Used as references for various `Number` constants. */
4
+ var NAN = 0 / 0;
5
+
6
+ /**
7
+ * The base implementation of `_.toNumber` which doesn't ensure correct
8
+ * conversions of binary, hexadecimal, or octal string values.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to process.
12
+ * @returns {number} Returns the number.
13
+ */
14
+ function baseToNumber(value) {
15
+ if (typeof value == 'number') {
16
+ return value;
17
+ }
18
+ if (isSymbol(value)) {
19
+ return NAN;
20
+ }
21
+ return +value;
22
+ }
23
+
24
+ module.exports = baseToNumber;
node_modules/lodash/_baseToPairs.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap');
2
+
3
+ /**
4
+ * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
5
+ * of key-value pairs for `object` corresponding to the property names of `props`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to query.
9
+ * @param {Array} props The property names to get values for.
10
+ * @returns {Object} Returns the key-value pairs.
11
+ */
12
+ function baseToPairs(object, props) {
13
+ return arrayMap(props, function(key) {
14
+ return [key, object[key]];
15
+ });
16
+ }
17
+
18
+ module.exports = baseToPairs;
node_modules/lodash/_baseToString.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol'),
2
+ arrayMap = require('./_arrayMap'),
3
+ isArray = require('./isArray'),
4
+ isSymbol = require('./isSymbol');
5
+
6
+ /** Used as references for various `Number` constants. */
7
+ var INFINITY = 1 / 0;
8
+
9
+ /** Used to convert symbols to primitives and strings. */
10
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
11
+ symbolToString = symbolProto ? symbolProto.toString : undefined;
12
+
13
+ /**
14
+ * The base implementation of `_.toString` which doesn't convert nullish
15
+ * values to empty strings.
16
+ *
17
+ * @private
18
+ * @param {*} value The value to process.
19
+ * @returns {string} Returns the string.
20
+ */
21
+ function baseToString(value) {
22
+ // Exit early for strings to avoid a performance hit in some environments.
23
+ if (typeof value == 'string') {
24
+ return value;
25
+ }
26
+ if (isArray(value)) {
27
+ // Recursively convert values (susceptible to call stack limits).
28
+ return arrayMap(value, baseToString) + '';
29
+ }
30
+ if (isSymbol(value)) {
31
+ return symbolToString ? symbolToString.call(value) : '';
32
+ }
33
+ var result = (value + '');
34
+ return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
35
+ }
36
+
37
+ module.exports = baseToString;
node_modules/lodash/_baseUnary.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The base implementation of `_.unary` without support for storing metadata.
3
+ *
4
+ * @private
5
+ * @param {Function} func The function to cap arguments for.
6
+ * @returns {Function} Returns the new capped function.
7
+ */
8
+ function baseUnary(func) {
9
+ return function(value) {
10
+ return func(value);
11
+ };
12
+ }
13
+
14
+ module.exports = baseUnary;
node_modules/lodash/_baseUniq.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var SetCache = require('./_SetCache'),
2
+ arrayIncludes = require('./_arrayIncludes'),
3
+ arrayIncludesWith = require('./_arrayIncludesWith'),
4
+ cacheHas = require('./_cacheHas'),
5
+ createSet = require('./_createSet'),
6
+ setToArray = require('./_setToArray');
7
+
8
+ /** Used as the size to enable large array optimizations. */
9
+ var LARGE_ARRAY_SIZE = 200;
10
+
11
+ /**
12
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
13
+ *
14
+ * @private
15
+ * @param {Array} array The array to inspect.
16
+ * @param {Function} [iteratee] The iteratee invoked per element.
17
+ * @param {Function} [comparator] The comparator invoked per element.
18
+ * @returns {Array} Returns the new duplicate free array.
19
+ */
20
+ function baseUniq(array, iteratee, comparator) {
21
+ var index = -1,
22
+ includes = arrayIncludes,
23
+ length = array.length,
24
+ isCommon = true,
25
+ result = [],
26
+ seen = result;
27
+
28
+ if (comparator) {
29
+ isCommon = false;
30
+ includes = arrayIncludesWith;
31
+ }
32
+ else if (length >= LARGE_ARRAY_SIZE) {
33
+ var set = iteratee ? null : createSet(array);
34
+ if (set) {
35
+ return setToArray(set);
36
+ }
37
+ isCommon = false;
38
+ includes = cacheHas;
39
+ seen = new SetCache;
40
+ }
41
+ else {
42
+ seen = iteratee ? [] : result;
43
+ }
44
+ outer:
45
+ while (++index < length) {
46
+ var value = array[index],
47
+ computed = iteratee ? iteratee(value) : value;
48
+
49
+ value = (comparator || value !== 0) ? value : 0;
50
+ if (isCommon && computed === computed) {
51
+ var seenIndex = seen.length;
52
+ while (seenIndex--) {
53
+ if (seen[seenIndex] === computed) {
54
+ continue outer;
55
+ }
56
+ }
57
+ if (iteratee) {
58
+ seen.push(computed);
59
+ }
60
+ result.push(value);
61
+ }
62
+ else if (!includes(seen, computed, comparator)) {
63
+ if (seen !== result) {
64
+ seen.push(computed);
65
+ }
66
+ result.push(value);
67
+ }
68
+ }
69
+ return result;
70
+ }
71
+
72
+ module.exports = baseUniq;
node_modules/lodash/_baseUnset.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var castPath = require('./_castPath'),
2
+ last = require('./last'),
3
+ parent = require('./_parent'),
4
+ toKey = require('./_toKey');
5
+
6
+ /**
7
+ * The base implementation of `_.unset`.
8
+ *
9
+ * @private
10
+ * @param {Object} object The object to modify.
11
+ * @param {Array|string} path The property path to unset.
12
+ * @returns {boolean} Returns `true` if the property is deleted, else `false`.
13
+ */
14
+ function baseUnset(object, path) {
15
+ path = castPath(path, object);
16
+ object = parent(object, path);
17
+ return object == null || delete object[toKey(last(path))];
18
+ }
19
+
20
+ module.exports = baseUnset;
node_modules/lodash/_baseUpdate.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGet = require('./_baseGet'),
2
+ baseSet = require('./_baseSet');
3
+
4
+ /**
5
+ * The base implementation of `_.update`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to modify.
9
+ * @param {Array|string} path The path of the property to update.
10
+ * @param {Function} updater The function to produce the updated value.
11
+ * @param {Function} [customizer] The function to customize path creation.
12
+ * @returns {Object} Returns `object`.
13
+ */
14
+ function baseUpdate(object, path, updater, customizer) {
15
+ return baseSet(object, path, updater(baseGet(object, path)), customizer);
16
+ }
17
+
18
+ module.exports = baseUpdate;
node_modules/lodash/_baseValues.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap');
2
+
3
+ /**
4
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
5
+ * array of `object` property values corresponding to the property names
6
+ * of `props`.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to query.
10
+ * @param {Array} props The property names to get values for.
11
+ * @returns {Object} Returns the array of property values.
12
+ */
13
+ function baseValues(object, props) {
14
+ return arrayMap(props, function(key) {
15
+ return object[key];
16
+ });
17
+ }
18
+
19
+ module.exports = baseValues;
node_modules/lodash/_baseWhile.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice');
2
+
3
+ /**
4
+ * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
5
+ * without support for iteratee shorthands.
6
+ *
7
+ * @private
8
+ * @param {Array} array The array to query.
9
+ * @param {Function} predicate The function invoked per iteration.
10
+ * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
11
+ * @param {boolean} [fromRight] Specify iterating from right to left.
12
+ * @returns {Array} Returns the slice of `array`.
13
+ */
14
+ function baseWhile(array, predicate, isDrop, fromRight) {
15
+ var length = array.length,
16
+ index = fromRight ? length : -1;
17
+
18
+ while ((fromRight ? index-- : ++index < length) &&
19
+ predicate(array[index], index, array)) {}
20
+
21
+ return isDrop
22
+ ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
23
+ : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
24
+ }
25
+
26
+ module.exports = baseWhile;
node_modules/lodash/_baseWrapperValue.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LazyWrapper = require('./_LazyWrapper'),
2
+ arrayPush = require('./_arrayPush'),
3
+ arrayReduce = require('./_arrayReduce');
4
+
5
+ /**
6
+ * The base implementation of `wrapperValue` which returns the result of
7
+ * performing a sequence of actions on the unwrapped `value`, where each
8
+ * successive action is supplied the return value of the previous.
9
+ *
10
+ * @private
11
+ * @param {*} value The unwrapped value.
12
+ * @param {Array} actions Actions to perform to resolve the unwrapped value.
13
+ * @returns {*} Returns the resolved value.
14
+ */
15
+ function baseWrapperValue(value, actions) {
16
+ var result = value;
17
+ if (result instanceof LazyWrapper) {
18
+ result = result.value();
19
+ }
20
+ return arrayReduce(actions, function(result, action) {
21
+ return action.func.apply(action.thisArg, arrayPush([result], action.args));
22
+ }, result);
23
+ }
24
+
25
+ module.exports = baseWrapperValue;
node_modules/lodash/_baseXor.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDifference = require('./_baseDifference'),
2
+ baseFlatten = require('./_baseFlatten'),
3
+ baseUniq = require('./_baseUniq');
4
+
5
+ /**
6
+ * The base implementation of methods like `_.xor`, without support for
7
+ * iteratee shorthands, that accepts an array of arrays to inspect.
8
+ *
9
+ * @private
10
+ * @param {Array} arrays The arrays to inspect.
11
+ * @param {Function} [iteratee] The iteratee invoked per element.
12
+ * @param {Function} [comparator] The comparator invoked per element.
13
+ * @returns {Array} Returns the new array of values.
14
+ */
15
+ function baseXor(arrays, iteratee, comparator) {
16
+ var length = arrays.length;
17
+ if (length < 2) {
18
+ return length ? baseUniq(arrays[0]) : [];
19
+ }
20
+ var index = -1,
21
+ result = Array(length);
22
+
23
+ while (++index < length) {
24
+ var array = arrays[index],
25
+ othIndex = -1;
26
+
27
+ while (++othIndex < length) {
28
+ if (othIndex != index) {
29
+ result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
30
+ }
31
+ }
32
+ }
33
+ return baseUniq(baseFlatten(result, 1), iteratee, comparator);
34
+ }
35
+
36
+ module.exports = baseXor;
node_modules/lodash/_baseZipObject.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
3
+ *
4
+ * @private
5
+ * @param {Array} props The property identifiers.
6
+ * @param {Array} values The property values.
7
+ * @param {Function} assignFunc The function to assign values.
8
+ * @returns {Object} Returns the new object.
9
+ */
10
+ function baseZipObject(props, values, assignFunc) {
11
+ var index = -1,
12
+ length = props.length,
13
+ valsLength = values.length,
14
+ result = {};
15
+
16
+ while (++index < length) {
17
+ var value = index < valsLength ? values[index] : undefined;
18
+ assignFunc(result, props[index], value);
19
+ }
20
+ return result;
21
+ }
22
+
23
+ module.exports = baseZipObject;
node_modules/lodash/_cacheHas.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if a `cache` value for `key` exists.
3
+ *
4
+ * @private
5
+ * @param {Object} cache The cache to query.
6
+ * @param {string} key The key of the entry to check.
7
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
8
+ */
9
+ function cacheHas(cache, key) {
10
+ return cache.has(key);
11
+ }
12
+
13
+ module.exports = cacheHas;
node_modules/lodash/_castArrayLikeObject.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArrayLikeObject = require('./isArrayLikeObject');
2
+
3
+ /**
4
+ * Casts `value` to an empty array if it's not an array like object.
5
+ *
6
+ * @private
7
+ * @param {*} value The value to inspect.
8
+ * @returns {Array|Object} Returns the cast array-like object.
9
+ */
10
+ function castArrayLikeObject(value) {
11
+ return isArrayLikeObject(value) ? value : [];
12
+ }
13
+
14
+ module.exports = castArrayLikeObject;
node_modules/lodash/_castFunction.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var identity = require('./identity');
2
+
3
+ /**
4
+ * Casts `value` to `identity` if it's not a function.
5
+ *
6
+ * @private
7
+ * @param {*} value The value to inspect.
8
+ * @returns {Function} Returns cast function.
9
+ */
10
+ function castFunction(value) {
11
+ return typeof value == 'function' ? value : identity;
12
+ }
13
+
14
+ module.exports = castFunction;
node_modules/lodash/_castPath.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArray = require('./isArray'),
2
+ isKey = require('./_isKey'),
3
+ stringToPath = require('./_stringToPath'),
4
+ toString = require('./toString');
5
+
6
+ /**
7
+ * Casts `value` to a path array if it's not one.
8
+ *
9
+ * @private
10
+ * @param {*} value The value to inspect.
11
+ * @param {Object} [object] The object to query keys on.
12
+ * @returns {Array} Returns the cast property path array.
13
+ */
14
+ function castPath(value, object) {
15
+ if (isArray(value)) {
16
+ return value;
17
+ }
18
+ return isKey(value, object) ? [value] : stringToPath(toString(value));
19
+ }
20
+
21
+ module.exports = castPath;
node_modules/lodash/_castRest.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRest = require('./_baseRest');
2
+
3
+ /**
4
+ * A `baseRest` alias which can be replaced with `identity` by module
5
+ * replacement plugins.
6
+ *
7
+ * @private
8
+ * @type {Function}
9
+ * @param {Function} func The function to apply a rest parameter to.
10
+ * @returns {Function} Returns the new function.
11
+ */
12
+ var castRest = baseRest;
13
+
14
+ module.exports = castRest;
node_modules/lodash/_castSlice.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice');
2
+
3
+ /**
4
+ * Casts `array` to a slice if it's needed.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to inspect.
8
+ * @param {number} start The start position.
9
+ * @param {number} [end=array.length] The end position.
10
+ * @returns {Array} Returns the cast slice.
11
+ */
12
+ function castSlice(array, start, end) {
13
+ var length = array.length;
14
+ end = end === undefined ? length : end;
15
+ return (!start && end >= length) ? array : baseSlice(array, start, end);
16
+ }
17
+
18
+ module.exports = castSlice;
node_modules/lodash/_charsEndIndex.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIndexOf = require('./_baseIndexOf');
2
+
3
+ /**
4
+ * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
5
+ * that is not found in the character symbols.
6
+ *
7
+ * @private
8
+ * @param {Array} strSymbols The string symbols to inspect.
9
+ * @param {Array} chrSymbols The character symbols to find.
10
+ * @returns {number} Returns the index of the last unmatched string symbol.
11
+ */
12
+ function charsEndIndex(strSymbols, chrSymbols) {
13
+ var index = strSymbols.length;
14
+
15
+ while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
16
+ return index;
17
+ }
18
+
19
+ module.exports = charsEndIndex;
node_modules/lodash/_charsStartIndex.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIndexOf = require('./_baseIndexOf');
2
+
3
+ /**
4
+ * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
5
+ * that is not found in the character symbols.
6
+ *
7
+ * @private
8
+ * @param {Array} strSymbols The string symbols to inspect.
9
+ * @param {Array} chrSymbols The character symbols to find.
10
+ * @returns {number} Returns the index of the first unmatched string symbol.
11
+ */
12
+ function charsStartIndex(strSymbols, chrSymbols) {
13
+ var index = -1,
14
+ length = strSymbols.length;
15
+
16
+ while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
17
+ return index;
18
+ }
19
+
20
+ module.exports = charsStartIndex;
node_modules/lodash/_cloneArrayBuffer.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Uint8Array = require('./_Uint8Array');
2
+
3
+ /**
4
+ * Creates a clone of `arrayBuffer`.
5
+ *
6
+ * @private
7
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
8
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
9
+ */
10
+ function cloneArrayBuffer(arrayBuffer) {
11
+ var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
12
+ new Uint8Array(result).set(new Uint8Array(arrayBuffer));
13
+ return result;
14
+ }
15
+
16
+ module.exports = cloneArrayBuffer;
node_modules/lodash/_cloneBuffer.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var root = require('./_root');
2
+
3
+ /** Detect free variable `exports`. */
4
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
5
+
6
+ /** Detect free variable `module`. */
7
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
8
+
9
+ /** Detect the popular CommonJS extension `module.exports`. */
10
+ var moduleExports = freeModule && freeModule.exports === freeExports;
11
+
12
+ /** Built-in value references. */
13
+ var Buffer = moduleExports ? root.Buffer : undefined,
14
+ allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
15
+
16
+ /**
17
+ * Creates a clone of `buffer`.
18
+ *
19
+ * @private
20
+ * @param {Buffer} buffer The buffer to clone.
21
+ * @param {boolean} [isDeep] Specify a deep clone.
22
+ * @returns {Buffer} Returns the cloned buffer.
23
+ */
24
+ function cloneBuffer(buffer, isDeep) {
25
+ if (isDeep) {
26
+ return buffer.slice();
27
+ }
28
+ var length = buffer.length,
29
+ result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
30
+
31
+ buffer.copy(result);
32
+ return result;
33
+ }
34
+
35
+ module.exports = cloneBuffer;
node_modules/lodash/_cloneDataView.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var cloneArrayBuffer = require('./_cloneArrayBuffer');
2
+
3
+ /**
4
+ * Creates a clone of `dataView`.
5
+ *
6
+ * @private
7
+ * @param {Object} dataView The data view to clone.
8
+ * @param {boolean} [isDeep] Specify a deep clone.
9
+ * @returns {Object} Returns the cloned data view.
10
+ */
11
+ function cloneDataView(dataView, isDeep) {
12
+ var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
13
+ return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
14
+ }
15
+
16
+ module.exports = cloneDataView;
node_modules/lodash/_cloneRegExp.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to match `RegExp` flags from their coerced string values. */
2
+ var reFlags = /\w*$/;
3
+
4
+ /**
5
+ * Creates a clone of `regexp`.
6
+ *
7
+ * @private
8
+ * @param {Object} regexp The regexp to clone.
9
+ * @returns {Object} Returns the cloned regexp.
10
+ */
11
+ function cloneRegExp(regexp) {
12
+ var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
13
+ result.lastIndex = regexp.lastIndex;
14
+ return result;
15
+ }
16
+
17
+ module.exports = cloneRegExp;
node_modules/lodash/_cloneSymbol.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol');
2
+
3
+ /** Used to convert symbols to primitives and strings. */
4
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
5
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
6
+
7
+ /**
8
+ * Creates a clone of the `symbol` object.
9
+ *
10
+ * @private
11
+ * @param {Object} symbol The symbol object to clone.
12
+ * @returns {Object} Returns the cloned symbol object.
13
+ */
14
+ function cloneSymbol(symbol) {
15
+ return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
16
+ }
17
+
18
+ module.exports = cloneSymbol;
node_modules/lodash/_cloneTypedArray.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var cloneArrayBuffer = require('./_cloneArrayBuffer');
2
+
3
+ /**
4
+ * Creates a clone of `typedArray`.
5
+ *
6
+ * @private
7
+ * @param {Object} typedArray The typed array to clone.
8
+ * @param {boolean} [isDeep] Specify a deep clone.
9
+ * @returns {Object} Returns the cloned typed array.
10
+ */
11
+ function cloneTypedArray(typedArray, isDeep) {
12
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
13
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
14
+ }
15
+
16
+ module.exports = cloneTypedArray;
node_modules/lodash/_compareAscending.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isSymbol = require('./isSymbol');
2
+
3
+ /**
4
+ * Compares values to sort them in ascending order.
5
+ *
6
+ * @private
7
+ * @param {*} value The value to compare.
8
+ * @param {*} other The other value to compare.
9
+ * @returns {number} Returns the sort order indicator for `value`.
10
+ */
11
+ function compareAscending(value, other) {
12
+ if (value !== other) {
13
+ var valIsDefined = value !== undefined,
14
+ valIsNull = value === null,
15
+ valIsReflexive = value === value,
16
+ valIsSymbol = isSymbol(value);
17
+
18
+ var othIsDefined = other !== undefined,
19
+ othIsNull = other === null,
20
+ othIsReflexive = other === other,
21
+ othIsSymbol = isSymbol(other);
22
+
23
+ if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
24
+ (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
25
+ (valIsNull && othIsDefined && othIsReflexive) ||
26
+ (!valIsDefined && othIsReflexive) ||
27
+ !valIsReflexive) {
28
+ return 1;
29
+ }
30
+ if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
31
+ (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
32
+ (othIsNull && valIsDefined && valIsReflexive) ||
33
+ (!othIsDefined && valIsReflexive) ||
34
+ !othIsReflexive) {
35
+ return -1;
36
+ }
37
+ }
38
+ return 0;
39
+ }
40
+
41
+ module.exports = compareAscending;
node_modules/lodash/_compareMultiple.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var compareAscending = require('./_compareAscending');
2
+
3
+ /**
4
+ * Used by `_.orderBy` to compare multiple properties of a value to another
5
+ * and stable sort them.
6
+ *
7
+ * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
8
+ * specify an order of "desc" for descending or "asc" for ascending sort order
9
+ * of corresponding values.
10
+ *
11
+ * @private
12
+ * @param {Object} object The object to compare.
13
+ * @param {Object} other The other object to compare.
14
+ * @param {boolean[]|string[]} orders The order to sort by for each property.
15
+ * @returns {number} Returns the sort order indicator for `object`.
16
+ */
17
+ function compareMultiple(object, other, orders) {
18
+ var index = -1,
19
+ objCriteria = object.criteria,
20
+ othCriteria = other.criteria,
21
+ length = objCriteria.length,
22
+ ordersLength = orders.length;
23
+
24
+ while (++index < length) {
25
+ var result = compareAscending(objCriteria[index], othCriteria[index]);
26
+ if (result) {
27
+ if (index >= ordersLength) {
28
+ return result;
29
+ }
30
+ var order = orders[index];
31
+ return result * (order == 'desc' ? -1 : 1);
32
+ }
33
+ }
34
+ // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
35
+ // that causes it, under certain circumstances, to provide the same value for
36
+ // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
37
+ // for more details.
38
+ //
39
+ // This also ensures a stable sort in V8 and other engines.
40
+ // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
41
+ return object.index - other.index;
42
+ }
43
+
44
+ module.exports = compareMultiple;
node_modules/lodash/_composeArgs.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeMax = Math.max;
3
+
4
+ /**
5
+ * Creates an array that is the composition of partially applied arguments,
6
+ * placeholders, and provided arguments into a single array of arguments.
7
+ *
8
+ * @private
9
+ * @param {Array} args The provided arguments.
10
+ * @param {Array} partials The arguments to prepend to those provided.
11
+ * @param {Array} holders The `partials` placeholder indexes.
12
+ * @params {boolean} [isCurried] Specify composing for a curried function.
13
+ * @returns {Array} Returns the new array of composed arguments.
14
+ */
15
+ function composeArgs(args, partials, holders, isCurried) {
16
+ var argsIndex = -1,
17
+ argsLength = args.length,
18
+ holdersLength = holders.length,
19
+ leftIndex = -1,
20
+ leftLength = partials.length,
21
+ rangeLength = nativeMax(argsLength - holdersLength, 0),
22
+ result = Array(leftLength + rangeLength),
23
+ isUncurried = !isCurried;
24
+
25
+ while (++leftIndex < leftLength) {
26
+ result[leftIndex] = partials[leftIndex];
27
+ }
28
+ while (++argsIndex < holdersLength) {
29
+ if (isUncurried || argsIndex < argsLength) {
30
+ result[holders[argsIndex]] = args[argsIndex];
31
+ }
32
+ }
33
+ while (rangeLength--) {
34
+ result[leftIndex++] = args[argsIndex++];
35
+ }
36
+ return result;
37
+ }
38
+
39
+ module.exports = composeArgs;
node_modules/lodash/_composeArgsRight.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeMax = Math.max;
3
+
4
+ /**
5
+ * This function is like `composeArgs` except that the arguments composition
6
+ * is tailored for `_.partialRight`.
7
+ *
8
+ * @private
9
+ * @param {Array} args The provided arguments.
10
+ * @param {Array} partials The arguments to append to those provided.
11
+ * @param {Array} holders The `partials` placeholder indexes.
12
+ * @params {boolean} [isCurried] Specify composing for a curried function.
13
+ * @returns {Array} Returns the new array of composed arguments.
14
+ */
15
+ function composeArgsRight(args, partials, holders, isCurried) {
16
+ var argsIndex = -1,
17
+ argsLength = args.length,
18
+ holdersIndex = -1,
19
+ holdersLength = holders.length,
20
+ rightIndex = -1,
21
+ rightLength = partials.length,
22
+ rangeLength = nativeMax(argsLength - holdersLength, 0),
23
+ result = Array(rangeLength + rightLength),
24
+ isUncurried = !isCurried;
25
+
26
+ while (++argsIndex < rangeLength) {
27
+ result[argsIndex] = args[argsIndex];
28
+ }
29
+ var offset = argsIndex;
30
+ while (++rightIndex < rightLength) {
31
+ result[offset + rightIndex] = partials[rightIndex];
32
+ }
33
+ while (++holdersIndex < holdersLength) {
34
+ if (isUncurried || argsIndex < argsLength) {
35
+ result[offset + holders[holdersIndex]] = args[argsIndex++];
36
+ }
37
+ }
38
+ return result;
39
+ }
40
+
41
+ module.exports = composeArgsRight;
node_modules/lodash/_copyArray.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copies the values of `source` to `array`.
3
+ *
4
+ * @private
5
+ * @param {Array} source The array to copy values from.
6
+ * @param {Array} [array=[]] The array to copy values to.
7
+ * @returns {Array} Returns `array`.
8
+ */
9
+ function copyArray(source, array) {
10
+ var index = -1,
11
+ length = source.length;
12
+
13
+ array || (array = Array(length));
14
+ while (++index < length) {
15
+ array[index] = source[index];
16
+ }
17
+ return array;
18
+ }
19
+
20
+ module.exports = copyArray;
node_modules/lodash/_copyObject.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assignValue = require('./_assignValue'),
2
+ baseAssignValue = require('./_baseAssignValue');
3
+
4
+ /**
5
+ * Copies properties of `source` to `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} source The object to copy properties from.
9
+ * @param {Array} props The property identifiers to copy.
10
+ * @param {Object} [object={}] The object to copy properties to.
11
+ * @param {Function} [customizer] The function to customize copied values.
12
+ * @returns {Object} Returns `object`.
13
+ */
14
+ function copyObject(source, props, object, customizer) {
15
+ var isNew = !object;
16
+ object || (object = {});
17
+
18
+ var index = -1,
19
+ length = props.length;
20
+
21
+ while (++index < length) {
22
+ var key = props[index];
23
+
24
+ var newValue = customizer
25
+ ? customizer(object[key], source[key], key, object, source)
26
+ : undefined;
27
+
28
+ if (newValue === undefined) {
29
+ newValue = source[key];
30
+ }
31
+ if (isNew) {
32
+ baseAssignValue(object, key, newValue);
33
+ } else {
34
+ assignValue(object, key, newValue);
35
+ }
36
+ }
37
+ return object;
38
+ }
39
+
40
+ module.exports = copyObject;
node_modules/lodash/_copySymbols.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ getSymbols = require('./_getSymbols');
3
+
4
+ /**
5
+ * Copies own symbols of `source` to `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} source The object to copy symbols from.
9
+ * @param {Object} [object={}] The object to copy symbols to.
10
+ * @returns {Object} Returns `object`.
11
+ */
12
+ function copySymbols(source, object) {
13
+ return copyObject(source, getSymbols(source), object);
14
+ }
15
+
16
+ module.exports = copySymbols;
node_modules/lodash/_copySymbolsIn.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ getSymbolsIn = require('./_getSymbolsIn');
3
+
4
+ /**
5
+ * Copies own and inherited symbols of `source` to `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} source The object to copy symbols from.
9
+ * @param {Object} [object={}] The object to copy symbols to.
10
+ * @returns {Object} Returns `object`.
11
+ */
12
+ function copySymbolsIn(source, object) {
13
+ return copyObject(source, getSymbolsIn(source), object);
14
+ }
15
+
16
+ module.exports = copySymbolsIn;
node_modules/lodash/_coreJsData.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var root = require('./_root');
2
+
3
+ /** Used to detect overreaching core-js shims. */
4
+ var coreJsData = root['__core-js_shared__'];
5
+
6
+ module.exports = coreJsData;
node_modules/lodash/_countHolders.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the number of `placeholder` occurrences in `array`.
3
+ *
4
+ * @private
5
+ * @param {Array} array The array to inspect.
6
+ * @param {*} placeholder The placeholder to search for.
7
+ * @returns {number} Returns the placeholder count.
8
+ */
9
+ function countHolders(array, placeholder) {
10
+ var length = array.length,
11
+ result = 0;
12
+
13
+ while (length--) {
14
+ if (array[length] === placeholder) {
15
+ ++result;
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+
21
+ module.exports = countHolders;
node_modules/lodash/_createAggregator.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayAggregator = require('./_arrayAggregator'),
2
+ baseAggregator = require('./_baseAggregator'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ isArray = require('./isArray');
5
+
6
+ /**
7
+ * Creates a function like `_.groupBy`.
8
+ *
9
+ * @private
10
+ * @param {Function} setter The function to set accumulator values.
11
+ * @param {Function} [initializer] The accumulator object initializer.
12
+ * @returns {Function} Returns the new aggregator function.
13
+ */
14
+ function createAggregator(setter, initializer) {
15
+ return function(collection, iteratee) {
16
+ var func = isArray(collection) ? arrayAggregator : baseAggregator,
17
+ accumulator = initializer ? initializer() : {};
18
+
19
+ return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
20
+ };
21
+ }
22
+
23
+ module.exports = createAggregator;
node_modules/lodash/_createAssigner.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRest = require('./_baseRest'),
2
+ isIterateeCall = require('./_isIterateeCall');
3
+
4
+ /**
5
+ * Creates a function like `_.assign`.
6
+ *
7
+ * @private
8
+ * @param {Function} assigner The function to assign values.
9
+ * @returns {Function} Returns the new assigner function.
10
+ */
11
+ function createAssigner(assigner) {
12
+ return baseRest(function(object, sources) {
13
+ var index = -1,
14
+ length = sources.length,
15
+ customizer = length > 1 ? sources[length - 1] : undefined,
16
+ guard = length > 2 ? sources[2] : undefined;
17
+
18
+ customizer = (assigner.length > 3 && typeof customizer == 'function')
19
+ ? (length--, customizer)
20
+ : undefined;
21
+
22
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
23
+ customizer = length < 3 ? undefined : customizer;
24
+ length = 1;
25
+ }
26
+ object = Object(object);
27
+ while (++index < length) {
28
+ var source = sources[index];
29
+ if (source) {
30
+ assigner(object, source, index, customizer);
31
+ }
32
+ }
33
+ return object;
34
+ });
35
+ }
36
+
37
+ module.exports = createAssigner;
node_modules/lodash/_createBaseEach.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArrayLike = require('./isArrayLike');
2
+
3
+ /**
4
+ * Creates a `baseEach` or `baseEachRight` function.
5
+ *
6
+ * @private
7
+ * @param {Function} eachFunc The function to iterate over a collection.
8
+ * @param {boolean} [fromRight] Specify iterating from right to left.
9
+ * @returns {Function} Returns the new base function.
10
+ */
11
+ function createBaseEach(eachFunc, fromRight) {
12
+ return function(collection, iteratee) {
13
+ if (collection == null) {
14
+ return collection;
15
+ }
16
+ if (!isArrayLike(collection)) {
17
+ return eachFunc(collection, iteratee);
18
+ }
19
+ var length = collection.length,
20
+ index = fromRight ? length : -1,
21
+ iterable = Object(collection);
22
+
23
+ while ((fromRight ? index-- : ++index < length)) {
24
+ if (iteratee(iterable[index], index, iterable) === false) {
25
+ break;
26
+ }
27
+ }
28
+ return collection;
29
+ };
30
+ }
31
+
32
+ module.exports = createBaseEach;
node_modules/lodash/_createBaseFor.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
3
+ *
4
+ * @private
5
+ * @param {boolean} [fromRight] Specify iterating from right to left.
6
+ * @returns {Function} Returns the new base function.
7
+ */
8
+ function createBaseFor(fromRight) {
9
+ return function(object, iteratee, keysFunc) {
10
+ var index = -1,
11
+ iterable = Object(object),
12
+ props = keysFunc(object),
13
+ length = props.length;
14
+
15
+ while (length--) {
16
+ var key = props[fromRight ? length : ++index];
17
+ if (iteratee(iterable[key], key, iterable) === false) {
18
+ break;
19
+ }
20
+ }
21
+ return object;
22
+ };
23
+ }
24
+
25
+ module.exports = createBaseFor;
node_modules/lodash/_createBind.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createCtor = require('./_createCtor'),
2
+ root = require('./_root');
3
+
4
+ /** Used to compose bitmasks for function metadata. */
5
+ var WRAP_BIND_FLAG = 1;
6
+
7
+ /**
8
+ * Creates a function that wraps `func` to invoke it with the optional `this`
9
+ * binding of `thisArg`.
10
+ *
11
+ * @private
12
+ * @param {Function} func The function to wrap.
13
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
14
+ * @param {*} [thisArg] The `this` binding of `func`.
15
+ * @returns {Function} Returns the new wrapped function.
16
+ */
17
+ function createBind(func, bitmask, thisArg) {
18
+ var isBind = bitmask & WRAP_BIND_FLAG,
19
+ Ctor = createCtor(func);
20
+
21
+ function wrapper() {
22
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
23
+ return fn.apply(isBind ? thisArg : this, arguments);
24
+ }
25
+ return wrapper;
26
+ }
27
+
28
+ module.exports = createBind;
node_modules/lodash/_createCaseFirst.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var castSlice = require('./_castSlice'),
2
+ hasUnicode = require('./_hasUnicode'),
3
+ stringToArray = require('./_stringToArray'),
4
+ toString = require('./toString');
5
+
6
+ /**
7
+ * Creates a function like `_.lowerFirst`.
8
+ *
9
+ * @private
10
+ * @param {string} methodName The name of the `String` case method to use.
11
+ * @returns {Function} Returns the new case function.
12
+ */
13
+ function createCaseFirst(methodName) {
14
+ return function(string) {
15
+ string = toString(string);
16
+
17
+ var strSymbols = hasUnicode(string)
18
+ ? stringToArray(string)
19
+ : undefined;
20
+
21
+ var chr = strSymbols
22
+ ? strSymbols[0]
23
+ : string.charAt(0);
24
+
25
+ var trailing = strSymbols
26
+ ? castSlice(strSymbols, 1).join('')
27
+ : string.slice(1);
28
+
29
+ return chr[methodName]() + trailing;
30
+ };
31
+ }
32
+
33
+ module.exports = createCaseFirst;
node_modules/lodash/_createCompounder.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayReduce = require('./_arrayReduce'),
2
+ deburr = require('./deburr'),
3
+ words = require('./words');
4
+
5
+ /** Used to compose unicode capture groups. */
6
+ var rsApos = "['\u2019]";
7
+
8
+ /** Used to match apostrophes. */
9
+ var reApos = RegExp(rsApos, 'g');
10
+
11
+ /**
12
+ * Creates a function like `_.camelCase`.
13
+ *
14
+ * @private
15
+ * @param {Function} callback The function to combine each word.
16
+ * @returns {Function} Returns the new compounder function.
17
+ */
18
+ function createCompounder(callback) {
19
+ return function(string) {
20
+ return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
21
+ };
22
+ }
23
+
24
+ module.exports = createCompounder;
node_modules/lodash/_createCtor.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseCreate = require('./_baseCreate'),
2
+ isObject = require('./isObject');
3
+
4
+ /**
5
+ * Creates a function that produces an instance of `Ctor` regardless of
6
+ * whether it was invoked as part of a `new` expression or by `call` or `apply`.
7
+ *
8
+ * @private
9
+ * @param {Function} Ctor The constructor to wrap.
10
+ * @returns {Function} Returns the new wrapped function.
11
+ */
12
+ function createCtor(Ctor) {
13
+ return function() {
14
+ // Use a `switch` statement to work with class constructors. See
15
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
16
+ // for more details.
17
+ var args = arguments;
18
+ switch (args.length) {
19
+ case 0: return new Ctor;
20
+ case 1: return new Ctor(args[0]);
21
+ case 2: return new Ctor(args[0], args[1]);
22
+ case 3: return new Ctor(args[0], args[1], args[2]);
23
+ case 4: return new Ctor(args[0], args[1], args[2], args[3]);
24
+ case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
25
+ case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
26
+ case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
27
+ }
28
+ var thisBinding = baseCreate(Ctor.prototype),
29
+ result = Ctor.apply(thisBinding, args);
30
+
31
+ // Mimic the constructor's `return` behavior.
32
+ // See https://es5.github.io/#x13.2.2 for more details.
33
+ return isObject(result) ? result : thisBinding;
34
+ };
35
+ }
36
+
37
+ module.exports = createCtor;
node_modules/lodash/_createCurry.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ createCtor = require('./_createCtor'),
3
+ createHybrid = require('./_createHybrid'),
4
+ createRecurry = require('./_createRecurry'),
5
+ getHolder = require('./_getHolder'),
6
+ replaceHolders = require('./_replaceHolders'),
7
+ root = require('./_root');
8
+
9
+ /**
10
+ * Creates a function that wraps `func` to enable currying.
11
+ *
12
+ * @private
13
+ * @param {Function} func The function to wrap.
14
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
15
+ * @param {number} arity The arity of `func`.
16
+ * @returns {Function} Returns the new wrapped function.
17
+ */
18
+ function createCurry(func, bitmask, arity) {
19
+ var Ctor = createCtor(func);
20
+
21
+ function wrapper() {
22
+ var length = arguments.length,
23
+ args = Array(length),
24
+ index = length,
25
+ placeholder = getHolder(wrapper);
26
+
27
+ while (index--) {
28
+ args[index] = arguments[index];
29
+ }
30
+ var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
31
+ ? []
32
+ : replaceHolders(args, placeholder);
33
+
34
+ length -= holders.length;
35
+ if (length < arity) {
36
+ return createRecurry(
37
+ func, bitmask, createHybrid, wrapper.placeholder, undefined,
38
+ args, holders, undefined, undefined, arity - length);
39
+ }
40
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
41
+ return apply(fn, this, args);
42
+ }
43
+ return wrapper;
44
+ }
45
+
46
+ module.exports = createCurry;
node_modules/lodash/_createFind.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIteratee = require('./_baseIteratee'),
2
+ isArrayLike = require('./isArrayLike'),
3
+ keys = require('./keys');
4
+
5
+ /**
6
+ * Creates a `_.find` or `_.findLast` function.
7
+ *
8
+ * @private
9
+ * @param {Function} findIndexFunc The function to find the collection index.
10
+ * @returns {Function} Returns the new find function.
11
+ */
12
+ function createFind(findIndexFunc) {
13
+ return function(collection, predicate, fromIndex) {
14
+ var iterable = Object(collection);
15
+ if (!isArrayLike(collection)) {
16
+ var iteratee = baseIteratee(predicate, 3);
17
+ collection = keys(collection);
18
+ predicate = function(key) { return iteratee(iterable[key], key, iterable); };
19
+ }
20
+ var index = findIndexFunc(collection, predicate, fromIndex);
21
+ return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
22
+ };
23
+ }
24
+
25
+ module.exports = createFind;
node_modules/lodash/_createFlow.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LodashWrapper = require('./_LodashWrapper'),
2
+ flatRest = require('./_flatRest'),
3
+ getData = require('./_getData'),
4
+ getFuncName = require('./_getFuncName'),
5
+ isArray = require('./isArray'),
6
+ isLaziable = require('./_isLaziable');
7
+
8
+ /** Error message constants. */
9
+ var FUNC_ERROR_TEXT = 'Expected a function';
10
+
11
+ /** Used to compose bitmasks for function metadata. */
12
+ var WRAP_CURRY_FLAG = 8,
13
+ WRAP_PARTIAL_FLAG = 32,
14
+ WRAP_ARY_FLAG = 128,
15
+ WRAP_REARG_FLAG = 256;
16
+
17
+ /**
18
+ * Creates a `_.flow` or `_.flowRight` function.
19
+ *
20
+ * @private
21
+ * @param {boolean} [fromRight] Specify iterating from right to left.
22
+ * @returns {Function} Returns the new flow function.
23
+ */
24
+ function createFlow(fromRight) {
25
+ return flatRest(function(funcs) {
26
+ var length = funcs.length,
27
+ index = length,
28
+ prereq = LodashWrapper.prototype.thru;
29
+
30
+ if (fromRight) {
31
+ funcs.reverse();
32
+ }
33
+ while (index--) {
34
+ var func = funcs[index];
35
+ if (typeof func != 'function') {
36
+ throw new TypeError(FUNC_ERROR_TEXT);
37
+ }
38
+ if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
39
+ var wrapper = new LodashWrapper([], true);
40
+ }
41
+ }
42
+ index = wrapper ? index : length;
43
+ while (++index < length) {
44
+ func = funcs[index];
45
+
46
+ var funcName = getFuncName(func),
47
+ data = funcName == 'wrapper' ? getData(func) : undefined;
48
+
49
+ if (data && isLaziable(data[0]) &&
50
+ data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
51
+ !data[4].length && data[9] == 1
52
+ ) {
53
+ wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
54
+ } else {
55
+ wrapper = (func.length == 1 && isLaziable(func))
56
+ ? wrapper[funcName]()
57
+ : wrapper.thru(func);
58
+ }
59
+ }
60
+ return function() {
61
+ var args = arguments,
62
+ value = args[0];
63
+
64
+ if (wrapper && args.length == 1 && isArray(value)) {
65
+ return wrapper.plant(value).value();
66
+ }
67
+ var index = 0,
68
+ result = length ? funcs[index].apply(this, args) : value;
69
+
70
+ while (++index < length) {
71
+ result = funcs[index].call(this, result);
72
+ }
73
+ return result;
74
+ };
75
+ });
76
+ }
77
+
78
+ module.exports = createFlow;
node_modules/lodash/_createHybrid.js ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var composeArgs = require('./_composeArgs'),
2
+ composeArgsRight = require('./_composeArgsRight'),
3
+ countHolders = require('./_countHolders'),
4
+ createCtor = require('./_createCtor'),
5
+ createRecurry = require('./_createRecurry'),
6
+ getHolder = require('./_getHolder'),
7
+ reorder = require('./_reorder'),
8
+ replaceHolders = require('./_replaceHolders'),
9
+ root = require('./_root');
10
+
11
+ /** Used to compose bitmasks for function metadata. */
12
+ var WRAP_BIND_FLAG = 1,
13
+ WRAP_BIND_KEY_FLAG = 2,
14
+ WRAP_CURRY_FLAG = 8,
15
+ WRAP_CURRY_RIGHT_FLAG = 16,
16
+ WRAP_ARY_FLAG = 128,
17
+ WRAP_FLIP_FLAG = 512;
18
+
19
+ /**
20
+ * Creates a function that wraps `func` to invoke it with optional `this`
21
+ * binding of `thisArg`, partial application, and currying.
22
+ *
23
+ * @private
24
+ * @param {Function|string} func The function or method name to wrap.
25
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
26
+ * @param {*} [thisArg] The `this` binding of `func`.
27
+ * @param {Array} [partials] The arguments to prepend to those provided to
28
+ * the new function.
29
+ * @param {Array} [holders] The `partials` placeholder indexes.
30
+ * @param {Array} [partialsRight] The arguments to append to those provided
31
+ * to the new function.
32
+ * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
33
+ * @param {Array} [argPos] The argument positions of the new function.
34
+ * @param {number} [ary] The arity cap of `func`.
35
+ * @param {number} [arity] The arity of `func`.
36
+ * @returns {Function} Returns the new wrapped function.
37
+ */
38
+ function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
39
+ var isAry = bitmask & WRAP_ARY_FLAG,
40
+ isBind = bitmask & WRAP_BIND_FLAG,
41
+ isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
42
+ isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
43
+ isFlip = bitmask & WRAP_FLIP_FLAG,
44
+ Ctor = isBindKey ? undefined : createCtor(func);
45
+
46
+ function wrapper() {
47
+ var length = arguments.length,
48
+ args = Array(length),
49
+ index = length;
50
+
51
+ while (index--) {
52
+ args[index] = arguments[index];
53
+ }
54
+ if (isCurried) {
55
+ var placeholder = getHolder(wrapper),
56
+ holdersCount = countHolders(args, placeholder);
57
+ }
58
+ if (partials) {
59
+ args = composeArgs(args, partials, holders, isCurried);
60
+ }
61
+ if (partialsRight) {
62
+ args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
63
+ }
64
+ length -= holdersCount;
65
+ if (isCurried && length < arity) {
66
+ var newHolders = replaceHolders(args, placeholder);
67
+ return createRecurry(
68
+ func, bitmask, createHybrid, wrapper.placeholder, thisArg,
69
+ args, newHolders, argPos, ary, arity - length
70
+ );
71
+ }
72
+ var thisBinding = isBind ? thisArg : this,
73
+ fn = isBindKey ? thisBinding[func] : func;
74
+
75
+ length = args.length;
76
+ if (argPos) {
77
+ args = reorder(args, argPos);
78
+ } else if (isFlip && length > 1) {
79
+ args.reverse();
80
+ }
81
+ if (isAry && ary < length) {
82
+ args.length = ary;
83
+ }
84
+ if (this && this !== root && this instanceof wrapper) {
85
+ fn = Ctor || createCtor(fn);
86
+ }
87
+ return fn.apply(thisBinding, args);
88
+ }
89
+ return wrapper;
90
+ }
91
+
92
+ module.exports = createHybrid;
node_modules/lodash/_createInverter.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseInverter = require('./_baseInverter');
2
+
3
+ /**
4
+ * Creates a function like `_.invertBy`.
5
+ *
6
+ * @private
7
+ * @param {Function} setter The function to set accumulator values.
8
+ * @param {Function} toIteratee The function to resolve iteratees.
9
+ * @returns {Function} Returns the new inverter function.
10
+ */
11
+ function createInverter(setter, toIteratee) {
12
+ return function(object, iteratee) {
13
+ return baseInverter(object, setter, toIteratee(iteratee), {});
14
+ };
15
+ }
16
+
17
+ module.exports = createInverter;
node_modules/lodash/_createMathOperation.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseToNumber = require('./_baseToNumber'),
2
+ baseToString = require('./_baseToString');
3
+
4
+ /**
5
+ * Creates a function that performs a mathematical operation on two values.
6
+ *
7
+ * @private
8
+ * @param {Function} operator The function to perform the operation.
9
+ * @param {number} [defaultValue] The value used for `undefined` arguments.
10
+ * @returns {Function} Returns the new mathematical operation function.
11
+ */
12
+ function createMathOperation(operator, defaultValue) {
13
+ return function(value, other) {
14
+ var result;
15
+ if (value === undefined && other === undefined) {
16
+ return defaultValue;
17
+ }
18
+ if (value !== undefined) {
19
+ result = value;
20
+ }
21
+ if (other !== undefined) {
22
+ if (result === undefined) {
23
+ return other;
24
+ }
25
+ if (typeof value == 'string' || typeof other == 'string') {
26
+ value = baseToString(value);
27
+ other = baseToString(other);
28
+ } else {
29
+ value = baseToNumber(value);
30
+ other = baseToNumber(other);
31
+ }
32
+ result = operator(value, other);
33
+ }
34
+ return result;
35
+ };
36
+ }
37
+
38
+ module.exports = createMathOperation;
node_modules/lodash/_createOver.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ arrayMap = require('./_arrayMap'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ baseRest = require('./_baseRest'),
5
+ baseUnary = require('./_baseUnary'),
6
+ flatRest = require('./_flatRest');
7
+
8
+ /**
9
+ * Creates a function like `_.over`.
10
+ *
11
+ * @private
12
+ * @param {Function} arrayFunc The function to iterate over iteratees.
13
+ * @returns {Function} Returns the new over function.
14
+ */
15
+ function createOver(arrayFunc) {
16
+ return flatRest(function(iteratees) {
17
+ iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
18
+ return baseRest(function(args) {
19
+ var thisArg = this;
20
+ return arrayFunc(iteratees, function(iteratee) {
21
+ return apply(iteratee, thisArg, args);
22
+ });
23
+ });
24
+ });
25
+ }
26
+
27
+ module.exports = createOver;
node_modules/lodash/_createPadding.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRepeat = require('./_baseRepeat'),
2
+ baseToString = require('./_baseToString'),
3
+ castSlice = require('./_castSlice'),
4
+ hasUnicode = require('./_hasUnicode'),
5
+ stringSize = require('./_stringSize'),
6
+ stringToArray = require('./_stringToArray');
7
+
8
+ /* Built-in method references for those with the same name as other `lodash` methods. */
9
+ var nativeCeil = Math.ceil;
10
+
11
+ /**
12
+ * Creates the padding for `string` based on `length`. The `chars` string
13
+ * is truncated if the number of characters exceeds `length`.
14
+ *
15
+ * @private
16
+ * @param {number} length The padding length.
17
+ * @param {string} [chars=' '] The string used as padding.
18
+ * @returns {string} Returns the padding for `string`.
19
+ */
20
+ function createPadding(length, chars) {
21
+ chars = chars === undefined ? ' ' : baseToString(chars);
22
+
23
+ var charsLength = chars.length;
24
+ if (charsLength < 2) {
25
+ return charsLength ? baseRepeat(chars, length) : chars;
26
+ }
27
+ var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
28
+ return hasUnicode(chars)
29
+ ? castSlice(stringToArray(result), 0, length).join('')
30
+ : result.slice(0, length);
31
+ }
32
+
33
+ module.exports = createPadding;
node_modules/lodash/_createPartial.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ createCtor = require('./_createCtor'),
3
+ root = require('./_root');
4
+
5
+ /** Used to compose bitmasks for function metadata. */
6
+ var WRAP_BIND_FLAG = 1;
7
+
8
+ /**
9
+ * Creates a function that wraps `func` to invoke it with the `this` binding
10
+ * of `thisArg` and `partials` prepended to the arguments it receives.
11
+ *
12
+ * @private
13
+ * @param {Function} func The function to wrap.
14
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
15
+ * @param {*} thisArg The `this` binding of `func`.
16
+ * @param {Array} partials The arguments to prepend to those provided to
17
+ * the new function.
18
+ * @returns {Function} Returns the new wrapped function.
19
+ */
20
+ function createPartial(func, bitmask, thisArg, partials) {
21
+ var isBind = bitmask & WRAP_BIND_FLAG,
22
+ Ctor = createCtor(func);
23
+
24
+ function wrapper() {
25
+ var argsIndex = -1,
26
+ argsLength = arguments.length,
27
+ leftIndex = -1,
28
+ leftLength = partials.length,
29
+ args = Array(leftLength + argsLength),
30
+ fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
31
+
32
+ while (++leftIndex < leftLength) {
33
+ args[leftIndex] = partials[leftIndex];
34
+ }
35
+ while (argsLength--) {
36
+ args[leftIndex++] = arguments[++argsIndex];
37
+ }
38
+ return apply(fn, isBind ? thisArg : this, args);
39
+ }
40
+ return wrapper;
41
+ }
42
+
43
+ module.exports = createPartial;
node_modules/lodash/_createRange.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRange = require('./_baseRange'),
2
+ isIterateeCall = require('./_isIterateeCall'),
3
+ toFinite = require('./toFinite');
4
+
5
+ /**
6
+ * Creates a `_.range` or `_.rangeRight` function.
7
+ *
8
+ * @private
9
+ * @param {boolean} [fromRight] Specify iterating from right to left.
10
+ * @returns {Function} Returns the new range function.
11
+ */
12
+ function createRange(fromRight) {
13
+ return function(start, end, step) {
14
+ if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
15
+ end = step = undefined;
16
+ }
17
+ // Ensure the sign of `-0` is preserved.
18
+ start = toFinite(start);
19
+ if (end === undefined) {
20
+ end = start;
21
+ start = 0;
22
+ } else {
23
+ end = toFinite(end);
24
+ }
25
+ step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
26
+ return baseRange(start, end, step, fromRight);
27
+ };
28
+ }
29
+
30
+ module.exports = createRange;
node_modules/lodash/_createRecurry.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isLaziable = require('./_isLaziable'),
2
+ setData = require('./_setData'),
3
+ setWrapToString = require('./_setWrapToString');
4
+
5
+ /** Used to compose bitmasks for function metadata. */
6
+ var WRAP_BIND_FLAG = 1,
7
+ WRAP_BIND_KEY_FLAG = 2,
8
+ WRAP_CURRY_BOUND_FLAG = 4,
9
+ WRAP_CURRY_FLAG = 8,
10
+ WRAP_PARTIAL_FLAG = 32,
11
+ WRAP_PARTIAL_RIGHT_FLAG = 64;
12
+
13
+ /**
14
+ * Creates a function that wraps `func` to continue currying.
15
+ *
16
+ * @private
17
+ * @param {Function} func The function to wrap.
18
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
19
+ * @param {Function} wrapFunc The function to create the `func` wrapper.
20
+ * @param {*} placeholder The placeholder value.
21
+ * @param {*} [thisArg] The `this` binding of `func`.
22
+ * @param {Array} [partials] The arguments to prepend to those provided to
23
+ * the new function.
24
+ * @param {Array} [holders] The `partials` placeholder indexes.
25
+ * @param {Array} [argPos] The argument positions of the new function.
26
+ * @param {number} [ary] The arity cap of `func`.
27
+ * @param {number} [arity] The arity of `func`.
28
+ * @returns {Function} Returns the new wrapped function.
29
+ */
30
+ function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
31
+ var isCurry = bitmask & WRAP_CURRY_FLAG,
32
+ newHolders = isCurry ? holders : undefined,
33
+ newHoldersRight = isCurry ? undefined : holders,
34
+ newPartials = isCurry ? partials : undefined,
35
+ newPartialsRight = isCurry ? undefined : partials;
36
+
37
+ bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
38
+ bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
39
+
40
+ if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
41
+ bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
42
+ }
43
+ var newData = [
44
+ func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
45
+ newHoldersRight, argPos, ary, arity
46
+ ];
47
+
48
+ var result = wrapFunc.apply(undefined, newData);
49
+ if (isLaziable(func)) {
50
+ setData(result, newData);
51
+ }
52
+ result.placeholder = placeholder;
53
+ return setWrapToString(result, func, bitmask);
54
+ }
55
+
56
+ module.exports = createRecurry;
node_modules/lodash/_createRelationalOperation.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toNumber = require('./toNumber');
2
+
3
+ /**
4
+ * Creates a function that performs a relational operation on two values.
5
+ *
6
+ * @private
7
+ * @param {Function} operator The function to perform the operation.
8
+ * @returns {Function} Returns the new relational operation function.
9
+ */
10
+ function createRelationalOperation(operator) {
11
+ return function(value, other) {
12
+ if (!(typeof value == 'string' && typeof other == 'string')) {
13
+ value = toNumber(value);
14
+ other = toNumber(other);
15
+ }
16
+ return operator(value, other);
17
+ };
18
+ }
19
+
20
+ module.exports = createRelationalOperation;
node_modules/lodash/_createRound.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var root = require('./_root'),
2
+ toInteger = require('./toInteger'),
3
+ toNumber = require('./toNumber'),
4
+ toString = require('./toString');
5
+
6
+ /* Built-in method references for those with the same name as other `lodash` methods. */
7
+ var nativeIsFinite = root.isFinite,
8
+ nativeMin = Math.min;
9
+
10
+ /**
11
+ * Creates a function like `_.round`.
12
+ *
13
+ * @private
14
+ * @param {string} methodName The name of the `Math` method to use when rounding.
15
+ * @returns {Function} Returns the new round function.
16
+ */
17
+ function createRound(methodName) {
18
+ var func = Math[methodName];
19
+ return function(number, precision) {
20
+ number = toNumber(number);
21
+ precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
22
+ if (precision && nativeIsFinite(number)) {
23
+ // Shift with exponential notation to avoid floating-point issues.
24
+ // See [MDN](https://mdn.io/round#Examples) for more details.
25
+ var pair = (toString(number) + 'e').split('e'),
26
+ value = func(pair[0] + 'e' + (+pair[1] + precision));
27
+
28
+ pair = (toString(value) + 'e').split('e');
29
+ return +(pair[0] + 'e' + (+pair[1] - precision));
30
+ }
31
+ return func(number);
32
+ };
33
+ }
34
+
35
+ module.exports = createRound;
node_modules/lodash/_createSet.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Set = require('./_Set'),
2
+ noop = require('./noop'),
3
+ setToArray = require('./_setToArray');
4
+
5
+ /** Used as references for various `Number` constants. */
6
+ var INFINITY = 1 / 0;
7
+
8
+ /**
9
+ * Creates a set object of `values`.
10
+ *
11
+ * @private
12
+ * @param {Array} values The values to add to the set.
13
+ * @returns {Object} Returns the new set.
14
+ */
15
+ var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
16
+ return new Set(values);
17
+ };
18
+
19
+ module.exports = createSet;
node_modules/lodash/_createToPairs.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseToPairs = require('./_baseToPairs'),
2
+ getTag = require('./_getTag'),
3
+ mapToArray = require('./_mapToArray'),
4
+ setToPairs = require('./_setToPairs');
5
+
6
+ /** `Object#toString` result references. */
7
+ var mapTag = '[object Map]',
8
+ setTag = '[object Set]';
9
+
10
+ /**
11
+ * Creates a `_.toPairs` or `_.toPairsIn` function.
12
+ *
13
+ * @private
14
+ * @param {Function} keysFunc The function to get the keys of a given object.
15
+ * @returns {Function} Returns the new pairs function.
16
+ */
17
+ function createToPairs(keysFunc) {
18
+ return function(object) {
19
+ var tag = getTag(object);
20
+ if (tag == mapTag) {
21
+ return mapToArray(object);
22
+ }
23
+ if (tag == setTag) {
24
+ return setToPairs(object);
25
+ }
26
+ return baseToPairs(object, keysFunc(object));
27
+ };
28
+ }
29
+
30
+ module.exports = createToPairs;
node_modules/lodash/_createWrap.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSetData = require('./_baseSetData'),
2
+ createBind = require('./_createBind'),
3
+ createCurry = require('./_createCurry'),
4
+ createHybrid = require('./_createHybrid'),
5
+ createPartial = require('./_createPartial'),
6
+ getData = require('./_getData'),
7
+ mergeData = require('./_mergeData'),
8
+ setData = require('./_setData'),
9
+ setWrapToString = require('./_setWrapToString'),
10
+ toInteger = require('./toInteger');
11
+
12
+ /** Error message constants. */
13
+ var FUNC_ERROR_TEXT = 'Expected a function';
14
+
15
+ /** Used to compose bitmasks for function metadata. */
16
+ var WRAP_BIND_FLAG = 1,
17
+ WRAP_BIND_KEY_FLAG = 2,
18
+ WRAP_CURRY_FLAG = 8,
19
+ WRAP_CURRY_RIGHT_FLAG = 16,
20
+ WRAP_PARTIAL_FLAG = 32,
21
+ WRAP_PARTIAL_RIGHT_FLAG = 64;
22
+
23
+ /* Built-in method references for those with the same name as other `lodash` methods. */
24
+ var nativeMax = Math.max;
25
+
26
+ /**
27
+ * Creates a function that either curries or invokes `func` with optional
28
+ * `this` binding and partially applied arguments.
29
+ *
30
+ * @private
31
+ * @param {Function|string} func The function or method name to wrap.
32
+ * @param {number} bitmask The bitmask flags.
33
+ * 1 - `_.bind`
34
+ * 2 - `_.bindKey`
35
+ * 4 - `_.curry` or `_.curryRight` of a bound function
36
+ * 8 - `_.curry`
37
+ * 16 - `_.curryRight`
38
+ * 32 - `_.partial`
39
+ * 64 - `_.partialRight`
40
+ * 128 - `_.rearg`
41
+ * 256 - `_.ary`
42
+ * 512 - `_.flip`
43
+ * @param {*} [thisArg] The `this` binding of `func`.
44
+ * @param {Array} [partials] The arguments to be partially applied.
45
+ * @param {Array} [holders] The `partials` placeholder indexes.
46
+ * @param {Array} [argPos] The argument positions of the new function.
47
+ * @param {number} [ary] The arity cap of `func`.
48
+ * @param {number} [arity] The arity of `func`.
49
+ * @returns {Function} Returns the new wrapped function.
50
+ */
51
+ function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
52
+ var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
53
+ if (!isBindKey && typeof func != 'function') {
54
+ throw new TypeError(FUNC_ERROR_TEXT);
55
+ }
56
+ var length = partials ? partials.length : 0;
57
+ if (!length) {
58
+ bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
59
+ partials = holders = undefined;
60
+ }
61
+ ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
62
+ arity = arity === undefined ? arity : toInteger(arity);
63
+ length -= holders ? holders.length : 0;
64
+
65
+ if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
66
+ var partialsRight = partials,
67
+ holdersRight = holders;
68
+
69
+ partials = holders = undefined;
70
+ }
71
+ var data = isBindKey ? undefined : getData(func);
72
+
73
+ var newData = [
74
+ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
75
+ argPos, ary, arity
76
+ ];
77
+
78
+ if (data) {
79
+ mergeData(newData, data);
80
+ }
81
+ func = newData[0];
82
+ bitmask = newData[1];
83
+ thisArg = newData[2];
84
+ partials = newData[3];
85
+ holders = newData[4];
86
+ arity = newData[9] = newData[9] === undefined
87
+ ? (isBindKey ? 0 : func.length)
88
+ : nativeMax(newData[9] - length, 0);
89
+
90
+ if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
91
+ bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
92
+ }
93
+ if (!bitmask || bitmask == WRAP_BIND_FLAG) {
94
+ var result = createBind(func, bitmask, thisArg);
95
+ } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
96
+ result = createCurry(func, bitmask, arity);
97
+ } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
98
+ result = createPartial(func, bitmask, thisArg, partials);
99
+ } else {
100
+ result = createHybrid.apply(undefined, newData);
101
+ }
102
+ var setter = data ? baseSetData : setData;
103
+ return setWrapToString(setter(result, newData), func, bitmask);
104
+ }
105
+
106
+ module.exports = createWrap;
node_modules/lodash/_customDefaultsAssignIn.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var eq = require('./eq');
2
+
3
+ /** Used for built-in method references. */
4
+ var objectProto = Object.prototype;
5
+
6
+ /** Used to check objects for own properties. */
7
+ var hasOwnProperty = objectProto.hasOwnProperty;
8
+
9
+ /**
10
+ * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
11
+ * of source objects to the destination object for all destination properties
12
+ * that resolve to `undefined`.
13
+ *
14
+ * @private
15
+ * @param {*} objValue The destination value.
16
+ * @param {*} srcValue The source value.
17
+ * @param {string} key The key of the property to assign.
18
+ * @param {Object} object The parent object of `objValue`.
19
+ * @returns {*} Returns the value to assign.
20
+ */
21
+ function customDefaultsAssignIn(objValue, srcValue, key, object) {
22
+ if (objValue === undefined ||
23
+ (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
24
+ return srcValue;
25
+ }
26
+ return objValue;
27
+ }
28
+
29
+ module.exports = customDefaultsAssignIn;
node_modules/lodash/_customDefaultsMerge.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseMerge = require('./_baseMerge'),
2
+ isObject = require('./isObject');
3
+
4
+ /**
5
+ * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
6
+ * objects into destination objects that are passed thru.
7
+ *
8
+ * @private
9
+ * @param {*} objValue The destination value.
10
+ * @param {*} srcValue The source value.
11
+ * @param {string} key The key of the property to merge.
12
+ * @param {Object} object The parent object of `objValue`.
13
+ * @param {Object} source The parent object of `srcValue`.
14
+ * @param {Object} [stack] Tracks traversed source values and their merged
15
+ * counterparts.
16
+ * @returns {*} Returns the value to assign.
17
+ */
18
+ function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
19
+ if (isObject(objValue) && isObject(srcValue)) {
20
+ // Recursively merge objects and arrays (susceptible to call stack limits).
21
+ stack.set(srcValue, objValue);
22
+ baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
23
+ stack['delete'](srcValue);
24
+ }
25
+ return objValue;
26
+ }
27
+
28
+ module.exports = customDefaultsMerge;
node_modules/lodash/_customOmitClone.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isPlainObject = require('./isPlainObject');
2
+
3
+ /**
4
+ * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
5
+ * objects.
6
+ *
7
+ * @private
8
+ * @param {*} value The value to inspect.
9
+ * @param {string} key The key of the property to inspect.
10
+ * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
11
+ */
12
+ function customOmitClone(value) {
13
+ return isPlainObject(value) ? undefined : value;
14
+ }
15
+
16
+ module.exports = customOmitClone;
node_modules/lodash/_deburrLetter.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var basePropertyOf = require('./_basePropertyOf');
2
+
3
+ /** Used to map Latin Unicode letters to basic Latin letters. */
4
+ var deburredLetters = {
5
+ // Latin-1 Supplement block.
6
+ '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
7
+ '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
8
+ '\xc7': 'C', '\xe7': 'c',
9
+ '\xd0': 'D', '\xf0': 'd',
10
+ '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
11
+ '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
12
+ '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
13
+ '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
14
+ '\xd1': 'N', '\xf1': 'n',
15
+ '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
16
+ '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
17
+ '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
18
+ '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
19
+ '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
20
+ '\xc6': 'Ae', '\xe6': 'ae',
21
+ '\xde': 'Th', '\xfe': 'th',
22
+ '\xdf': 'ss',
23
+ // Latin Extended-A block.
24
+ '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
25
+ '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
26
+ '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
27
+ '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
28
+ '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
29
+ '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
30
+ '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
31
+ '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
32
+ '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
33
+ '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
34
+ '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
35
+ '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
36
+ '\u0134': 'J', '\u0135': 'j',
37
+ '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
38
+ '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
39
+ '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
40
+ '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
41
+ '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
42
+ '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
43
+ '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
44
+ '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
45
+ '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
46
+ '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
47
+ '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
48
+ '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
49
+ '\u0163': 't', '\u0165': 't', '\u0167': 't',
50
+ '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
51
+ '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
52
+ '\u0174': 'W', '\u0175': 'w',
53
+ '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
54
+ '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
55
+ '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
56
+ '\u0132': 'IJ', '\u0133': 'ij',
57
+ '\u0152': 'Oe', '\u0153': 'oe',
58
+ '\u0149': "'n", '\u017f': 's'
59
+ };
60
+
61
+ /**
62
+ * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
63
+ * letters to basic Latin letters.
64
+ *
65
+ * @private
66
+ * @param {string} letter The matched letter to deburr.
67
+ * @returns {string} Returns the deburred letter.
68
+ */
69
+ var deburrLetter = basePropertyOf(deburredLetters);
70
+
71
+ module.exports = deburrLetter;
node_modules/lodash/_defineProperty.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ var getNative = require('./_getNative');
2
+
3
+ var defineProperty = (function() {
4
+ try {
5
+ var func = getNative(Object, 'defineProperty');
6
+ func({}, '', {});
7
+ return func;
8
+ } catch (e) {}
9
+ }());
10
+
11
+ module.exports = defineProperty;
node_modules/lodash/_equalArrays.js ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var SetCache = require('./_SetCache'),
2
+ arraySome = require('./_arraySome'),
3
+ cacheHas = require('./_cacheHas');
4
+
5
+ /** Used to compose bitmasks for value comparisons. */
6
+ var COMPARE_PARTIAL_FLAG = 1,
7
+ COMPARE_UNORDERED_FLAG = 2;
8
+
9
+ /**
10
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
11
+ * partial deep comparisons.
12
+ *
13
+ * @private
14
+ * @param {Array} array The array to compare.
15
+ * @param {Array} other The other array to compare.
16
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
17
+ * @param {Function} customizer The function to customize comparisons.
18
+ * @param {Function} equalFunc The function to determine equivalents of values.
19
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
20
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
21
+ */
22
+ function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
23
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
24
+ arrLength = array.length,
25
+ othLength = other.length;
26
+
27
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
28
+ return false;
29
+ }
30
+ // Check that cyclic values are equal.
31
+ var arrStacked = stack.get(array);
32
+ var othStacked = stack.get(other);
33
+ if (arrStacked && othStacked) {
34
+ return arrStacked == other && othStacked == array;
35
+ }
36
+ var index = -1,
37
+ result = true,
38
+ seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
39
+
40
+ stack.set(array, other);
41
+ stack.set(other, array);
42
+
43
+ // Ignore non-index properties.
44
+ while (++index < arrLength) {
45
+ var arrValue = array[index],
46
+ othValue = other[index];
47
+
48
+ if (customizer) {
49
+ var compared = isPartial
50
+ ? customizer(othValue, arrValue, index, other, array, stack)
51
+ : customizer(arrValue, othValue, index, array, other, stack);
52
+ }
53
+ if (compared !== undefined) {
54
+ if (compared) {
55
+ continue;
56
+ }
57
+ result = false;
58
+ break;
59
+ }
60
+ // Recursively compare arrays (susceptible to call stack limits).
61
+ if (seen) {
62
+ if (!arraySome(other, function(othValue, othIndex) {
63
+ if (!cacheHas(seen, othIndex) &&
64
+ (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
65
+ return seen.push(othIndex);
66
+ }
67
+ })) {
68
+ result = false;
69
+ break;
70
+ }
71
+ } else if (!(
72
+ arrValue === othValue ||
73
+ equalFunc(arrValue, othValue, bitmask, customizer, stack)
74
+ )) {
75
+ result = false;
76
+ break;
77
+ }
78
+ }
79
+ stack['delete'](array);
80
+ stack['delete'](other);
81
+ return result;
82
+ }
83
+
84
+ module.exports = equalArrays;
node_modules/lodash/_equalByTag.js ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol'),
2
+ Uint8Array = require('./_Uint8Array'),
3
+ eq = require('./eq'),
4
+ equalArrays = require('./_equalArrays'),
5
+ mapToArray = require('./_mapToArray'),
6
+ setToArray = require('./_setToArray');
7
+
8
+ /** Used to compose bitmasks for value comparisons. */
9
+ var COMPARE_PARTIAL_FLAG = 1,
10
+ COMPARE_UNORDERED_FLAG = 2;
11
+
12
+ /** `Object#toString` result references. */
13
+ var boolTag = '[object Boolean]',
14
+ dateTag = '[object Date]',
15
+ errorTag = '[object Error]',
16
+ mapTag = '[object Map]',
17
+ numberTag = '[object Number]',
18
+ regexpTag = '[object RegExp]',
19
+ setTag = '[object Set]',
20
+ stringTag = '[object String]',
21
+ symbolTag = '[object Symbol]';
22
+
23
+ var arrayBufferTag = '[object ArrayBuffer]',
24
+ dataViewTag = '[object DataView]';
25
+
26
+ /** Used to convert symbols to primitives and strings. */
27
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
28
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
29
+
30
+ /**
31
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
32
+ * the same `toStringTag`.
33
+ *
34
+ * **Note:** This function only supports comparing values with tags of
35
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
36
+ *
37
+ * @private
38
+ * @param {Object} object The object to compare.
39
+ * @param {Object} other The other object to compare.
40
+ * @param {string} tag The `toStringTag` of the objects to compare.
41
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
42
+ * @param {Function} customizer The function to customize comparisons.
43
+ * @param {Function} equalFunc The function to determine equivalents of values.
44
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
45
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
46
+ */
47
+ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
48
+ switch (tag) {
49
+ case dataViewTag:
50
+ if ((object.byteLength != other.byteLength) ||
51
+ (object.byteOffset != other.byteOffset)) {
52
+ return false;
53
+ }
54
+ object = object.buffer;
55
+ other = other.buffer;
56
+
57
+ case arrayBufferTag:
58
+ if ((object.byteLength != other.byteLength) ||
59
+ !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
60
+ return false;
61
+ }
62
+ return true;
63
+
64
+ case boolTag:
65
+ case dateTag:
66
+ case numberTag:
67
+ // Coerce booleans to `1` or `0` and dates to milliseconds.
68
+ // Invalid dates are coerced to `NaN`.
69
+ return eq(+object, +other);
70
+
71
+ case errorTag:
72
+ return object.name == other.name && object.message == other.message;
73
+
74
+ case regexpTag:
75
+ case stringTag:
76
+ // Coerce regexes to strings and treat strings, primitives and objects,
77
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
78
+ // for more details.
79
+ return object == (other + '');
80
+
81
+ case mapTag:
82
+ var convert = mapToArray;
83
+
84
+ case setTag:
85
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
86
+ convert || (convert = setToArray);
87
+
88
+ if (object.size != other.size && !isPartial) {
89
+ return false;
90
+ }
91
+ // Assume cyclic values are equal.
92
+ var stacked = stack.get(object);
93
+ if (stacked) {
94
+ return stacked == other;
95
+ }
96
+ bitmask |= COMPARE_UNORDERED_FLAG;
97
+
98
+ // Recursively compare objects (susceptible to call stack limits).
99
+ stack.set(object, other);
100
+ var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
101
+ stack['delete'](object);
102
+ return result;
103
+
104
+ case symbolTag:
105
+ if (symbolValueOf) {
106
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
107
+ }
108
+ }
109
+ return false;
110
+ }
111
+
112
+ module.exports = equalByTag;
node_modules/lodash/_equalObjects.js ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getAllKeys = require('./_getAllKeys');
2
+
3
+ /** Used to compose bitmasks for value comparisons. */
4
+ var COMPARE_PARTIAL_FLAG = 1;
5
+
6
+ /** Used for built-in method references. */
7
+ var objectProto = Object.prototype;
8
+
9
+ /** Used to check objects for own properties. */
10
+ var hasOwnProperty = objectProto.hasOwnProperty;
11
+
12
+ /**
13
+ * A specialized version of `baseIsEqualDeep` for objects with support for
14
+ * partial deep comparisons.
15
+ *
16
+ * @private
17
+ * @param {Object} object The object to compare.
18
+ * @param {Object} other The other object to compare.
19
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
20
+ * @param {Function} customizer The function to customize comparisons.
21
+ * @param {Function} equalFunc The function to determine equivalents of values.
22
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
23
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
24
+ */
25
+ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
26
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
27
+ objProps = getAllKeys(object),
28
+ objLength = objProps.length,
29
+ othProps = getAllKeys(other),
30
+ othLength = othProps.length;
31
+
32
+ if (objLength != othLength && !isPartial) {
33
+ return false;
34
+ }
35
+ var index = objLength;
36
+ while (index--) {
37
+ var key = objProps[index];
38
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
39
+ return false;
40
+ }
41
+ }
42
+ // Check that cyclic values are equal.
43
+ var objStacked = stack.get(object);
44
+ var othStacked = stack.get(other);
45
+ if (objStacked && othStacked) {
46
+ return objStacked == other && othStacked == object;
47
+ }
48
+ var result = true;
49
+ stack.set(object, other);
50
+ stack.set(other, object);
51
+
52
+ var skipCtor = isPartial;
53
+ while (++index < objLength) {
54
+ key = objProps[index];
55
+ var objValue = object[key],
56
+ othValue = other[key];
57
+
58
+ if (customizer) {
59
+ var compared = isPartial
60
+ ? customizer(othValue, objValue, key, other, object, stack)
61
+ : customizer(objValue, othValue, key, object, other, stack);
62
+ }
63
+ // Recursively compare objects (susceptible to call stack limits).
64
+ if (!(compared === undefined
65
+ ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
66
+ : compared
67
+ )) {
68
+ result = false;
69
+ break;
70
+ }
71
+ skipCtor || (skipCtor = key == 'constructor');
72
+ }
73
+ if (result && !skipCtor) {
74
+ var objCtor = object.constructor,
75
+ othCtor = other.constructor;
76
+
77
+ // Non `Object` object instances with different constructors are not equal.
78
+ if (objCtor != othCtor &&
79
+ ('constructor' in object && 'constructor' in other) &&
80
+ !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
81
+ typeof othCtor == 'function' && othCtor instanceof othCtor)) {
82
+ result = false;
83
+ }
84
+ }
85
+ stack['delete'](object);
86
+ stack['delete'](other);
87
+ return result;
88
+ }
89
+
90
+ module.exports = equalObjects;
node_modules/lodash/_escapeHtmlChar.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var basePropertyOf = require('./_basePropertyOf');
2
+
3
+ /** Used to map characters to HTML entities. */
4
+ var htmlEscapes = {
5
+ '&': '&amp;',
6
+ '<': '&lt;',
7
+ '>': '&gt;',
8
+ '"': '&quot;',
9
+ "'": '&#39;'
10
+ };
11
+
12
+ /**
13
+ * Used by `_.escape` to convert characters to HTML entities.
14
+ *
15
+ * @private
16
+ * @param {string} chr The matched character to escape.
17
+ * @returns {string} Returns the escaped character.
18
+ */
19
+ var escapeHtmlChar = basePropertyOf(htmlEscapes);
20
+
21
+ module.exports = escapeHtmlChar;
node_modules/lodash/_escapeStringChar.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to escape characters for inclusion in compiled string literals. */
2
+ var stringEscapes = {
3
+ '\\': '\\',
4
+ "'": "'",
5
+ '\n': 'n',
6
+ '\r': 'r',
7
+ '\u2028': 'u2028',
8
+ '\u2029': 'u2029'
9
+ };
10
+
11
+ /**
12
+ * Used by `_.template` to escape characters for inclusion in compiled string literals.
13
+ *
14
+ * @private
15
+ * @param {string} chr The matched character to escape.
16
+ * @returns {string} Returns the escaped character.
17
+ */
18
+ function escapeStringChar(chr) {
19
+ return '\\' + stringEscapes[chr];
20
+ }
21
+
22
+ module.exports = escapeStringChar;
node_modules/lodash/_flatRest.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var flatten = require('./flatten'),
2
+ overRest = require('./_overRest'),
3
+ setToString = require('./_setToString');
4
+
5
+ /**
6
+ * A specialized version of `baseRest` which flattens the rest array.
7
+ *
8
+ * @private
9
+ * @param {Function} func The function to apply a rest parameter to.
10
+ * @returns {Function} Returns the new function.
11
+ */
12
+ function flatRest(func) {
13
+ return setToString(overRest(func, undefined, flatten), func + '');
14
+ }
15
+
16
+ module.exports = flatRest;
node_modules/lodash/_freeGlobal.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Detect free variable `global` from Node.js. */
2
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
3
+
4
+ module.exports = freeGlobal;
node_modules/lodash/_getAllKeys.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetAllKeys = require('./_baseGetAllKeys'),
2
+ getSymbols = require('./_getSymbols'),
3
+ keys = require('./keys');
4
+
5
+ /**
6
+ * Creates an array of own enumerable property names and symbols of `object`.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to query.
10
+ * @returns {Array} Returns the array of property names and symbols.
11
+ */
12
+ function getAllKeys(object) {
13
+ return baseGetAllKeys(object, keys, getSymbols);
14
+ }
15
+
16
+ module.exports = getAllKeys;
node_modules/lodash/_getAllKeysIn.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetAllKeys = require('./_baseGetAllKeys'),
2
+ getSymbolsIn = require('./_getSymbolsIn'),
3
+ keysIn = require('./keysIn');
4
+
5
+ /**
6
+ * Creates an array of own and inherited enumerable property names and
7
+ * symbols of `object`.
8
+ *
9
+ * @private
10
+ * @param {Object} object The object to query.
11
+ * @returns {Array} Returns the array of property names and symbols.
12
+ */
13
+ function getAllKeysIn(object) {
14
+ return baseGetAllKeys(object, keysIn, getSymbolsIn);
15
+ }
16
+
17
+ module.exports = getAllKeysIn;
node_modules/lodash/_getData.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var metaMap = require('./_metaMap'),
2
+ noop = require('./noop');
3
+
4
+ /**
5
+ * Gets metadata for `func`.
6
+ *
7
+ * @private
8
+ * @param {Function} func The function to query.
9
+ * @returns {*} Returns the metadata for `func`.
10
+ */
11
+ var getData = !metaMap ? noop : function(func) {
12
+ return metaMap.get(func);
13
+ };
14
+
15
+ module.exports = getData;
node_modules/lodash/_getFuncName.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var realNames = require('./_realNames');
2
+
3
+ /** Used for built-in method references. */
4
+ var objectProto = Object.prototype;
5
+
6
+ /** Used to check objects for own properties. */
7
+ var hasOwnProperty = objectProto.hasOwnProperty;
8
+
9
+ /**
10
+ * Gets the name of `func`.
11
+ *
12
+ * @private
13
+ * @param {Function} func The function to query.
14
+ * @returns {string} Returns the function name.
15
+ */
16
+ function getFuncName(func) {
17
+ var result = (func.name + ''),
18
+ array = realNames[result],
19
+ length = hasOwnProperty.call(realNames, result) ? array.length : 0;
20
+
21
+ while (length--) {
22
+ var data = array[length],
23
+ otherFunc = data.func;
24
+ if (otherFunc == null || otherFunc == func) {
25
+ return data.name;
26
+ }
27
+ }
28
+ return result;
29
+ }
30
+
31
+ module.exports = getFuncName;
node_modules/lodash/_getHolder.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the argument placeholder value for `func`.
3
+ *
4
+ * @private
5
+ * @param {Function} func The function to inspect.
6
+ * @returns {*} Returns the placeholder value.
7
+ */
8
+ function getHolder(func) {
9
+ var object = func;
10
+ return object.placeholder;
11
+ }
12
+
13
+ module.exports = getHolder;
node_modules/lodash/_getMapData.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isKeyable = require('./_isKeyable');
2
+
3
+ /**
4
+ * Gets the data for `map`.
5
+ *
6
+ * @private
7
+ * @param {Object} map The map to query.
8
+ * @param {string} key The reference key.
9
+ * @returns {*} Returns the map data.
10
+ */
11
+ function getMapData(map, key) {
12
+ var data = map.__data__;
13
+ return isKeyable(key)
14
+ ? data[typeof key == 'string' ? 'string' : 'hash']
15
+ : data.map;
16
+ }
17
+
18
+ module.exports = getMapData;
node_modules/lodash/_getMatchData.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isStrictComparable = require('./_isStrictComparable'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * Gets the property names, values, and compare flags of `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to query.
9
+ * @returns {Array} Returns the match data of `object`.
10
+ */
11
+ function getMatchData(object) {
12
+ var result = keys(object),
13
+ length = result.length;
14
+
15
+ while (length--) {
16
+ var key = result[length],
17
+ value = object[key];
18
+
19
+ result[length] = [key, value, isStrictComparable(value)];
20
+ }
21
+ return result;
22
+ }
23
+
24
+ module.exports = getMatchData;
node_modules/lodash/_getNative.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsNative = require('./_baseIsNative'),
2
+ getValue = require('./_getValue');
3
+
4
+ /**
5
+ * Gets the native function at `key` of `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to query.
9
+ * @param {string} key The key of the method to get.
10
+ * @returns {*} Returns the function if it's native, else `undefined`.
11
+ */
12
+ function getNative(object, key) {
13
+ var value = getValue(object, key);
14
+ return baseIsNative(value) ? value : undefined;
15
+ }
16
+
17
+ module.exports = getNative;
node_modules/lodash/_getPrototype.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var overArg = require('./_overArg');
2
+
3
+ /** Built-in value references. */
4
+ var getPrototype = overArg(Object.getPrototypeOf, Object);
5
+
6
+ module.exports = getPrototype;
node_modules/lodash/_getRawTag.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol');
2
+
3
+ /** Used for built-in method references. */
4
+ var objectProto = Object.prototype;
5
+
6
+ /** Used to check objects for own properties. */
7
+ var hasOwnProperty = objectProto.hasOwnProperty;
8
+
9
+ /**
10
+ * Used to resolve the
11
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
12
+ * of values.
13
+ */
14
+ var nativeObjectToString = objectProto.toString;
15
+
16
+ /** Built-in value references. */
17
+ var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
18
+
19
+ /**
20
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
21
+ *
22
+ * @private
23
+ * @param {*} value The value to query.
24
+ * @returns {string} Returns the raw `toStringTag`.
25
+ */
26
+ function getRawTag(value) {
27
+ var isOwn = hasOwnProperty.call(value, symToStringTag),
28
+ tag = value[symToStringTag];
29
+
30
+ try {
31
+ value[symToStringTag] = undefined;
32
+ var unmasked = true;
33
+ } catch (e) {}
34
+
35
+ var result = nativeObjectToString.call(value);
36
+ if (unmasked) {
37
+ if (isOwn) {
38
+ value[symToStringTag] = tag;
39
+ } else {
40
+ delete value[symToStringTag];
41
+ }
42
+ }
43
+ return result;
44
+ }
45
+
46
+ module.exports = getRawTag;
node_modules/lodash/_getSymbols.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayFilter = require('./_arrayFilter'),
2
+ stubArray = require('./stubArray');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Built-in value references. */
8
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
9
+
10
+ /* Built-in method references for those with the same name as other `lodash` methods. */
11
+ var nativeGetSymbols = Object.getOwnPropertySymbols;
12
+
13
+ /**
14
+ * Creates an array of the own enumerable symbols of `object`.
15
+ *
16
+ * @private
17
+ * @param {Object} object The object to query.
18
+ * @returns {Array} Returns the array of symbols.
19
+ */
20
+ var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
21
+ if (object == null) {
22
+ return [];
23
+ }
24
+ object = Object(object);
25
+ return arrayFilter(nativeGetSymbols(object), function(symbol) {
26
+ return propertyIsEnumerable.call(object, symbol);
27
+ });
28
+ };
29
+
30
+ module.exports = getSymbols;
node_modules/lodash/_getSymbolsIn.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayPush = require('./_arrayPush'),
2
+ getPrototype = require('./_getPrototype'),
3
+ getSymbols = require('./_getSymbols'),
4
+ stubArray = require('./stubArray');
5
+
6
+ /* Built-in method references for those with the same name as other `lodash` methods. */
7
+ var nativeGetSymbols = Object.getOwnPropertySymbols;
8
+
9
+ /**
10
+ * Creates an array of the own and inherited enumerable symbols of `object`.
11
+ *
12
+ * @private
13
+ * @param {Object} object The object to query.
14
+ * @returns {Array} Returns the array of symbols.
15
+ */
16
+ var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
17
+ var result = [];
18
+ while (object) {
19
+ arrayPush(result, getSymbols(object));
20
+ object = getPrototype(object);
21
+ }
22
+ return result;
23
+ };
24
+
25
+ module.exports = getSymbolsIn;
node_modules/lodash/_getTag.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var DataView = require('./_DataView'),
2
+ Map = require('./_Map'),
3
+ Promise = require('./_Promise'),
4
+ Set = require('./_Set'),
5
+ WeakMap = require('./_WeakMap'),
6
+ baseGetTag = require('./_baseGetTag'),
7
+ toSource = require('./_toSource');
8
+
9
+ /** `Object#toString` result references. */
10
+ var mapTag = '[object Map]',
11
+ objectTag = '[object Object]',
12
+ promiseTag = '[object Promise]',
13
+ setTag = '[object Set]',
14
+ weakMapTag = '[object WeakMap]';
15
+
16
+ var dataViewTag = '[object DataView]';
17
+
18
+ /** Used to detect maps, sets, and weakmaps. */
19
+ var dataViewCtorString = toSource(DataView),
20
+ mapCtorString = toSource(Map),
21
+ promiseCtorString = toSource(Promise),
22
+ setCtorString = toSource(Set),
23
+ weakMapCtorString = toSource(WeakMap);
24
+
25
+ /**
26
+ * Gets the `toStringTag` of `value`.
27
+ *
28
+ * @private
29
+ * @param {*} value The value to query.
30
+ * @returns {string} Returns the `toStringTag`.
31
+ */
32
+ var getTag = baseGetTag;
33
+
34
+ // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
35
+ if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
36
+ (Map && getTag(new Map) != mapTag) ||
37
+ (Promise && getTag(Promise.resolve()) != promiseTag) ||
38
+ (Set && getTag(new Set) != setTag) ||
39
+ (WeakMap && getTag(new WeakMap) != weakMapTag)) {
40
+ getTag = function(value) {
41
+ var result = baseGetTag(value),
42
+ Ctor = result == objectTag ? value.constructor : undefined,
43
+ ctorString = Ctor ? toSource(Ctor) : '';
44
+
45
+ if (ctorString) {
46
+ switch (ctorString) {
47
+ case dataViewCtorString: return dataViewTag;
48
+ case mapCtorString: return mapTag;
49
+ case promiseCtorString: return promiseTag;
50
+ case setCtorString: return setTag;
51
+ case weakMapCtorString: return weakMapTag;
52
+ }
53
+ }
54
+ return result;
55
+ };
56
+ }
57
+
58
+ module.exports = getTag;
node_modules/lodash/_getValue.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the value at `key` of `object`.
3
+ *
4
+ * @private
5
+ * @param {Object} [object] The object to query.
6
+ * @param {string} key The key of the property to get.
7
+ * @returns {*} Returns the property value.
8
+ */
9
+ function getValue(object, key) {
10
+ return object == null ? undefined : object[key];
11
+ }
12
+
13
+ module.exports = getValue;
node_modules/lodash/_getView.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Built-in method references for those with the same name as other `lodash` methods. */
2
+ var nativeMax = Math.max,
3
+ nativeMin = Math.min;
4
+
5
+ /**
6
+ * Gets the view, applying any `transforms` to the `start` and `end` positions.
7
+ *
8
+ * @private
9
+ * @param {number} start The start of the view.
10
+ * @param {number} end The end of the view.
11
+ * @param {Array} transforms The transformations to apply to the view.
12
+ * @returns {Object} Returns an object containing the `start` and `end`
13
+ * positions of the view.
14
+ */
15
+ function getView(start, end, transforms) {
16
+ var index = -1,
17
+ length = transforms.length;
18
+
19
+ while (++index < length) {
20
+ var data = transforms[index],
21
+ size = data.size;
22
+
23
+ switch (data.type) {
24
+ case 'drop': start += size; break;
25
+ case 'dropRight': end -= size; break;
26
+ case 'take': end = nativeMin(end, start + size); break;
27
+ case 'takeRight': start = nativeMax(start, end - size); break;
28
+ }
29
+ }
30
+ return { 'start': start, 'end': end };
31
+ }
32
+
33
+ module.exports = getView;
node_modules/lodash/_getWrapDetails.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to match wrap detail comments. */
2
+ var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
3
+ reSplitDetails = /,? & /;
4
+
5
+ /**
6
+ * Extracts wrapper details from the `source` body comment.
7
+ *
8
+ * @private
9
+ * @param {string} source The source to inspect.
10
+ * @returns {Array} Returns the wrapper details.
11
+ */
12
+ function getWrapDetails(source) {
13
+ var match = source.match(reWrapDetails);
14
+ return match ? match[1].split(reSplitDetails) : [];
15
+ }
16
+
17
+ module.exports = getWrapDetails;
node_modules/lodash/_hasPath.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var castPath = require('./_castPath'),
2
+ isArguments = require('./isArguments'),
3
+ isArray = require('./isArray'),
4
+ isIndex = require('./_isIndex'),
5
+ isLength = require('./isLength'),
6
+ toKey = require('./_toKey');
7
+
8
+ /**
9
+ * Checks if `path` exists on `object`.
10
+ *
11
+ * @private
12
+ * @param {Object} object The object to query.
13
+ * @param {Array|string} path The path to check.
14
+ * @param {Function} hasFunc The function to check properties.
15
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
16
+ */
17
+ function hasPath(object, path, hasFunc) {
18
+ path = castPath(path, object);
19
+
20
+ var index = -1,
21
+ length = path.length,
22
+ result = false;
23
+
24
+ while (++index < length) {
25
+ var key = toKey(path[index]);
26
+ if (!(result = object != null && hasFunc(object, key))) {
27
+ break;
28
+ }
29
+ object = object[key];
30
+ }
31
+ if (result || ++index != length) {
32
+ return result;
33
+ }
34
+ length = object == null ? 0 : object.length;
35
+ return !!length && isLength(length) && isIndex(key, length) &&
36
+ (isArray(object) || isArguments(object));
37
+ }
38
+
39
+ module.exports = hasPath;
node_modules/lodash/_hasUnicode.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to compose unicode character classes. */
2
+ var rsAstralRange = '\\ud800-\\udfff',
3
+ rsComboMarksRange = '\\u0300-\\u036f',
4
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
6
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
7
+ rsVarRange = '\\ufe0e\\ufe0f';
8
+
9
+ /** Used to compose unicode capture groups. */
10
+ var rsZWJ = '\\u200d';
11
+
12
+ /** 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/). */
13
+ var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
14
+
15
+ /**
16
+ * Checks if `string` contains Unicode symbols.
17
+ *
18
+ * @private
19
+ * @param {string} string The string to inspect.
20
+ * @returns {boolean} Returns `true` if a symbol is found, else `false`.
21
+ */
22
+ function hasUnicode(string) {
23
+ return reHasUnicode.test(string);
24
+ }
25
+
26
+ module.exports = hasUnicode;
node_modules/lodash/_hasUnicodeWord.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to detect strings that need a more robust regexp to match words. */
2
+ 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 ]/;
3
+
4
+ /**
5
+ * Checks if `string` contains a word composed of Unicode symbols.
6
+ *
7
+ * @private
8
+ * @param {string} string The string to inspect.
9
+ * @returns {boolean} Returns `true` if a word is found, else `false`.
10
+ */
11
+ function hasUnicodeWord(string) {
12
+ return reHasUnicodeWord.test(string);
13
+ }
14
+
15
+ module.exports = hasUnicodeWord;
node_modules/lodash/_hashClear.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var nativeCreate = require('./_nativeCreate');
2
+
3
+ /**
4
+ * Removes all key-value entries from the hash.
5
+ *
6
+ * @private
7
+ * @name clear
8
+ * @memberOf Hash
9
+ */
10
+ function hashClear() {
11
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
12
+ this.size = 0;
13
+ }
14
+
15
+ module.exports = hashClear;
node_modules/lodash/_hashDelete.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Removes `key` and its value from the hash.
3
+ *
4
+ * @private
5
+ * @name delete
6
+ * @memberOf Hash
7
+ * @param {Object} hash The hash to modify.
8
+ * @param {string} key The key of the value to remove.
9
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10
+ */
11
+ function hashDelete(key) {
12
+ var result = this.has(key) && delete this.__data__[key];
13
+ this.size -= result ? 1 : 0;
14
+ return result;
15
+ }
16
+
17
+ module.exports = hashDelete;
node_modules/lodash/_hashGet.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var nativeCreate = require('./_nativeCreate');
2
+
3
+ /** Used to stand-in for `undefined` hash values. */
4
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
5
+
6
+ /** Used for built-in method references. */
7
+ var objectProto = Object.prototype;
8
+
9
+ /** Used to check objects for own properties. */
10
+ var hasOwnProperty = objectProto.hasOwnProperty;
11
+
12
+ /**
13
+ * Gets the hash value for `key`.
14
+ *
15
+ * @private
16
+ * @name get
17
+ * @memberOf Hash
18
+ * @param {string} key The key of the value to get.
19
+ * @returns {*} Returns the entry value.
20
+ */
21
+ function hashGet(key) {
22
+ var data = this.__data__;
23
+ if (nativeCreate) {
24
+ var result = data[key];
25
+ return result === HASH_UNDEFINED ? undefined : result;
26
+ }
27
+ return hasOwnProperty.call(data, key) ? data[key] : undefined;
28
+ }
29
+
30
+ module.exports = hashGet;
node_modules/lodash/_hashHas.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var nativeCreate = require('./_nativeCreate');
2
+
3
+ /** Used for built-in method references. */
4
+ var objectProto = Object.prototype;
5
+
6
+ /** Used to check objects for own properties. */
7
+ var hasOwnProperty = objectProto.hasOwnProperty;
8
+
9
+ /**
10
+ * Checks if a hash value for `key` exists.
11
+ *
12
+ * @private
13
+ * @name has
14
+ * @memberOf Hash
15
+ * @param {string} key The key of the entry to check.
16
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
17
+ */
18
+ function hashHas(key) {
19
+ var data = this.__data__;
20
+ return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
21
+ }
22
+
23
+ module.exports = hashHas;
node_modules/lodash/_hashSet.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var nativeCreate = require('./_nativeCreate');
2
+
3
+ /** Used to stand-in for `undefined` hash values. */
4
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
5
+
6
+ /**
7
+ * Sets the hash `key` to `value`.
8
+ *
9
+ * @private
10
+ * @name set
11
+ * @memberOf Hash
12
+ * @param {string} key The key of the value to set.
13
+ * @param {*} value The value to set.
14
+ * @returns {Object} Returns the hash instance.
15
+ */
16
+ function hashSet(key, value) {
17
+ var data = this.__data__;
18
+ this.size += this.has(key) ? 0 : 1;
19
+ data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
20
+ return this;
21
+ }
22
+
23
+ module.exports = hashSet;
node_modules/lodash/_initCloneArray.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var objectProto = Object.prototype;
3
+
4
+ /** Used to check objects for own properties. */
5
+ var hasOwnProperty = objectProto.hasOwnProperty;
6
+
7
+ /**
8
+ * Initializes an array clone.
9
+ *
10
+ * @private
11
+ * @param {Array} array The array to clone.
12
+ * @returns {Array} Returns the initialized clone.
13
+ */
14
+ function initCloneArray(array) {
15
+ var length = array.length,
16
+ result = new array.constructor(length);
17
+
18
+ // Add properties assigned by `RegExp#exec`.
19
+ if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
20
+ result.index = array.index;
21
+ result.input = array.input;
22
+ }
23
+ return result;
24
+ }
25
+
26
+ module.exports = initCloneArray;
node_modules/lodash/_initCloneByTag.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var cloneArrayBuffer = require('./_cloneArrayBuffer'),
2
+ cloneDataView = require('./_cloneDataView'),
3
+ cloneRegExp = require('./_cloneRegExp'),
4
+ cloneSymbol = require('./_cloneSymbol'),
5
+ cloneTypedArray = require('./_cloneTypedArray');
6
+
7
+ /** `Object#toString` result references. */
8
+ var boolTag = '[object Boolean]',
9
+ dateTag = '[object Date]',
10
+ mapTag = '[object Map]',
11
+ numberTag = '[object Number]',
12
+ regexpTag = '[object RegExp]',
13
+ setTag = '[object Set]',
14
+ stringTag = '[object String]',
15
+ symbolTag = '[object Symbol]';
16
+
17
+ var arrayBufferTag = '[object ArrayBuffer]',
18
+ dataViewTag = '[object DataView]',
19
+ float32Tag = '[object Float32Array]',
20
+ float64Tag = '[object Float64Array]',
21
+ int8Tag = '[object Int8Array]',
22
+ int16Tag = '[object Int16Array]',
23
+ int32Tag = '[object Int32Array]',
24
+ uint8Tag = '[object Uint8Array]',
25
+ uint8ClampedTag = '[object Uint8ClampedArray]',
26
+ uint16Tag = '[object Uint16Array]',
27
+ uint32Tag = '[object Uint32Array]';
28
+
29
+ /**
30
+ * Initializes an object clone based on its `toStringTag`.
31
+ *
32
+ * **Note:** This function only supports cloning values with tags of
33
+ * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
34
+ *
35
+ * @private
36
+ * @param {Object} object The object to clone.
37
+ * @param {string} tag The `toStringTag` of the object to clone.
38
+ * @param {boolean} [isDeep] Specify a deep clone.
39
+ * @returns {Object} Returns the initialized clone.
40
+ */
41
+ function initCloneByTag(object, tag, isDeep) {
42
+ var Ctor = object.constructor;
43
+ switch (tag) {
44
+ case arrayBufferTag:
45
+ return cloneArrayBuffer(object);
46
+
47
+ case boolTag:
48
+ case dateTag:
49
+ return new Ctor(+object);
50
+
51
+ case dataViewTag:
52
+ return cloneDataView(object, isDeep);
53
+
54
+ case float32Tag: case float64Tag:
55
+ case int8Tag: case int16Tag: case int32Tag:
56
+ case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
57
+ return cloneTypedArray(object, isDeep);
58
+
59
+ case mapTag:
60
+ return new Ctor;
61
+
62
+ case numberTag:
63
+ case stringTag:
64
+ return new Ctor(object);
65
+
66
+ case regexpTag:
67
+ return cloneRegExp(object);
68
+
69
+ case setTag:
70
+ return new Ctor;
71
+
72
+ case symbolTag:
73
+ return cloneSymbol(object);
74
+ }
75
+ }
76
+
77
+ module.exports = initCloneByTag;
node_modules/lodash/_initCloneObject.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseCreate = require('./_baseCreate'),
2
+ getPrototype = require('./_getPrototype'),
3
+ isPrototype = require('./_isPrototype');
4
+
5
+ /**
6
+ * Initializes an object clone.
7
+ *
8
+ * @private
9
+ * @param {Object} object The object to clone.
10
+ * @returns {Object} Returns the initialized clone.
11
+ */
12
+ function initCloneObject(object) {
13
+ return (typeof object.constructor == 'function' && !isPrototype(object))
14
+ ? baseCreate(getPrototype(object))
15
+ : {};
16
+ }
17
+
18
+ module.exports = initCloneObject;
node_modules/lodash/_insertWrapDetails.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to match wrap detail comments. */
2
+ var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;
3
+
4
+ /**
5
+ * Inserts wrapper `details` in a comment at the top of the `source` body.
6
+ *
7
+ * @private
8
+ * @param {string} source The source to modify.
9
+ * @returns {Array} details The details to insert.
10
+ * @returns {string} Returns the modified source.
11
+ */
12
+ function insertWrapDetails(source, details) {
13
+ var length = details.length;
14
+ if (!length) {
15
+ return source;
16
+ }
17
+ var lastIndex = length - 1;
18
+ details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
19
+ details = details.join(length > 2 ? ', ' : ' ');
20
+ return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
21
+ }
22
+
23
+ module.exports = insertWrapDetails;
node_modules/lodash/_isFlattenable.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Symbol = require('./_Symbol'),
2
+ isArguments = require('./isArguments'),
3
+ isArray = require('./isArray');
4
+
5
+ /** Built-in value references. */
6
+ var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
7
+
8
+ /**
9
+ * Checks if `value` is a flattenable `arguments` object or array.
10
+ *
11
+ * @private
12
+ * @param {*} value The value to check.
13
+ * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
14
+ */
15
+ function isFlattenable(value) {
16
+ return isArray(value) || isArguments(value) ||
17
+ !!(spreadableSymbol && value && value[spreadableSymbol]);
18
+ }
19
+
20
+ module.exports = isFlattenable;
node_modules/lodash/_isIndex.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used as references for various `Number` constants. */
2
+ var MAX_SAFE_INTEGER = 9007199254740991;
3
+
4
+ /** Used to detect unsigned integer values. */
5
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
6
+
7
+ /**
8
+ * Checks if `value` is a valid array-like index.
9
+ *
10
+ * @private
11
+ * @param {*} value The value to check.
12
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
13
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
14
+ */
15
+ function isIndex(value, length) {
16
+ var type = typeof value;
17
+ length = length == null ? MAX_SAFE_INTEGER : length;
18
+
19
+ return !!length &&
20
+ (type == 'number' ||
21
+ (type != 'symbol' && reIsUint.test(value))) &&
22
+ (value > -1 && value % 1 == 0 && value < length);
23
+ }
24
+
25
+ module.exports = isIndex;
node_modules/lodash/_isIterateeCall.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var eq = require('./eq'),
2
+ isArrayLike = require('./isArrayLike'),
3
+ isIndex = require('./_isIndex'),
4
+ isObject = require('./isObject');
5
+
6
+ /**
7
+ * Checks if the given arguments are from an iteratee call.
8
+ *
9
+ * @private
10
+ * @param {*} value The potential iteratee value argument.
11
+ * @param {*} index The potential iteratee index or key argument.
12
+ * @param {*} object The potential iteratee object argument.
13
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
14
+ * else `false`.
15
+ */
16
+ function isIterateeCall(value, index, object) {
17
+ if (!isObject(object)) {
18
+ return false;
19
+ }
20
+ var type = typeof index;
21
+ if (type == 'number'
22
+ ? (isArrayLike(object) && isIndex(index, object.length))
23
+ : (type == 'string' && index in object)
24
+ ) {
25
+ return eq(object[index], value);
26
+ }
27
+ return false;
28
+ }
29
+
30
+ module.exports = isIterateeCall;
node_modules/lodash/_isKey.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArray = require('./isArray'),
2
+ isSymbol = require('./isSymbol');
3
+
4
+ /** Used to match property names within property paths. */
5
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
6
+ reIsPlainProp = /^\w*$/;
7
+
8
+ /**
9
+ * Checks if `value` is a property name and not a property path.
10
+ *
11
+ * @private
12
+ * @param {*} value The value to check.
13
+ * @param {Object} [object] The object to query keys on.
14
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
15
+ */
16
+ function isKey(value, object) {
17
+ if (isArray(value)) {
18
+ return false;
19
+ }
20
+ var type = typeof value;
21
+ if (type == 'number' || type == 'symbol' || type == 'boolean' ||
22
+ value == null || isSymbol(value)) {
23
+ return true;
24
+ }
25
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
26
+ (object != null && value in Object(object));
27
+ }
28
+
29
+ module.exports = isKey;
node_modules/lodash/_isKeyable.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is suitable for use as unique object key.
3
+ *
4
+ * @private
5
+ * @param {*} value The value to check.
6
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
7
+ */
8
+ function isKeyable(value) {
9
+ var type = typeof value;
10
+ return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
11
+ ? (value !== '__proto__')
12
+ : (value === null);
13
+ }
14
+
15
+ module.exports = isKeyable;
node_modules/lodash/_isLaziable.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LazyWrapper = require('./_LazyWrapper'),
2
+ getData = require('./_getData'),
3
+ getFuncName = require('./_getFuncName'),
4
+ lodash = require('./wrapperLodash');
5
+
6
+ /**
7
+ * Checks if `func` has a lazy counterpart.
8
+ *
9
+ * @private
10
+ * @param {Function} func The function to check.
11
+ * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
12
+ * else `false`.
13
+ */
14
+ function isLaziable(func) {
15
+ var funcName = getFuncName(func),
16
+ other = lodash[funcName];
17
+
18
+ if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
19
+ return false;
20
+ }
21
+ if (func === other) {
22
+ return true;
23
+ }
24
+ var data = getData(other);
25
+ return !!data && func === data[0];
26
+ }
27
+
28
+ module.exports = isLaziable;
node_modules/lodash/_isMaskable.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var coreJsData = require('./_coreJsData'),
2
+ isFunction = require('./isFunction'),
3
+ stubFalse = require('./stubFalse');
4
+
5
+ /**
6
+ * Checks if `func` is capable of being masked.
7
+ *
8
+ * @private
9
+ * @param {*} value The value to check.
10
+ * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
11
+ */
12
+ var isMaskable = coreJsData ? isFunction : stubFalse;
13
+
14
+ module.exports = isMaskable;
node_modules/lodash/_isMasked.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var coreJsData = require('./_coreJsData');
2
+
3
+ /** Used to detect methods masquerading as native. */
4
+ var maskSrcKey = (function() {
5
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
6
+ return uid ? ('Symbol(src)_1.' + uid) : '';
7
+ }());
8
+
9
+ /**
10
+ * Checks if `func` has its source masked.
11
+ *
12
+ * @private
13
+ * @param {Function} func The function to check.
14
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
15
+ */
16
+ function isMasked(func) {
17
+ return !!maskSrcKey && (maskSrcKey in func);
18
+ }
19
+
20
+ module.exports = isMasked;
node_modules/lodash/_isPrototype.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var objectProto = Object.prototype;
3
+
4
+ /**
5
+ * Checks if `value` is likely a prototype object.
6
+ *
7
+ * @private
8
+ * @param {*} value The value to check.
9
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
10
+ */
11
+ function isPrototype(value) {
12
+ var Ctor = value && value.constructor,
13
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
14
+
15
+ return value === proto;
16
+ }
17
+
18
+ module.exports = isPrototype;
node_modules/lodash/_isStrictComparable.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isObject = require('./isObject');
2
+
3
+ /**
4
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5
+ *
6
+ * @private
7
+ * @param {*} value The value to check.
8
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
9
+ * equality comparisons, else `false`.
10
+ */
11
+ function isStrictComparable(value) {
12
+ return value === value && !isObject(value);
13
+ }
14
+
15
+ module.exports = isStrictComparable;
node_modules/lodash/_iteratorToArray.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Converts `iterator` to an array.
3
+ *
4
+ * @private
5
+ * @param {Object} iterator The iterator to convert.
6
+ * @returns {Array} Returns the converted array.
7
+ */
8
+ function iteratorToArray(iterator) {
9
+ var data,
10
+ result = [];
11
+
12
+ while (!(data = iterator.next()).done) {
13
+ result.push(data.value);
14
+ }
15
+ return result;
16
+ }
17
+
18
+ module.exports = iteratorToArray;
node_modules/lodash/_lazyClone.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LazyWrapper = require('./_LazyWrapper'),
2
+ copyArray = require('./_copyArray');
3
+
4
+ /**
5
+ * Creates a clone of the lazy wrapper object.
6
+ *
7
+ * @private
8
+ * @name clone
9
+ * @memberOf LazyWrapper
10
+ * @returns {Object} Returns the cloned `LazyWrapper` object.
11
+ */
12
+ function lazyClone() {
13
+ var result = new LazyWrapper(this.__wrapped__);
14
+ result.__actions__ = copyArray(this.__actions__);
15
+ result.__dir__ = this.__dir__;
16
+ result.__filtered__ = this.__filtered__;
17
+ result.__iteratees__ = copyArray(this.__iteratees__);
18
+ result.__takeCount__ = this.__takeCount__;
19
+ result.__views__ = copyArray(this.__views__);
20
+ return result;
21
+ }
22
+
23
+ module.exports = lazyClone;
node_modules/lodash/_lazyReverse.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LazyWrapper = require('./_LazyWrapper');
2
+
3
+ /**
4
+ * Reverses the direction of lazy iteration.
5
+ *
6
+ * @private
7
+ * @name reverse
8
+ * @memberOf LazyWrapper
9
+ * @returns {Object} Returns the new reversed `LazyWrapper` object.
10
+ */
11
+ function lazyReverse() {
12
+ if (this.__filtered__) {
13
+ var result = new LazyWrapper(this);
14
+ result.__dir__ = -1;
15
+ result.__filtered__ = true;
16
+ } else {
17
+ result = this.clone();
18
+ result.__dir__ *= -1;
19
+ }
20
+ return result;
21
+ }
22
+
23
+ module.exports = lazyReverse;
node_modules/lodash/_lazyValue.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseWrapperValue = require('./_baseWrapperValue'),
2
+ getView = require('./_getView'),
3
+ isArray = require('./isArray');
4
+
5
+ /** Used to indicate the type of lazy iteratees. */
6
+ var LAZY_FILTER_FLAG = 1,
7
+ LAZY_MAP_FLAG = 2;
8
+
9
+ /* Built-in method references for those with the same name as other `lodash` methods. */
10
+ var nativeMin = Math.min;
11
+
12
+ /**
13
+ * Extracts the unwrapped value from its lazy wrapper.
14
+ *
15
+ * @private
16
+ * @name value
17
+ * @memberOf LazyWrapper
18
+ * @returns {*} Returns the unwrapped value.
19
+ */
20
+ function lazyValue() {
21
+ var array = this.__wrapped__.value(),
22
+ dir = this.__dir__,
23
+ isArr = isArray(array),
24
+ isRight = dir < 0,
25
+ arrLength = isArr ? array.length : 0,
26
+ view = getView(0, arrLength, this.__views__),
27
+ start = view.start,
28
+ end = view.end,
29
+ length = end - start,
30
+ index = isRight ? end : (start - 1),
31
+ iteratees = this.__iteratees__,
32
+ iterLength = iteratees.length,
33
+ resIndex = 0,
34
+ takeCount = nativeMin(length, this.__takeCount__);
35
+
36
+ if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
37
+ return baseWrapperValue(array, this.__actions__);
38
+ }
39
+ var result = [];
40
+
41
+ outer:
42
+ while (length-- && resIndex < takeCount) {
43
+ index += dir;
44
+
45
+ var iterIndex = -1,
46
+ value = array[index];
47
+
48
+ while (++iterIndex < iterLength) {
49
+ var data = iteratees[iterIndex],
50
+ iteratee = data.iteratee,
51
+ type = data.type,
52
+ computed = iteratee(value);
53
+
54
+ if (type == LAZY_MAP_FLAG) {
55
+ value = computed;
56
+ } else if (!computed) {
57
+ if (type == LAZY_FILTER_FLAG) {
58
+ continue outer;
59
+ } else {
60
+ break outer;
61
+ }
62
+ }
63
+ }
64
+ result[resIndex++] = value;
65
+ }
66
+ return result;
67
+ }
68
+
69
+ module.exports = lazyValue;
node_modules/lodash/_listCacheClear.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Removes all key-value entries from the list cache.
3
+ *
4
+ * @private
5
+ * @name clear
6
+ * @memberOf ListCache
7
+ */
8
+ function listCacheClear() {
9
+ this.__data__ = [];
10
+ this.size = 0;
11
+ }
12
+
13
+ module.exports = listCacheClear;
node_modules/lodash/_listCacheDelete.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assocIndexOf = require('./_assocIndexOf');
2
+
3
+ /** Used for built-in method references. */
4
+ var arrayProto = Array.prototype;
5
+
6
+ /** Built-in value references. */
7
+ var splice = arrayProto.splice;
8
+
9
+ /**
10
+ * Removes `key` and its value from the list cache.
11
+ *
12
+ * @private
13
+ * @name delete
14
+ * @memberOf ListCache
15
+ * @param {string} key The key of the value to remove.
16
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
17
+ */
18
+ function listCacheDelete(key) {
19
+ var data = this.__data__,
20
+ index = assocIndexOf(data, key);
21
+
22
+ if (index < 0) {
23
+ return false;
24
+ }
25
+ var lastIndex = data.length - 1;
26
+ if (index == lastIndex) {
27
+ data.pop();
28
+ } else {
29
+ splice.call(data, index, 1);
30
+ }
31
+ --this.size;
32
+ return true;
33
+ }
34
+
35
+ module.exports = listCacheDelete;
node_modules/lodash/_listCacheGet.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assocIndexOf = require('./_assocIndexOf');
2
+
3
+ /**
4
+ * Gets the list cache value for `key`.
5
+ *
6
+ * @private
7
+ * @name get
8
+ * @memberOf ListCache
9
+ * @param {string} key The key of the value to get.
10
+ * @returns {*} Returns the entry value.
11
+ */
12
+ function listCacheGet(key) {
13
+ var data = this.__data__,
14
+ index = assocIndexOf(data, key);
15
+
16
+ return index < 0 ? undefined : data[index][1];
17
+ }
18
+
19
+ module.exports = listCacheGet;
node_modules/lodash/_listCacheHas.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assocIndexOf = require('./_assocIndexOf');
2
+
3
+ /**
4
+ * Checks if a list cache value for `key` exists.
5
+ *
6
+ * @private
7
+ * @name has
8
+ * @memberOf ListCache
9
+ * @param {string} key The key of the entry to check.
10
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11
+ */
12
+ function listCacheHas(key) {
13
+ return assocIndexOf(this.__data__, key) > -1;
14
+ }
15
+
16
+ module.exports = listCacheHas;
node_modules/lodash/_listCacheSet.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assocIndexOf = require('./_assocIndexOf');
2
+
3
+ /**
4
+ * Sets the list cache `key` to `value`.
5
+ *
6
+ * @private
7
+ * @name set
8
+ * @memberOf ListCache
9
+ * @param {string} key The key of the value to set.
10
+ * @param {*} value The value to set.
11
+ * @returns {Object} Returns the list cache instance.
12
+ */
13
+ function listCacheSet(key, value) {
14
+ var data = this.__data__,
15
+ index = assocIndexOf(data, key);
16
+
17
+ if (index < 0) {
18
+ ++this.size;
19
+ data.push([key, value]);
20
+ } else {
21
+ data[index][1] = value;
22
+ }
23
+ return this;
24
+ }
25
+
26
+ module.exports = listCacheSet;
node_modules/lodash/_mapCacheClear.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Hash = require('./_Hash'),
2
+ ListCache = require('./_ListCache'),
3
+ Map = require('./_Map');
4
+
5
+ /**
6
+ * Removes all key-value entries from the map.
7
+ *
8
+ * @private
9
+ * @name clear
10
+ * @memberOf MapCache
11
+ */
12
+ function mapCacheClear() {
13
+ this.size = 0;
14
+ this.__data__ = {
15
+ 'hash': new Hash,
16
+ 'map': new (Map || ListCache),
17
+ 'string': new Hash
18
+ };
19
+ }
20
+
21
+ module.exports = mapCacheClear;
node_modules/lodash/_mapCacheDelete.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getMapData = require('./_getMapData');
2
+
3
+ /**
4
+ * Removes `key` and its value from the map.
5
+ *
6
+ * @private
7
+ * @name delete
8
+ * @memberOf MapCache
9
+ * @param {string} key The key of the value to remove.
10
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11
+ */
12
+ function mapCacheDelete(key) {
13
+ var result = getMapData(this, key)['delete'](key);
14
+ this.size -= result ? 1 : 0;
15
+ return result;
16
+ }
17
+
18
+ module.exports = mapCacheDelete;
node_modules/lodash/_mapCacheGet.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getMapData = require('./_getMapData');
2
+
3
+ /**
4
+ * Gets the map value for `key`.
5
+ *
6
+ * @private
7
+ * @name get
8
+ * @memberOf MapCache
9
+ * @param {string} key The key of the value to get.
10
+ * @returns {*} Returns the entry value.
11
+ */
12
+ function mapCacheGet(key) {
13
+ return getMapData(this, key).get(key);
14
+ }
15
+
16
+ module.exports = mapCacheGet;
node_modules/lodash/_mapCacheHas.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getMapData = require('./_getMapData');
2
+
3
+ /**
4
+ * Checks if a map value for `key` exists.
5
+ *
6
+ * @private
7
+ * @name has
8
+ * @memberOf MapCache
9
+ * @param {string} key The key of the entry to check.
10
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11
+ */
12
+ function mapCacheHas(key) {
13
+ return getMapData(this, key).has(key);
14
+ }
15
+
16
+ module.exports = mapCacheHas;
node_modules/lodash/_mapCacheSet.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getMapData = require('./_getMapData');
2
+
3
+ /**
4
+ * Sets the map `key` to `value`.
5
+ *
6
+ * @private
7
+ * @name set
8
+ * @memberOf MapCache
9
+ * @param {string} key The key of the value to set.
10
+ * @param {*} value The value to set.
11
+ * @returns {Object} Returns the map cache instance.
12
+ */
13
+ function mapCacheSet(key, value) {
14
+ var data = getMapData(this, key),
15
+ size = data.size;
16
+
17
+ data.set(key, value);
18
+ this.size += data.size == size ? 0 : 1;
19
+ return this;
20
+ }
21
+
22
+ module.exports = mapCacheSet;
node_modules/lodash/_mapToArray.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Converts `map` to its key-value pairs.
3
+ *
4
+ * @private
5
+ * @param {Object} map The map to convert.
6
+ * @returns {Array} Returns the key-value pairs.
7
+ */
8
+ function mapToArray(map) {
9
+ var index = -1,
10
+ result = Array(map.size);
11
+
12
+ map.forEach(function(value, key) {
13
+ result[++index] = [key, value];
14
+ });
15
+ return result;
16
+ }
17
+
18
+ module.exports = mapToArray;
node_modules/lodash/_matchesStrictComparable.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `matchesProperty` for source values suitable
3
+ * for strict equality comparisons, i.e. `===`.
4
+ *
5
+ * @private
6
+ * @param {string} key The key of the property to get.
7
+ * @param {*} srcValue The value to match.
8
+ * @returns {Function} Returns the new spec function.
9
+ */
10
+ function matchesStrictComparable(key, srcValue) {
11
+ return function(object) {
12
+ if (object == null) {
13
+ return false;
14
+ }
15
+ return object[key] === srcValue &&
16
+ (srcValue !== undefined || (key in Object(object)));
17
+ };
18
+ }
19
+
20
+ module.exports = matchesStrictComparable;
node_modules/lodash/_memoizeCapped.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var memoize = require('./memoize');
2
+
3
+ /** Used as the maximum memoize cache size. */
4
+ var MAX_MEMOIZE_SIZE = 500;
5
+
6
+ /**
7
+ * A specialized version of `_.memoize` which clears the memoized function's
8
+ * cache when it exceeds `MAX_MEMOIZE_SIZE`.
9
+ *
10
+ * @private
11
+ * @param {Function} func The function to have its output memoized.
12
+ * @returns {Function} Returns the new memoized function.
13
+ */
14
+ function memoizeCapped(func) {
15
+ var result = memoize(func, function(key) {
16
+ if (cache.size === MAX_MEMOIZE_SIZE) {
17
+ cache.clear();
18
+ }
19
+ return key;
20
+ });
21
+
22
+ var cache = result.cache;
23
+ return result;
24
+ }
25
+
26
+ module.exports = memoizeCapped;
node_modules/lodash/_mergeData.js ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var composeArgs = require('./_composeArgs'),
2
+ composeArgsRight = require('./_composeArgsRight'),
3
+ replaceHolders = require('./_replaceHolders');
4
+
5
+ /** Used as the internal argument placeholder. */
6
+ var PLACEHOLDER = '__lodash_placeholder__';
7
+
8
+ /** Used to compose bitmasks for function metadata. */
9
+ var WRAP_BIND_FLAG = 1,
10
+ WRAP_BIND_KEY_FLAG = 2,
11
+ WRAP_CURRY_BOUND_FLAG = 4,
12
+ WRAP_CURRY_FLAG = 8,
13
+ WRAP_ARY_FLAG = 128,
14
+ WRAP_REARG_FLAG = 256;
15
+
16
+ /* Built-in method references for those with the same name as other `lodash` methods. */
17
+ var nativeMin = Math.min;
18
+
19
+ /**
20
+ * Merges the function metadata of `source` into `data`.
21
+ *
22
+ * Merging metadata reduces the number of wrappers used to invoke a function.
23
+ * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
24
+ * may be applied regardless of execution order. Methods like `_.ary` and
25
+ * `_.rearg` modify function arguments, making the order in which they are
26
+ * executed important, preventing the merging of metadata. However, we make
27
+ * an exception for a safe combined case where curried functions have `_.ary`
28
+ * and or `_.rearg` applied.
29
+ *
30
+ * @private
31
+ * @param {Array} data The destination metadata.
32
+ * @param {Array} source The source metadata.
33
+ * @returns {Array} Returns `data`.
34
+ */
35
+ function mergeData(data, source) {
36
+ var bitmask = data[1],
37
+ srcBitmask = source[1],
38
+ newBitmask = bitmask | srcBitmask,
39
+ isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
40
+
41
+ var isCombo =
42
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
43
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
44
+ ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
45
+
46
+ // Exit early if metadata can't be merged.
47
+ if (!(isCommon || isCombo)) {
48
+ return data;
49
+ }
50
+ // Use source `thisArg` if available.
51
+ if (srcBitmask & WRAP_BIND_FLAG) {
52
+ data[2] = source[2];
53
+ // Set when currying a bound function.
54
+ newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
55
+ }
56
+ // Compose partial arguments.
57
+ var value = source[3];
58
+ if (value) {
59
+ var partials = data[3];
60
+ data[3] = partials ? composeArgs(partials, value, source[4]) : value;
61
+ data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
62
+ }
63
+ // Compose partial right arguments.
64
+ value = source[5];
65
+ if (value) {
66
+ partials = data[5];
67
+ data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
68
+ data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
69
+ }
70
+ // Use source `argPos` if available.
71
+ value = source[7];
72
+ if (value) {
73
+ data[7] = value;
74
+ }
75
+ // Use source `ary` if it's smaller.
76
+ if (srcBitmask & WRAP_ARY_FLAG) {
77
+ data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
78
+ }
79
+ // Use source `arity` if one is not provided.
80
+ if (data[9] == null) {
81
+ data[9] = source[9];
82
+ }
83
+ // Use source `func` and merge bitmasks.
84
+ data[0] = source[0];
85
+ data[1] = newBitmask;
86
+
87
+ return data;
88
+ }
89
+
90
+ module.exports = mergeData;
node_modules/lodash/_metaMap.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var WeakMap = require('./_WeakMap');
2
+
3
+ /** Used to store function metadata. */
4
+ var metaMap = WeakMap && new WeakMap;
5
+
6
+ module.exports = metaMap;
node_modules/lodash/_nativeCreate.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var getNative = require('./_getNative');
2
+
3
+ /* Built-in method references that are verified to be native. */
4
+ var nativeCreate = getNative(Object, 'create');
5
+
6
+ module.exports = nativeCreate;
node_modules/lodash/_nativeKeys.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ var overArg = require('./_overArg');
2
+
3
+ /* Built-in method references for those with the same name as other `lodash` methods. */
4
+ var nativeKeys = overArg(Object.keys, Object);
5
+
6
+ module.exports = nativeKeys;
node_modules/lodash/_nativeKeysIn.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This function is like
3
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
4
+ * except that it includes inherited enumerable properties.
5
+ *
6
+ * @private
7
+ * @param {Object} object The object to query.
8
+ * @returns {Array} Returns the array of property names.
9
+ */
10
+ function nativeKeysIn(object) {
11
+ var result = [];
12
+ if (object != null) {
13
+ for (var key in Object(object)) {
14
+ result.push(key);
15
+ }
16
+ }
17
+ return result;
18
+ }
19
+
20
+ module.exports = nativeKeysIn;
node_modules/lodash/_nodeUtil.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var freeGlobal = require('./_freeGlobal');
2
+
3
+ /** Detect free variable `exports`. */
4
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
5
+
6
+ /** Detect free variable `module`. */
7
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
8
+
9
+ /** Detect the popular CommonJS extension `module.exports`. */
10
+ var moduleExports = freeModule && freeModule.exports === freeExports;
11
+
12
+ /** Detect free variable `process` from Node.js. */
13
+ var freeProcess = moduleExports && freeGlobal.process;
14
+
15
+ /** Used to access faster Node.js helpers. */
16
+ var nodeUtil = (function() {
17
+ try {
18
+ // Use `util.types` for Node.js 10+.
19
+ var types = freeModule && freeModule.require && freeModule.require('util').types;
20
+
21
+ if (types) {
22
+ return types;
23
+ }
24
+
25
+ // Legacy `process.binding('util')` for Node.js < 10.
26
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
27
+ } catch (e) {}
28
+ }());
29
+
30
+ module.exports = nodeUtil;
node_modules/lodash/_objectToString.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var objectProto = Object.prototype;
3
+
4
+ /**
5
+ * Used to resolve the
6
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7
+ * of values.
8
+ */
9
+ var nativeObjectToString = objectProto.toString;
10
+
11
+ /**
12
+ * Converts `value` to a string using `Object.prototype.toString`.
13
+ *
14
+ * @private
15
+ * @param {*} value The value to convert.
16
+ * @returns {string} Returns the converted string.
17
+ */
18
+ function objectToString(value) {
19
+ return nativeObjectToString.call(value);
20
+ }
21
+
22
+ module.exports = objectToString;
node_modules/lodash/_overArg.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Creates a unary function that invokes `func` with its argument transformed.
3
+ *
4
+ * @private
5
+ * @param {Function} func The function to wrap.
6
+ * @param {Function} transform The argument transform.
7
+ * @returns {Function} Returns the new function.
8
+ */
9
+ function overArg(func, transform) {
10
+ return function(arg) {
11
+ return func(transform(arg));
12
+ };
13
+ }
14
+
15
+ module.exports = overArg;
node_modules/lodash/_overRest.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply');
2
+
3
+ /* Built-in method references for those with the same name as other `lodash` methods. */
4
+ var nativeMax = Math.max;
5
+
6
+ /**
7
+ * A specialized version of `baseRest` which transforms the rest array.
8
+ *
9
+ * @private
10
+ * @param {Function} func The function to apply a rest parameter to.
11
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
12
+ * @param {Function} transform The rest array transform.
13
+ * @returns {Function} Returns the new function.
14
+ */
15
+ function overRest(func, start, transform) {
16
+ start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
17
+ return function() {
18
+ var args = arguments,
19
+ index = -1,
20
+ length = nativeMax(args.length - start, 0),
21
+ array = Array(length);
22
+
23
+ while (++index < length) {
24
+ array[index] = args[start + index];
25
+ }
26
+ index = -1;
27
+ var otherArgs = Array(start + 1);
28
+ while (++index < start) {
29
+ otherArgs[index] = args[index];
30
+ }
31
+ otherArgs[start] = transform(array);
32
+ return apply(func, this, otherArgs);
33
+ };
34
+ }
35
+
36
+ module.exports = overRest;
node_modules/lodash/_parent.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGet = require('./_baseGet'),
2
+ baseSlice = require('./_baseSlice');
3
+
4
+ /**
5
+ * Gets the parent value at `path` of `object`.
6
+ *
7
+ * @private
8
+ * @param {Object} object The object to query.
9
+ * @param {Array} path The path to get the parent value of.
10
+ * @returns {*} Returns the parent value.
11
+ */
12
+ function parent(object, path) {
13
+ return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
14
+ }
15
+
16
+ module.exports = parent;
node_modules/lodash/_reEscape.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Used to match template delimiters. */
2
+ var reEscape = /<%-([\s\S]+?)%>/g;
3
+
4
+ module.exports = reEscape;
node_modules/lodash/_reEvaluate.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Used to match template delimiters. */
2
+ var reEvaluate = /<%([\s\S]+?)%>/g;
3
+
4
+ module.exports = reEvaluate;
node_modules/lodash/_reInterpolate.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Used to match template delimiters. */
2
+ var reInterpolate = /<%=([\s\S]+?)%>/g;
3
+
4
+ module.exports = reInterpolate;
node_modules/lodash/_realNames.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Used to lookup unminified function names. */
2
+ var realNames = {};
3
+
4
+ module.exports = realNames;
node_modules/lodash/_reorder.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyArray = require('./_copyArray'),
2
+ isIndex = require('./_isIndex');
3
+
4
+ /* Built-in method references for those with the same name as other `lodash` methods. */
5
+ var nativeMin = Math.min;
6
+
7
+ /**
8
+ * Reorder `array` according to the specified indexes where the element at
9
+ * the first index is assigned as the first element, the element at
10
+ * the second index is assigned as the second element, and so on.
11
+ *
12
+ * @private
13
+ * @param {Array} array The array to reorder.
14
+ * @param {Array} indexes The arranged array indexes.
15
+ * @returns {Array} Returns `array`.
16
+ */
17
+ function reorder(array, indexes) {
18
+ var arrLength = array.length,
19
+ length = nativeMin(indexes.length, arrLength),
20
+ oldArray = copyArray(array);
21
+
22
+ while (length--) {
23
+ var index = indexes[length];
24
+ array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
25
+ }
26
+ return array;
27
+ }
28
+
29
+ module.exports = reorder;
node_modules/lodash/_replaceHolders.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used as the internal argument placeholder. */
2
+ var PLACEHOLDER = '__lodash_placeholder__';
3
+
4
+ /**
5
+ * Replaces all `placeholder` elements in `array` with an internal placeholder
6
+ * and returns an array of their indexes.
7
+ *
8
+ * @private
9
+ * @param {Array} array The array to modify.
10
+ * @param {*} placeholder The placeholder to replace.
11
+ * @returns {Array} Returns the new array of placeholder indexes.
12
+ */
13
+ function replaceHolders(array, placeholder) {
14
+ var index = -1,
15
+ length = array.length,
16
+ resIndex = 0,
17
+ result = [];
18
+
19
+ while (++index < length) {
20
+ var value = array[index];
21
+ if (value === placeholder || value === PLACEHOLDER) {
22
+ array[index] = PLACEHOLDER;
23
+ result[resIndex++] = index;
24
+ }
25
+ }
26
+ return result;
27
+ }
28
+
29
+ module.exports = replaceHolders;
node_modules/lodash/_root.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ var freeGlobal = require('./_freeGlobal');
2
+
3
+ /** Detect free variable `self`. */
4
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
5
+
6
+ /** Used as a reference to the global object. */
7
+ var root = freeGlobal || freeSelf || Function('return this')();
8
+
9
+ module.exports = root;
node_modules/lodash/_safeGet.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
3
+ *
4
+ * @private
5
+ * @param {Object} object The object to query.
6
+ * @param {string} key The key of the property to get.
7
+ * @returns {*} Returns the property value.
8
+ */
9
+ function safeGet(object, key) {
10
+ if (key === 'constructor' && typeof object[key] === 'function') {
11
+ return;
12
+ }
13
+
14
+ if (key == '__proto__') {
15
+ return;
16
+ }
17
+
18
+ return object[key];
19
+ }
20
+
21
+ module.exports = safeGet;
node_modules/lodash/_setCacheAdd.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to stand-in for `undefined` hash values. */
2
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
3
+
4
+ /**
5
+ * Adds `value` to the array cache.
6
+ *
7
+ * @private
8
+ * @name add
9
+ * @memberOf SetCache
10
+ * @alias push
11
+ * @param {*} value The value to cache.
12
+ * @returns {Object} Returns the cache instance.
13
+ */
14
+ function setCacheAdd(value) {
15
+ this.__data__.set(value, HASH_UNDEFINED);
16
+ return this;
17
+ }
18
+
19
+ module.exports = setCacheAdd;
node_modules/lodash/_setCacheHas.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is in the array cache.
3
+ *
4
+ * @private
5
+ * @name has
6
+ * @memberOf SetCache
7
+ * @param {*} value The value to search for.
8
+ * @returns {number} Returns `true` if `value` is found, else `false`.
9
+ */
10
+ function setCacheHas(value) {
11
+ return this.__data__.has(value);
12
+ }
13
+
14
+ module.exports = setCacheHas;
node_modules/lodash/_setData.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSetData = require('./_baseSetData'),
2
+ shortOut = require('./_shortOut');
3
+
4
+ /**
5
+ * Sets metadata for `func`.
6
+ *
7
+ * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
8
+ * period of time, it will trip its breaker and transition to an identity
9
+ * function to avoid garbage collection pauses in V8. See
10
+ * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
11
+ * for more details.
12
+ *
13
+ * @private
14
+ * @param {Function} func The function to associate metadata with.
15
+ * @param {*} data The metadata.
16
+ * @returns {Function} Returns `func`.
17
+ */
18
+ var setData = shortOut(baseSetData);
19
+
20
+ module.exports = setData;
node_modules/lodash/_setToArray.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Converts `set` to an array of its values.
3
+ *
4
+ * @private
5
+ * @param {Object} set The set to convert.
6
+ * @returns {Array} Returns the values.
7
+ */
8
+ function setToArray(set) {
9
+ var index = -1,
10
+ result = Array(set.size);
11
+
12
+ set.forEach(function(value) {
13
+ result[++index] = value;
14
+ });
15
+ return result;
16
+ }
17
+
18
+ module.exports = setToArray;
node_modules/lodash/_setToPairs.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Converts `set` to its value-value pairs.
3
+ *
4
+ * @private
5
+ * @param {Object} set The set to convert.
6
+ * @returns {Array} Returns the value-value pairs.
7
+ */
8
+ function setToPairs(set) {
9
+ var index = -1,
10
+ result = Array(set.size);
11
+
12
+ set.forEach(function(value) {
13
+ result[++index] = [value, value];
14
+ });
15
+ return result;
16
+ }
17
+
18
+ module.exports = setToPairs;
node_modules/lodash/_setToString.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSetToString = require('./_baseSetToString'),
2
+ shortOut = require('./_shortOut');
3
+
4
+ /**
5
+ * Sets the `toString` method of `func` to return `string`.
6
+ *
7
+ * @private
8
+ * @param {Function} func The function to modify.
9
+ * @param {Function} string The `toString` result.
10
+ * @returns {Function} Returns `func`.
11
+ */
12
+ var setToString = shortOut(baseSetToString);
13
+
14
+ module.exports = setToString;
node_modules/lodash/_setWrapToString.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getWrapDetails = require('./_getWrapDetails'),
2
+ insertWrapDetails = require('./_insertWrapDetails'),
3
+ setToString = require('./_setToString'),
4
+ updateWrapDetails = require('./_updateWrapDetails');
5
+
6
+ /**
7
+ * Sets the `toString` method of `wrapper` to mimic the source of `reference`
8
+ * with wrapper details in a comment at the top of the source body.
9
+ *
10
+ * @private
11
+ * @param {Function} wrapper The function to modify.
12
+ * @param {Function} reference The reference function.
13
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
14
+ * @returns {Function} Returns `wrapper`.
15
+ */
16
+ function setWrapToString(wrapper, reference, bitmask) {
17
+ var source = (reference + '');
18
+ return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
19
+ }
20
+
21
+ module.exports = setWrapToString;
node_modules/lodash/_shortOut.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to detect hot functions by number of calls within a span of milliseconds. */
2
+ var HOT_COUNT = 800,
3
+ HOT_SPAN = 16;
4
+
5
+ /* Built-in method references for those with the same name as other `lodash` methods. */
6
+ var nativeNow = Date.now;
7
+
8
+ /**
9
+ * Creates a function that'll short out and invoke `identity` instead
10
+ * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
11
+ * milliseconds.
12
+ *
13
+ * @private
14
+ * @param {Function} func The function to restrict.
15
+ * @returns {Function} Returns the new shortable function.
16
+ */
17
+ function shortOut(func) {
18
+ var count = 0,
19
+ lastCalled = 0;
20
+
21
+ return function() {
22
+ var stamp = nativeNow(),
23
+ remaining = HOT_SPAN - (stamp - lastCalled);
24
+
25
+ lastCalled = stamp;
26
+ if (remaining > 0) {
27
+ if (++count >= HOT_COUNT) {
28
+ return arguments[0];
29
+ }
30
+ } else {
31
+ count = 0;
32
+ }
33
+ return func.apply(undefined, arguments);
34
+ };
35
+ }
36
+
37
+ module.exports = shortOut;
node_modules/lodash/_shuffleSelf.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRandom = require('./_baseRandom');
2
+
3
+ /**
4
+ * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
5
+ *
6
+ * @private
7
+ * @param {Array} array The array to shuffle.
8
+ * @param {number} [size=array.length] The size of `array`.
9
+ * @returns {Array} Returns `array`.
10
+ */
11
+ function shuffleSelf(array, size) {
12
+ var index = -1,
13
+ length = array.length,
14
+ lastIndex = length - 1;
15
+
16
+ size = size === undefined ? length : size;
17
+ while (++index < size) {
18
+ var rand = baseRandom(index, lastIndex),
19
+ value = array[rand];
20
+
21
+ array[rand] = array[index];
22
+ array[index] = value;
23
+ }
24
+ array.length = size;
25
+ return array;
26
+ }
27
+
28
+ module.exports = shuffleSelf;
node_modules/lodash/_stackClear.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var ListCache = require('./_ListCache');
2
+
3
+ /**
4
+ * Removes all key-value entries from the stack.
5
+ *
6
+ * @private
7
+ * @name clear
8
+ * @memberOf Stack
9
+ */
10
+ function stackClear() {
11
+ this.__data__ = new ListCache;
12
+ this.size = 0;
13
+ }
14
+
15
+ module.exports = stackClear;
node_modules/lodash/_stackDelete.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Removes `key` and its value from the stack.
3
+ *
4
+ * @private
5
+ * @name delete
6
+ * @memberOf Stack
7
+ * @param {string} key The key of the value to remove.
8
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9
+ */
10
+ function stackDelete(key) {
11
+ var data = this.__data__,
12
+ result = data['delete'](key);
13
+
14
+ this.size = data.size;
15
+ return result;
16
+ }
17
+
18
+ module.exports = stackDelete;
node_modules/lodash/_stackGet.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the stack value for `key`.
3
+ *
4
+ * @private
5
+ * @name get
6
+ * @memberOf Stack
7
+ * @param {string} key The key of the value to get.
8
+ * @returns {*} Returns the entry value.
9
+ */
10
+ function stackGet(key) {
11
+ return this.__data__.get(key);
12
+ }
13
+
14
+ module.exports = stackGet;
node_modules/lodash/_stackHas.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if a stack value for `key` exists.
3
+ *
4
+ * @private
5
+ * @name has
6
+ * @memberOf Stack
7
+ * @param {string} key The key of the entry to check.
8
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
9
+ */
10
+ function stackHas(key) {
11
+ return this.__data__.has(key);
12
+ }
13
+
14
+ module.exports = stackHas;
node_modules/lodash/_stackSet.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var ListCache = require('./_ListCache'),
2
+ Map = require('./_Map'),
3
+ MapCache = require('./_MapCache');
4
+
5
+ /** Used as the size to enable large array optimizations. */
6
+ var LARGE_ARRAY_SIZE = 200;
7
+
8
+ /**
9
+ * Sets the stack `key` to `value`.
10
+ *
11
+ * @private
12
+ * @name set
13
+ * @memberOf Stack
14
+ * @param {string} key The key of the value to set.
15
+ * @param {*} value The value to set.
16
+ * @returns {Object} Returns the stack cache instance.
17
+ */
18
+ function stackSet(key, value) {
19
+ var data = this.__data__;
20
+ if (data instanceof ListCache) {
21
+ var pairs = data.__data__;
22
+ if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
23
+ pairs.push([key, value]);
24
+ this.size = ++data.size;
25
+ return this;
26
+ }
27
+ data = this.__data__ = new MapCache(pairs);
28
+ }
29
+ data.set(key, value);
30
+ this.size = data.size;
31
+ return this;
32
+ }
33
+
34
+ module.exports = stackSet;
node_modules/lodash/_strictIndexOf.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.indexOf` which performs strict equality
3
+ * comparisons of values, i.e. `===`.
4
+ *
5
+ * @private
6
+ * @param {Array} array The array to inspect.
7
+ * @param {*} value The value to search for.
8
+ * @param {number} fromIndex The index to search from.
9
+ * @returns {number} Returns the index of the matched value, else `-1`.
10
+ */
11
+ function strictIndexOf(array, value, fromIndex) {
12
+ var index = fromIndex - 1,
13
+ length = array.length;
14
+
15
+ while (++index < length) {
16
+ if (array[index] === value) {
17
+ return index;
18
+ }
19
+ }
20
+ return -1;
21
+ }
22
+
23
+ module.exports = strictIndexOf;
node_modules/lodash/_strictLastIndexOf.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * A specialized version of `_.lastIndexOf` which performs strict equality
3
+ * comparisons of values, i.e. `===`.
4
+ *
5
+ * @private
6
+ * @param {Array} array The array to inspect.
7
+ * @param {*} value The value to search for.
8
+ * @param {number} fromIndex The index to search from.
9
+ * @returns {number} Returns the index of the matched value, else `-1`.
10
+ */
11
+ function strictLastIndexOf(array, value, fromIndex) {
12
+ var index = fromIndex + 1;
13
+ while (index--) {
14
+ if (array[index] === value) {
15
+ return index;
16
+ }
17
+ }
18
+ return index;
19
+ }
20
+
21
+ module.exports = strictLastIndexOf;
node_modules/lodash/_stringSize.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var asciiSize = require('./_asciiSize'),
2
+ hasUnicode = require('./_hasUnicode'),
3
+ unicodeSize = require('./_unicodeSize');
4
+
5
+ /**
6
+ * Gets the number of symbols in `string`.
7
+ *
8
+ * @private
9
+ * @param {string} string The string to inspect.
10
+ * @returns {number} Returns the string size.
11
+ */
12
+ function stringSize(string) {
13
+ return hasUnicode(string)
14
+ ? unicodeSize(string)
15
+ : asciiSize(string);
16
+ }
17
+
18
+ module.exports = stringSize;
node_modules/lodash/_stringToArray.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var asciiToArray = require('./_asciiToArray'),
2
+ hasUnicode = require('./_hasUnicode'),
3
+ unicodeToArray = require('./_unicodeToArray');
4
+
5
+ /**
6
+ * Converts `string` to an array.
7
+ *
8
+ * @private
9
+ * @param {string} string The string to convert.
10
+ * @returns {Array} Returns the converted array.
11
+ */
12
+ function stringToArray(string) {
13
+ return hasUnicode(string)
14
+ ? unicodeToArray(string)
15
+ : asciiToArray(string);
16
+ }
17
+
18
+ module.exports = stringToArray;
node_modules/lodash/_stringToPath.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var memoizeCapped = require('./_memoizeCapped');
2
+
3
+ /** Used to match property names within property paths. */
4
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
5
+
6
+ /** Used to match backslashes in property paths. */
7
+ var reEscapeChar = /\\(\\)?/g;
8
+
9
+ /**
10
+ * Converts `string` to a property path array.
11
+ *
12
+ * @private
13
+ * @param {string} string The string to convert.
14
+ * @returns {Array} Returns the property path array.
15
+ */
16
+ var stringToPath = memoizeCapped(function(string) {
17
+ var result = [];
18
+ if (string.charCodeAt(0) === 46 /* . */) {
19
+ result.push('');
20
+ }
21
+ string.replace(rePropName, function(match, number, quote, subString) {
22
+ result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
23
+ });
24
+ return result;
25
+ });
26
+
27
+ module.exports = stringToPath;
node_modules/lodash/_toKey.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isSymbol = require('./isSymbol');
2
+
3
+ /** Used as references for various `Number` constants. */
4
+ var INFINITY = 1 / 0;
5
+
6
+ /**
7
+ * Converts `value` to a string key if it's not a string or symbol.
8
+ *
9
+ * @private
10
+ * @param {*} value The value to inspect.
11
+ * @returns {string|symbol} Returns the key.
12
+ */
13
+ function toKey(value) {
14
+ if (typeof value == 'string' || isSymbol(value)) {
15
+ return value;
16
+ }
17
+ var result = (value + '');
18
+ return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
19
+ }
20
+
21
+ module.exports = toKey;
node_modules/lodash/_toSource.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var funcProto = Function.prototype;
3
+
4
+ /** Used to resolve the decompiled source of functions. */
5
+ var funcToString = funcProto.toString;
6
+
7
+ /**
8
+ * Converts `func` to its source code.
9
+ *
10
+ * @private
11
+ * @param {Function} func The function to convert.
12
+ * @returns {string} Returns the source code.
13
+ */
14
+ function toSource(func) {
15
+ if (func != null) {
16
+ try {
17
+ return funcToString.call(func);
18
+ } catch (e) {}
19
+ try {
20
+ return (func + '');
21
+ } catch (e) {}
22
+ }
23
+ return '';
24
+ }
25
+
26
+ module.exports = toSource;
node_modules/lodash/_unescapeHtmlChar.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var basePropertyOf = require('./_basePropertyOf');
2
+
3
+ /** Used to map HTML entities to characters. */
4
+ var htmlUnescapes = {
5
+ '&amp;': '&',
6
+ '&lt;': '<',
7
+ '&gt;': '>',
8
+ '&quot;': '"',
9
+ '&#39;': "'"
10
+ };
11
+
12
+ /**
13
+ * Used by `_.unescape` to convert HTML entities to characters.
14
+ *
15
+ * @private
16
+ * @param {string} chr The matched character to unescape.
17
+ * @returns {string} Returns the unescaped character.
18
+ */
19
+ var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
20
+
21
+ module.exports = unescapeHtmlChar;
node_modules/lodash/_unicodeSize.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to compose unicode character classes. */
2
+ var rsAstralRange = '\\ud800-\\udfff',
3
+ rsComboMarksRange = '\\u0300-\\u036f',
4
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
6
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
7
+ rsVarRange = '\\ufe0e\\ufe0f';
8
+
9
+ /** Used to compose unicode capture groups. */
10
+ var rsAstral = '[' + rsAstralRange + ']',
11
+ rsCombo = '[' + rsComboRange + ']',
12
+ rsFitz = '\\ud83c[\\udffb-\\udfff]',
13
+ rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
14
+ rsNonAstral = '[^' + rsAstralRange + ']',
15
+ rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
16
+ rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
17
+ rsZWJ = '\\u200d';
18
+
19
+ /** Used to compose unicode regexes. */
20
+ var reOptMod = rsModifier + '?',
21
+ rsOptVar = '[' + rsVarRange + ']?',
22
+ rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
23
+ rsSeq = rsOptVar + reOptMod + rsOptJoin,
24
+ rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
25
+
26
+ /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
27
+ var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
28
+
29
+ /**
30
+ * Gets the size of a Unicode `string`.
31
+ *
32
+ * @private
33
+ * @param {string} string The string inspect.
34
+ * @returns {number} Returns the string size.
35
+ */
36
+ function unicodeSize(string) {
37
+ var result = reUnicode.lastIndex = 0;
38
+ while (reUnicode.test(string)) {
39
+ ++result;
40
+ }
41
+ return result;
42
+ }
43
+
44
+ module.exports = unicodeSize;
node_modules/lodash/_unicodeToArray.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to compose unicode character classes. */
2
+ var rsAstralRange = '\\ud800-\\udfff',
3
+ rsComboMarksRange = '\\u0300-\\u036f',
4
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
6
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
7
+ rsVarRange = '\\ufe0e\\ufe0f';
8
+
9
+ /** Used to compose unicode capture groups. */
10
+ var rsAstral = '[' + rsAstralRange + ']',
11
+ rsCombo = '[' + rsComboRange + ']',
12
+ rsFitz = '\\ud83c[\\udffb-\\udfff]',
13
+ rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
14
+ rsNonAstral = '[^' + rsAstralRange + ']',
15
+ rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
16
+ rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
17
+ rsZWJ = '\\u200d';
18
+
19
+ /** Used to compose unicode regexes. */
20
+ var reOptMod = rsModifier + '?',
21
+ rsOptVar = '[' + rsVarRange + ']?',
22
+ rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
23
+ rsSeq = rsOptVar + reOptMod + rsOptJoin,
24
+ rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
25
+
26
+ /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
27
+ var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
28
+
29
+ /**
30
+ * Converts a Unicode `string` to an array.
31
+ *
32
+ * @private
33
+ * @param {string} string The string to convert.
34
+ * @returns {Array} Returns the converted array.
35
+ */
36
+ function unicodeToArray(string) {
37
+ return string.match(reUnicode) || [];
38
+ }
39
+
40
+ module.exports = unicodeToArray;
node_modules/lodash/_unicodeWords.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to compose unicode character classes. */
2
+ var rsAstralRange = '\\ud800-\\udfff',
3
+ rsComboMarksRange = '\\u0300-\\u036f',
4
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
6
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
7
+ rsDingbatRange = '\\u2700-\\u27bf',
8
+ rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
9
+ rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
10
+ rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
11
+ rsPunctuationRange = '\\u2000-\\u206f',
12
+ 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',
13
+ rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
14
+ rsVarRange = '\\ufe0e\\ufe0f',
15
+ rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
16
+
17
+ /** Used to compose unicode capture groups. */
18
+ var rsApos = "['\u2019]",
19
+ rsBreak = '[' + rsBreakRange + ']',
20
+ rsCombo = '[' + rsComboRange + ']',
21
+ rsDigits = '\\d+',
22
+ rsDingbat = '[' + rsDingbatRange + ']',
23
+ rsLower = '[' + rsLowerRange + ']',
24
+ rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
25
+ rsFitz = '\\ud83c[\\udffb-\\udfff]',
26
+ rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
27
+ rsNonAstral = '[^' + rsAstralRange + ']',
28
+ rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
29
+ rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
30
+ rsUpper = '[' + rsUpperRange + ']',
31
+ rsZWJ = '\\u200d';
32
+
33
+ /** Used to compose unicode regexes. */
34
+ var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
35
+ rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
36
+ rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
37
+ rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
38
+ reOptMod = rsModifier + '?',
39
+ rsOptVar = '[' + rsVarRange + ']?',
40
+ rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
41
+ rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
42
+ rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
43
+ rsSeq = rsOptVar + reOptMod + rsOptJoin,
44
+ rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
45
+
46
+ /** Used to match complex or compound words. */
47
+ var reUnicodeWord = RegExp([
48
+ rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
49
+ rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
50
+ rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
51
+ rsUpper + '+' + rsOptContrUpper,
52
+ rsOrdUpper,
53
+ rsOrdLower,
54
+ rsDigits,
55
+ rsEmoji
56
+ ].join('|'), 'g');
57
+
58
+ /**
59
+ * Splits a Unicode `string` into an array of its words.
60
+ *
61
+ * @private
62
+ * @param {string} The string to inspect.
63
+ * @returns {Array} Returns the words of `string`.
64
+ */
65
+ function unicodeWords(string) {
66
+ return string.match(reUnicodeWord) || [];
67
+ }
68
+
69
+ module.exports = unicodeWords;
node_modules/lodash/_updateWrapDetails.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayEach = require('./_arrayEach'),
2
+ arrayIncludes = require('./_arrayIncludes');
3
+
4
+ /** Used to compose bitmasks for function metadata. */
5
+ var WRAP_BIND_FLAG = 1,
6
+ WRAP_BIND_KEY_FLAG = 2,
7
+ WRAP_CURRY_FLAG = 8,
8
+ WRAP_CURRY_RIGHT_FLAG = 16,
9
+ WRAP_PARTIAL_FLAG = 32,
10
+ WRAP_PARTIAL_RIGHT_FLAG = 64,
11
+ WRAP_ARY_FLAG = 128,
12
+ WRAP_REARG_FLAG = 256,
13
+ WRAP_FLIP_FLAG = 512;
14
+
15
+ /** Used to associate wrap methods with their bit flags. */
16
+ var wrapFlags = [
17
+ ['ary', WRAP_ARY_FLAG],
18
+ ['bind', WRAP_BIND_FLAG],
19
+ ['bindKey', WRAP_BIND_KEY_FLAG],
20
+ ['curry', WRAP_CURRY_FLAG],
21
+ ['curryRight', WRAP_CURRY_RIGHT_FLAG],
22
+ ['flip', WRAP_FLIP_FLAG],
23
+ ['partial', WRAP_PARTIAL_FLAG],
24
+ ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
25
+ ['rearg', WRAP_REARG_FLAG]
26
+ ];
27
+
28
+ /**
29
+ * Updates wrapper `details` based on `bitmask` flags.
30
+ *
31
+ * @private
32
+ * @returns {Array} details The details to modify.
33
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
34
+ * @returns {Array} Returns `details`.
35
+ */
36
+ function updateWrapDetails(details, bitmask) {
37
+ arrayEach(wrapFlags, function(pair) {
38
+ var value = '_.' + pair[0];
39
+ if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
40
+ details.push(value);
41
+ }
42
+ });
43
+ return details.sort();
44
+ }
45
+
46
+ module.exports = updateWrapDetails;
node_modules/lodash/_wrapperClone.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LazyWrapper = require('./_LazyWrapper'),
2
+ LodashWrapper = require('./_LodashWrapper'),
3
+ copyArray = require('./_copyArray');
4
+
5
+ /**
6
+ * Creates a clone of `wrapper`.
7
+ *
8
+ * @private
9
+ * @param {Object} wrapper The wrapper to clone.
10
+ * @returns {Object} Returns the cloned wrapper.
11
+ */
12
+ function wrapperClone(wrapper) {
13
+ if (wrapper instanceof LazyWrapper) {
14
+ return wrapper.clone();
15
+ }
16
+ var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
17
+ result.__actions__ = copyArray(wrapper.__actions__);
18
+ result.__index__ = wrapper.__index__;
19
+ result.__values__ = wrapper.__values__;
20
+ return result;
21
+ }
22
+
23
+ module.exports = wrapperClone;
node_modules/lodash/add.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createMathOperation = require('./_createMathOperation');
2
+
3
+ /**
4
+ * Adds two numbers.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 3.4.0
9
+ * @category Math
10
+ * @param {number} augend The first number in an addition.
11
+ * @param {number} addend The second number in an addition.
12
+ * @returns {number} Returns the total.
13
+ * @example
14
+ *
15
+ * _.add(6, 4);
16
+ * // => 10
17
+ */
18
+ var add = createMathOperation(function(augend, addend) {
19
+ return augend + addend;
20
+ }, 0);
21
+
22
+ module.exports = add;
node_modules/lodash/after.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toInteger = require('./toInteger');
2
+
3
+ /** Error message constants. */
4
+ var FUNC_ERROR_TEXT = 'Expected a function';
5
+
6
+ /**
7
+ * The opposite of `_.before`; this method creates a function that invokes
8
+ * `func` once it's called `n` or more times.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 0.1.0
13
+ * @category Function
14
+ * @param {number} n The number of calls before `func` is invoked.
15
+ * @param {Function} func The function to restrict.
16
+ * @returns {Function} Returns the new restricted function.
17
+ * @example
18
+ *
19
+ * var saves = ['profile', 'settings'];
20
+ *
21
+ * var done = _.after(saves.length, function() {
22
+ * console.log('done saving!');
23
+ * });
24
+ *
25
+ * _.forEach(saves, function(type) {
26
+ * asyncSave({ 'type': type, 'complete': done });
27
+ * });
28
+ * // => Logs 'done saving!' after the two async saves have completed.
29
+ */
30
+ function after(n, func) {
31
+ if (typeof func != 'function') {
32
+ throw new TypeError(FUNC_ERROR_TEXT);
33
+ }
34
+ n = toInteger(n);
35
+ return function() {
36
+ if (--n < 1) {
37
+ return func.apply(this, arguments);
38
+ }
39
+ };
40
+ }
41
+
42
+ module.exports = after;
node_modules/lodash/array.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'chunk': require('./chunk'),
3
+ 'compact': require('./compact'),
4
+ 'concat': require('./concat'),
5
+ 'difference': require('./difference'),
6
+ 'differenceBy': require('./differenceBy'),
7
+ 'differenceWith': require('./differenceWith'),
8
+ 'drop': require('./drop'),
9
+ 'dropRight': require('./dropRight'),
10
+ 'dropRightWhile': require('./dropRightWhile'),
11
+ 'dropWhile': require('./dropWhile'),
12
+ 'fill': require('./fill'),
13
+ 'findIndex': require('./findIndex'),
14
+ 'findLastIndex': require('./findLastIndex'),
15
+ 'first': require('./first'),
16
+ 'flatten': require('./flatten'),
17
+ 'flattenDeep': require('./flattenDeep'),
18
+ 'flattenDepth': require('./flattenDepth'),
19
+ 'fromPairs': require('./fromPairs'),
20
+ 'head': require('./head'),
21
+ 'indexOf': require('./indexOf'),
22
+ 'initial': require('./initial'),
23
+ 'intersection': require('./intersection'),
24
+ 'intersectionBy': require('./intersectionBy'),
25
+ 'intersectionWith': require('./intersectionWith'),
26
+ 'join': require('./join'),
27
+ 'last': require('./last'),
28
+ 'lastIndexOf': require('./lastIndexOf'),
29
+ 'nth': require('./nth'),
30
+ 'pull': require('./pull'),
31
+ 'pullAll': require('./pullAll'),
32
+ 'pullAllBy': require('./pullAllBy'),
33
+ 'pullAllWith': require('./pullAllWith'),
34
+ 'pullAt': require('./pullAt'),
35
+ 'remove': require('./remove'),
36
+ 'reverse': require('./reverse'),
37
+ 'slice': require('./slice'),
38
+ 'sortedIndex': require('./sortedIndex'),
39
+ 'sortedIndexBy': require('./sortedIndexBy'),
40
+ 'sortedIndexOf': require('./sortedIndexOf'),
41
+ 'sortedLastIndex': require('./sortedLastIndex'),
42
+ 'sortedLastIndexBy': require('./sortedLastIndexBy'),
43
+ 'sortedLastIndexOf': require('./sortedLastIndexOf'),
44
+ 'sortedUniq': require('./sortedUniq'),
45
+ 'sortedUniqBy': require('./sortedUniqBy'),
46
+ 'tail': require('./tail'),
47
+ 'take': require('./take'),
48
+ 'takeRight': require('./takeRight'),
49
+ 'takeRightWhile': require('./takeRightWhile'),
50
+ 'takeWhile': require('./takeWhile'),
51
+ 'union': require('./union'),
52
+ 'unionBy': require('./unionBy'),
53
+ 'unionWith': require('./unionWith'),
54
+ 'uniq': require('./uniq'),
55
+ 'uniqBy': require('./uniqBy'),
56
+ 'uniqWith': require('./uniqWith'),
57
+ 'unzip': require('./unzip'),
58
+ 'unzipWith': require('./unzipWith'),
59
+ 'without': require('./without'),
60
+ 'xor': require('./xor'),
61
+ 'xorBy': require('./xorBy'),
62
+ 'xorWith': require('./xorWith'),
63
+ 'zip': require('./zip'),
64
+ 'zipObject': require('./zipObject'),
65
+ 'zipObjectDeep': require('./zipObjectDeep'),
66
+ 'zipWith': require('./zipWith')
67
+ };
node_modules/lodash/ary.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createWrap = require('./_createWrap');
2
+
3
+ /** Used to compose bitmasks for function metadata. */
4
+ var WRAP_ARY_FLAG = 128;
5
+
6
+ /**
7
+ * Creates a function that invokes `func`, with up to `n` arguments,
8
+ * ignoring any additional arguments.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 3.0.0
13
+ * @category Function
14
+ * @param {Function} func The function to cap arguments for.
15
+ * @param {number} [n=func.length] The arity cap.
16
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
17
+ * @returns {Function} Returns the new capped function.
18
+ * @example
19
+ *
20
+ * _.map(['6', '8', '10'], _.ary(parseInt, 1));
21
+ * // => [6, 8, 10]
22
+ */
23
+ function ary(func, n, guard) {
24
+ n = guard ? undefined : n;
25
+ n = (func && n == null) ? func.length : n;
26
+ return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
27
+ }
28
+
29
+ module.exports = ary;
node_modules/lodash/assign.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var assignValue = require('./_assignValue'),
2
+ copyObject = require('./_copyObject'),
3
+ createAssigner = require('./_createAssigner'),
4
+ isArrayLike = require('./isArrayLike'),
5
+ isPrototype = require('./_isPrototype'),
6
+ keys = require('./keys');
7
+
8
+ /** Used for built-in method references. */
9
+ var objectProto = Object.prototype;
10
+
11
+ /** Used to check objects for own properties. */
12
+ var hasOwnProperty = objectProto.hasOwnProperty;
13
+
14
+ /**
15
+ * Assigns own enumerable string keyed properties of source objects to the
16
+ * destination object. Source objects are applied from left to right.
17
+ * Subsequent sources overwrite property assignments of previous sources.
18
+ *
19
+ * **Note:** This method mutates `object` and is loosely based on
20
+ * [`Object.assign`](https://mdn.io/Object/assign).
21
+ *
22
+ * @static
23
+ * @memberOf _
24
+ * @since 0.10.0
25
+ * @category Object
26
+ * @param {Object} object The destination object.
27
+ * @param {...Object} [sources] The source objects.
28
+ * @returns {Object} Returns `object`.
29
+ * @see _.assignIn
30
+ * @example
31
+ *
32
+ * function Foo() {
33
+ * this.a = 1;
34
+ * }
35
+ *
36
+ * function Bar() {
37
+ * this.c = 3;
38
+ * }
39
+ *
40
+ * Foo.prototype.b = 2;
41
+ * Bar.prototype.d = 4;
42
+ *
43
+ * _.assign({ 'a': 0 }, new Foo, new Bar);
44
+ * // => { 'a': 1, 'c': 3 }
45
+ */
46
+ var assign = createAssigner(function(object, source) {
47
+ if (isPrototype(source) || isArrayLike(source)) {
48
+ copyObject(source, keys(source), object);
49
+ return;
50
+ }
51
+ for (var key in source) {
52
+ if (hasOwnProperty.call(source, key)) {
53
+ assignValue(object, key, source[key]);
54
+ }
55
+ }
56
+ });
57
+
58
+ module.exports = assign;
node_modules/lodash/assignIn.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ createAssigner = require('./_createAssigner'),
3
+ keysIn = require('./keysIn');
4
+
5
+ /**
6
+ * This method is like `_.assign` except that it iterates over own and
7
+ * inherited source properties.
8
+ *
9
+ * **Note:** This method mutates `object`.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.0.0
14
+ * @alias extend
15
+ * @category Object
16
+ * @param {Object} object The destination object.
17
+ * @param {...Object} [sources] The source objects.
18
+ * @returns {Object} Returns `object`.
19
+ * @see _.assign
20
+ * @example
21
+ *
22
+ * function Foo() {
23
+ * this.a = 1;
24
+ * }
25
+ *
26
+ * function Bar() {
27
+ * this.c = 3;
28
+ * }
29
+ *
30
+ * Foo.prototype.b = 2;
31
+ * Bar.prototype.d = 4;
32
+ *
33
+ * _.assignIn({ 'a': 0 }, new Foo, new Bar);
34
+ * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
35
+ */
36
+ var assignIn = createAssigner(function(object, source) {
37
+ copyObject(source, keysIn(source), object);
38
+ });
39
+
40
+ module.exports = assignIn;
node_modules/lodash/assignInWith.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ createAssigner = require('./_createAssigner'),
3
+ keysIn = require('./keysIn');
4
+
5
+ /**
6
+ * This method is like `_.assignIn` except that it accepts `customizer`
7
+ * which is invoked to produce the assigned values. If `customizer` returns
8
+ * `undefined`, assignment is handled by the method instead. The `customizer`
9
+ * is invoked with five arguments: (objValue, srcValue, key, object, source).
10
+ *
11
+ * **Note:** This method mutates `object`.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 4.0.0
16
+ * @alias extendWith
17
+ * @category Object
18
+ * @param {Object} object The destination object.
19
+ * @param {...Object} sources The source objects.
20
+ * @param {Function} [customizer] The function to customize assigned values.
21
+ * @returns {Object} Returns `object`.
22
+ * @see _.assignWith
23
+ * @example
24
+ *
25
+ * function customizer(objValue, srcValue) {
26
+ * return _.isUndefined(objValue) ? srcValue : objValue;
27
+ * }
28
+ *
29
+ * var defaults = _.partialRight(_.assignInWith, customizer);
30
+ *
31
+ * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
32
+ * // => { 'a': 1, 'b': 2 }
33
+ */
34
+ var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
35
+ copyObject(source, keysIn(source), object, customizer);
36
+ });
37
+
38
+ module.exports = assignInWith;
node_modules/lodash/assignWith.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var copyObject = require('./_copyObject'),
2
+ createAssigner = require('./_createAssigner'),
3
+ keys = require('./keys');
4
+
5
+ /**
6
+ * This method is like `_.assign` except that it accepts `customizer`
7
+ * which is invoked to produce the assigned values. If `customizer` returns
8
+ * `undefined`, assignment is handled by the method instead. The `customizer`
9
+ * is invoked with five arguments: (objValue, srcValue, key, object, source).
10
+ *
11
+ * **Note:** This method mutates `object`.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 4.0.0
16
+ * @category Object
17
+ * @param {Object} object The destination object.
18
+ * @param {...Object} sources The source objects.
19
+ * @param {Function} [customizer] The function to customize assigned values.
20
+ * @returns {Object} Returns `object`.
21
+ * @see _.assignInWith
22
+ * @example
23
+ *
24
+ * function customizer(objValue, srcValue) {
25
+ * return _.isUndefined(objValue) ? srcValue : objValue;
26
+ * }
27
+ *
28
+ * var defaults = _.partialRight(_.assignWith, customizer);
29
+ *
30
+ * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
31
+ * // => { 'a': 1, 'b': 2 }
32
+ */
33
+ var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
34
+ copyObject(source, keys(source), object, customizer);
35
+ });
36
+
37
+ module.exports = assignWith;
node_modules/lodash/at.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAt = require('./_baseAt'),
2
+ flatRest = require('./_flatRest');
3
+
4
+ /**
5
+ * Creates an array of values corresponding to `paths` of `object`.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 1.0.0
10
+ * @category Object
11
+ * @param {Object} object The object to iterate over.
12
+ * @param {...(string|string[])} [paths] The property paths to pick.
13
+ * @returns {Array} Returns the picked values.
14
+ * @example
15
+ *
16
+ * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
17
+ *
18
+ * _.at(object, ['a[0].b.c', 'a[1]']);
19
+ * // => [3, 4]
20
+ */
21
+ var at = flatRest(baseAt);
22
+
23
+ module.exports = at;
node_modules/lodash/attempt.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ baseRest = require('./_baseRest'),
3
+ isError = require('./isError');
4
+
5
+ /**
6
+ * Attempts to invoke `func`, returning either the result or the caught error
7
+ * object. Any additional arguments are provided to `func` when it's invoked.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 3.0.0
12
+ * @category Util
13
+ * @param {Function} func The function to attempt.
14
+ * @param {...*} [args] The arguments to invoke `func` with.
15
+ * @returns {*} Returns the `func` result or error object.
16
+ * @example
17
+ *
18
+ * // Avoid throwing errors for invalid selectors.
19
+ * var elements = _.attempt(function(selector) {
20
+ * return document.querySelectorAll(selector);
21
+ * }, '>_>');
22
+ *
23
+ * if (_.isError(elements)) {
24
+ * elements = [];
25
+ * }
26
+ */
27
+ var attempt = baseRest(function(func, args) {
28
+ try {
29
+ return apply(func, undefined, args);
30
+ } catch (e) {
31
+ return isError(e) ? e : new Error(e);
32
+ }
33
+ });
34
+
35
+ module.exports = attempt;
node_modules/lodash/before.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toInteger = require('./toInteger');
2
+
3
+ /** Error message constants. */
4
+ var FUNC_ERROR_TEXT = 'Expected a function';
5
+
6
+ /**
7
+ * Creates a function that invokes `func`, with the `this` binding and arguments
8
+ * of the created function, while it's called less than `n` times. Subsequent
9
+ * calls to the created function return the result of the last `func` invocation.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 3.0.0
14
+ * @category Function
15
+ * @param {number} n The number of calls at which `func` is no longer invoked.
16
+ * @param {Function} func The function to restrict.
17
+ * @returns {Function} Returns the new restricted function.
18
+ * @example
19
+ *
20
+ * jQuery(element).on('click', _.before(5, addContactToList));
21
+ * // => Allows adding up to 4 contacts to the list.
22
+ */
23
+ function before(n, func) {
24
+ var result;
25
+ if (typeof func != 'function') {
26
+ throw new TypeError(FUNC_ERROR_TEXT);
27
+ }
28
+ n = toInteger(n);
29
+ return function() {
30
+ if (--n > 0) {
31
+ result = func.apply(this, arguments);
32
+ }
33
+ if (n <= 1) {
34
+ func = undefined;
35
+ }
36
+ return result;
37
+ };
38
+ }
39
+
40
+ module.exports = before;
node_modules/lodash/bind.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRest = require('./_baseRest'),
2
+ createWrap = require('./_createWrap'),
3
+ getHolder = require('./_getHolder'),
4
+ replaceHolders = require('./_replaceHolders');
5
+
6
+ /** Used to compose bitmasks for function metadata. */
7
+ var WRAP_BIND_FLAG = 1,
8
+ WRAP_PARTIAL_FLAG = 32;
9
+
10
+ /**
11
+ * Creates a function that invokes `func` with the `this` binding of `thisArg`
12
+ * and `partials` prepended to the arguments it receives.
13
+ *
14
+ * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
15
+ * may be used as a placeholder for partially applied arguments.
16
+ *
17
+ * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
18
+ * property of bound functions.
19
+ *
20
+ * @static
21
+ * @memberOf _
22
+ * @since 0.1.0
23
+ * @category Function
24
+ * @param {Function} func The function to bind.
25
+ * @param {*} thisArg The `this` binding of `func`.
26
+ * @param {...*} [partials] The arguments to be partially applied.
27
+ * @returns {Function} Returns the new bound function.
28
+ * @example
29
+ *
30
+ * function greet(greeting, punctuation) {
31
+ * return greeting + ' ' + this.user + punctuation;
32
+ * }
33
+ *
34
+ * var object = { 'user': 'fred' };
35
+ *
36
+ * var bound = _.bind(greet, object, 'hi');
37
+ * bound('!');
38
+ * // => 'hi fred!'
39
+ *
40
+ * // Bound with placeholders.
41
+ * var bound = _.bind(greet, object, _, '!');
42
+ * bound('hi');
43
+ * // => 'hi fred!'
44
+ */
45
+ var bind = baseRest(function(func, thisArg, partials) {
46
+ var bitmask = WRAP_BIND_FLAG;
47
+ if (partials.length) {
48
+ var holders = replaceHolders(partials, getHolder(bind));
49
+ bitmask |= WRAP_PARTIAL_FLAG;
50
+ }
51
+ return createWrap(func, bitmask, thisArg, partials, holders);
52
+ });
53
+
54
+ // Assign default placeholders.
55
+ bind.placeholder = {};
56
+
57
+ module.exports = bind;
node_modules/lodash/bindAll.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayEach = require('./_arrayEach'),
2
+ baseAssignValue = require('./_baseAssignValue'),
3
+ bind = require('./bind'),
4
+ flatRest = require('./_flatRest'),
5
+ toKey = require('./_toKey');
6
+
7
+ /**
8
+ * Binds methods of an object to the object itself, overwriting the existing
9
+ * method.
10
+ *
11
+ * **Note:** This method doesn't set the "length" property of bound functions.
12
+ *
13
+ * @static
14
+ * @since 0.1.0
15
+ * @memberOf _
16
+ * @category Util
17
+ * @param {Object} object The object to bind and assign the bound methods to.
18
+ * @param {...(string|string[])} methodNames The object method names to bind.
19
+ * @returns {Object} Returns `object`.
20
+ * @example
21
+ *
22
+ * var view = {
23
+ * 'label': 'docs',
24
+ * 'click': function() {
25
+ * console.log('clicked ' + this.label);
26
+ * }
27
+ * };
28
+ *
29
+ * _.bindAll(view, ['click']);
30
+ * jQuery(element).on('click', view.click);
31
+ * // => Logs 'clicked docs' when clicked.
32
+ */
33
+ var bindAll = flatRest(function(object, methodNames) {
34
+ arrayEach(methodNames, function(key) {
35
+ key = toKey(key);
36
+ baseAssignValue(object, key, bind(object[key], object));
37
+ });
38
+ return object;
39
+ });
40
+
41
+ module.exports = bindAll;
node_modules/lodash/bindKey.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRest = require('./_baseRest'),
2
+ createWrap = require('./_createWrap'),
3
+ getHolder = require('./_getHolder'),
4
+ replaceHolders = require('./_replaceHolders');
5
+
6
+ /** Used to compose bitmasks for function metadata. */
7
+ var WRAP_BIND_FLAG = 1,
8
+ WRAP_BIND_KEY_FLAG = 2,
9
+ WRAP_PARTIAL_FLAG = 32;
10
+
11
+ /**
12
+ * Creates a function that invokes the method at `object[key]` with `partials`
13
+ * prepended to the arguments it receives.
14
+ *
15
+ * This method differs from `_.bind` by allowing bound functions to reference
16
+ * methods that may be redefined or don't yet exist. See
17
+ * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
18
+ * for more details.
19
+ *
20
+ * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
21
+ * builds, may be used as a placeholder for partially applied arguments.
22
+ *
23
+ * @static
24
+ * @memberOf _
25
+ * @since 0.10.0
26
+ * @category Function
27
+ * @param {Object} object The object to invoke the method on.
28
+ * @param {string} key The key of the method.
29
+ * @param {...*} [partials] The arguments to be partially applied.
30
+ * @returns {Function} Returns the new bound function.
31
+ * @example
32
+ *
33
+ * var object = {
34
+ * 'user': 'fred',
35
+ * 'greet': function(greeting, punctuation) {
36
+ * return greeting + ' ' + this.user + punctuation;
37
+ * }
38
+ * };
39
+ *
40
+ * var bound = _.bindKey(object, 'greet', 'hi');
41
+ * bound('!');
42
+ * // => 'hi fred!'
43
+ *
44
+ * object.greet = function(greeting, punctuation) {
45
+ * return greeting + 'ya ' + this.user + punctuation;
46
+ * };
47
+ *
48
+ * bound('!');
49
+ * // => 'hiya fred!'
50
+ *
51
+ * // Bound with placeholders.
52
+ * var bound = _.bindKey(object, 'greet', _, '!');
53
+ * bound('hi');
54
+ * // => 'hiya fred!'
55
+ */
56
+ var bindKey = baseRest(function(object, key, partials) {
57
+ var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
58
+ if (partials.length) {
59
+ var holders = replaceHolders(partials, getHolder(bindKey));
60
+ bitmask |= WRAP_PARTIAL_FLAG;
61
+ }
62
+ return createWrap(key, bitmask, object, partials, holders);
63
+ });
64
+
65
+ // Assign default placeholders.
66
+ bindKey.placeholder = {};
67
+
68
+ module.exports = bindKey;
node_modules/lodash/camelCase.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var capitalize = require('./capitalize'),
2
+ createCompounder = require('./_createCompounder');
3
+
4
+ /**
5
+ * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 3.0.0
10
+ * @category String
11
+ * @param {string} [string=''] The string to convert.
12
+ * @returns {string} Returns the camel cased string.
13
+ * @example
14
+ *
15
+ * _.camelCase('Foo Bar');
16
+ * // => 'fooBar'
17
+ *
18
+ * _.camelCase('--foo-bar--');
19
+ * // => 'fooBar'
20
+ *
21
+ * _.camelCase('__FOO_BAR__');
22
+ * // => 'fooBar'
23
+ */
24
+ var camelCase = createCompounder(function(result, word, index) {
25
+ word = word.toLowerCase();
26
+ return result + (index ? capitalize(word) : word);
27
+ });
28
+
29
+ module.exports = camelCase;
node_modules/lodash/capitalize.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toString = require('./toString'),
2
+ upperFirst = require('./upperFirst');
3
+
4
+ /**
5
+ * Converts the first character of `string` to upper case and the remaining
6
+ * to lower case.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 3.0.0
11
+ * @category String
12
+ * @param {string} [string=''] The string to capitalize.
13
+ * @returns {string} Returns the capitalized string.
14
+ * @example
15
+ *
16
+ * _.capitalize('FRED');
17
+ * // => 'Fred'
18
+ */
19
+ function capitalize(string) {
20
+ return upperFirst(toString(string).toLowerCase());
21
+ }
22
+
23
+ module.exports = capitalize;
node_modules/lodash/castArray.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArray = require('./isArray');
2
+
3
+ /**
4
+ * Casts `value` as an array if it's not one.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 4.4.0
9
+ * @category Lang
10
+ * @param {*} value The value to inspect.
11
+ * @returns {Array} Returns the cast array.
12
+ * @example
13
+ *
14
+ * _.castArray(1);
15
+ * // => [1]
16
+ *
17
+ * _.castArray({ 'a': 1 });
18
+ * // => [{ 'a': 1 }]
19
+ *
20
+ * _.castArray('abc');
21
+ * // => ['abc']
22
+ *
23
+ * _.castArray(null);
24
+ * // => [null]
25
+ *
26
+ * _.castArray(undefined);
27
+ * // => [undefined]
28
+ *
29
+ * _.castArray();
30
+ * // => []
31
+ *
32
+ * var array = [1, 2, 3];
33
+ * console.log(_.castArray(array) === array);
34
+ * // => true
35
+ */
36
+ function castArray() {
37
+ if (!arguments.length) {
38
+ return [];
39
+ }
40
+ var value = arguments[0];
41
+ return isArray(value) ? value : [value];
42
+ }
43
+
44
+ module.exports = castArray;
node_modules/lodash/ceil.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createRound = require('./_createRound');
2
+
3
+ /**
4
+ * Computes `number` rounded up to `precision`.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 3.10.0
9
+ * @category Math
10
+ * @param {number} number The number to round up.
11
+ * @param {number} [precision=0] The precision to round up to.
12
+ * @returns {number} Returns the rounded up number.
13
+ * @example
14
+ *
15
+ * _.ceil(4.006);
16
+ * // => 5
17
+ *
18
+ * _.ceil(6.004, 2);
19
+ * // => 6.01
20
+ *
21
+ * _.ceil(6040, -2);
22
+ * // => 6100
23
+ */
24
+ var ceil = createRound('ceil');
25
+
26
+ module.exports = ceil;
node_modules/lodash/chain.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var lodash = require('./wrapperLodash');
2
+
3
+ /**
4
+ * Creates a `lodash` wrapper instance that wraps `value` with explicit method
5
+ * chain sequences enabled. The result of such sequences must be unwrapped
6
+ * with `_#value`.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 1.3.0
11
+ * @category Seq
12
+ * @param {*} value The value to wrap.
13
+ * @returns {Object} Returns the new `lodash` wrapper instance.
14
+ * @example
15
+ *
16
+ * var users = [
17
+ * { 'user': 'barney', 'age': 36 },
18
+ * { 'user': 'fred', 'age': 40 },
19
+ * { 'user': 'pebbles', 'age': 1 }
20
+ * ];
21
+ *
22
+ * var youngest = _
23
+ * .chain(users)
24
+ * .sortBy('age')
25
+ * .map(function(o) {
26
+ * return o.user + ' is ' + o.age;
27
+ * })
28
+ * .head()
29
+ * .value();
30
+ * // => 'pebbles is 1'
31
+ */
32
+ function chain(value) {
33
+ var result = lodash(value);
34
+ result.__chain__ = true;
35
+ return result;
36
+ }
37
+
38
+ module.exports = chain;
node_modules/lodash/chunk.js ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice'),
2
+ isIterateeCall = require('./_isIterateeCall'),
3
+ toInteger = require('./toInteger');
4
+
5
+ /* Built-in method references for those with the same name as other `lodash` methods. */
6
+ var nativeCeil = Math.ceil,
7
+ nativeMax = Math.max;
8
+
9
+ /**
10
+ * Creates an array of elements split into groups the length of `size`.
11
+ * If `array` can't be split evenly, the final chunk will be the remaining
12
+ * elements.
13
+ *
14
+ * @static
15
+ * @memberOf _
16
+ * @since 3.0.0
17
+ * @category Array
18
+ * @param {Array} array The array to process.
19
+ * @param {number} [size=1] The length of each chunk
20
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
21
+ * @returns {Array} Returns the new array of chunks.
22
+ * @example
23
+ *
24
+ * _.chunk(['a', 'b', 'c', 'd'], 2);
25
+ * // => [['a', 'b'], ['c', 'd']]
26
+ *
27
+ * _.chunk(['a', 'b', 'c', 'd'], 3);
28
+ * // => [['a', 'b', 'c'], ['d']]
29
+ */
30
+ function chunk(array, size, guard) {
31
+ if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
32
+ size = 1;
33
+ } else {
34
+ size = nativeMax(toInteger(size), 0);
35
+ }
36
+ var length = array == null ? 0 : array.length;
37
+ if (!length || size < 1) {
38
+ return [];
39
+ }
40
+ var index = 0,
41
+ resIndex = 0,
42
+ result = Array(nativeCeil(length / size));
43
+
44
+ while (index < length) {
45
+ result[resIndex++] = baseSlice(array, index, (index += size));
46
+ }
47
+ return result;
48
+ }
49
+
50
+ module.exports = chunk;
node_modules/lodash/clamp.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClamp = require('./_baseClamp'),
2
+ toNumber = require('./toNumber');
3
+
4
+ /**
5
+ * Clamps `number` within the inclusive `lower` and `upper` bounds.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 4.0.0
10
+ * @category Number
11
+ * @param {number} number The number to clamp.
12
+ * @param {number} [lower] The lower bound.
13
+ * @param {number} upper The upper bound.
14
+ * @returns {number} Returns the clamped number.
15
+ * @example
16
+ *
17
+ * _.clamp(-10, -5, 5);
18
+ * // => -5
19
+ *
20
+ * _.clamp(10, -5, 5);
21
+ * // => 5
22
+ */
23
+ function clamp(number, lower, upper) {
24
+ if (upper === undefined) {
25
+ upper = lower;
26
+ lower = undefined;
27
+ }
28
+ if (upper !== undefined) {
29
+ upper = toNumber(upper);
30
+ upper = upper === upper ? upper : 0;
31
+ }
32
+ if (lower !== undefined) {
33
+ lower = toNumber(lower);
34
+ lower = lower === lower ? lower : 0;
35
+ }
36
+ return baseClamp(toNumber(number), lower, upper);
37
+ }
38
+
39
+ module.exports = clamp;
node_modules/lodash/clone.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone');
2
+
3
+ /** Used to compose bitmasks for cloning. */
4
+ var CLONE_SYMBOLS_FLAG = 4;
5
+
6
+ /**
7
+ * Creates a shallow clone of `value`.
8
+ *
9
+ * **Note:** This method is loosely based on the
10
+ * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
11
+ * and supports cloning arrays, array buffers, booleans, date objects, maps,
12
+ * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
13
+ * arrays. The own enumerable properties of `arguments` objects are cloned
14
+ * as plain objects. An empty object is returned for uncloneable values such
15
+ * as error objects, functions, DOM nodes, and WeakMaps.
16
+ *
17
+ * @static
18
+ * @memberOf _
19
+ * @since 0.1.0
20
+ * @category Lang
21
+ * @param {*} value The value to clone.
22
+ * @returns {*} Returns the cloned value.
23
+ * @see _.cloneDeep
24
+ * @example
25
+ *
26
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
27
+ *
28
+ * var shallow = _.clone(objects);
29
+ * console.log(shallow[0] === objects[0]);
30
+ * // => true
31
+ */
32
+ function clone(value) {
33
+ return baseClone(value, CLONE_SYMBOLS_FLAG);
34
+ }
35
+
36
+ module.exports = clone;
node_modules/lodash/cloneDeep.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone');
2
+
3
+ /** Used to compose bitmasks for cloning. */
4
+ var CLONE_DEEP_FLAG = 1,
5
+ CLONE_SYMBOLS_FLAG = 4;
6
+
7
+ /**
8
+ * This method is like `_.clone` except that it recursively clones `value`.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 1.0.0
13
+ * @category Lang
14
+ * @param {*} value The value to recursively clone.
15
+ * @returns {*} Returns the deep cloned value.
16
+ * @see _.clone
17
+ * @example
18
+ *
19
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
20
+ *
21
+ * var deep = _.cloneDeep(objects);
22
+ * console.log(deep[0] === objects[0]);
23
+ * // => false
24
+ */
25
+ function cloneDeep(value) {
26
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
27
+ }
28
+
29
+ module.exports = cloneDeep;
node_modules/lodash/cloneDeepWith.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone');
2
+
3
+ /** Used to compose bitmasks for cloning. */
4
+ var CLONE_DEEP_FLAG = 1,
5
+ CLONE_SYMBOLS_FLAG = 4;
6
+
7
+ /**
8
+ * This method is like `_.cloneWith` except that it recursively clones `value`.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Lang
14
+ * @param {*} value The value to recursively clone.
15
+ * @param {Function} [customizer] The function to customize cloning.
16
+ * @returns {*} Returns the deep cloned value.
17
+ * @see _.cloneWith
18
+ * @example
19
+ *
20
+ * function customizer(value) {
21
+ * if (_.isElement(value)) {
22
+ * return value.cloneNode(true);
23
+ * }
24
+ * }
25
+ *
26
+ * var el = _.cloneDeepWith(document.body, customizer);
27
+ *
28
+ * console.log(el === document.body);
29
+ * // => false
30
+ * console.log(el.nodeName);
31
+ * // => 'BODY'
32
+ * console.log(el.childNodes.length);
33
+ * // => 20
34
+ */
35
+ function cloneDeepWith(value, customizer) {
36
+ customizer = typeof customizer == 'function' ? customizer : undefined;
37
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
38
+ }
39
+
40
+ module.exports = cloneDeepWith;
node_modules/lodash/cloneWith.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone');
2
+
3
+ /** Used to compose bitmasks for cloning. */
4
+ var CLONE_SYMBOLS_FLAG = 4;
5
+
6
+ /**
7
+ * This method is like `_.clone` except that it accepts `customizer` which
8
+ * is invoked to produce the cloned value. If `customizer` returns `undefined`,
9
+ * cloning is handled by the method instead. The `customizer` is invoked with
10
+ * up to four arguments; (value [, index|key, object, stack]).
11
+ *
12
+ * @static
13
+ * @memberOf _
14
+ * @since 4.0.0
15
+ * @category Lang
16
+ * @param {*} value The value to clone.
17
+ * @param {Function} [customizer] The function to customize cloning.
18
+ * @returns {*} Returns the cloned value.
19
+ * @see _.cloneDeepWith
20
+ * @example
21
+ *
22
+ * function customizer(value) {
23
+ * if (_.isElement(value)) {
24
+ * return value.cloneNode(false);
25
+ * }
26
+ * }
27
+ *
28
+ * var el = _.cloneWith(document.body, customizer);
29
+ *
30
+ * console.log(el === document.body);
31
+ * // => false
32
+ * console.log(el.nodeName);
33
+ * // => 'BODY'
34
+ * console.log(el.childNodes.length);
35
+ * // => 0
36
+ */
37
+ function cloneWith(value, customizer) {
38
+ customizer = typeof customizer == 'function' ? customizer : undefined;
39
+ return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
40
+ }
41
+
42
+ module.exports = cloneWith;
node_modules/lodash/collection.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'countBy': require('./countBy'),
3
+ 'each': require('./each'),
4
+ 'eachRight': require('./eachRight'),
5
+ 'every': require('./every'),
6
+ 'filter': require('./filter'),
7
+ 'find': require('./find'),
8
+ 'findLast': require('./findLast'),
9
+ 'flatMap': require('./flatMap'),
10
+ 'flatMapDeep': require('./flatMapDeep'),
11
+ 'flatMapDepth': require('./flatMapDepth'),
12
+ 'forEach': require('./forEach'),
13
+ 'forEachRight': require('./forEachRight'),
14
+ 'groupBy': require('./groupBy'),
15
+ 'includes': require('./includes'),
16
+ 'invokeMap': require('./invokeMap'),
17
+ 'keyBy': require('./keyBy'),
18
+ 'map': require('./map'),
19
+ 'orderBy': require('./orderBy'),
20
+ 'partition': require('./partition'),
21
+ 'reduce': require('./reduce'),
22
+ 'reduceRight': require('./reduceRight'),
23
+ 'reject': require('./reject'),
24
+ 'sample': require('./sample'),
25
+ 'sampleSize': require('./sampleSize'),
26
+ 'shuffle': require('./shuffle'),
27
+ 'size': require('./size'),
28
+ 'some': require('./some'),
29
+ 'sortBy': require('./sortBy')
30
+ };
node_modules/lodash/commit.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var LodashWrapper = require('./_LodashWrapper');
2
+
3
+ /**
4
+ * Executes the chain sequence and returns the wrapped result.
5
+ *
6
+ * @name commit
7
+ * @memberOf _
8
+ * @since 3.2.0
9
+ * @category Seq
10
+ * @returns {Object} Returns the new `lodash` wrapper instance.
11
+ * @example
12
+ *
13
+ * var array = [1, 2];
14
+ * var wrapped = _(array).push(3);
15
+ *
16
+ * console.log(array);
17
+ * // => [1, 2]
18
+ *
19
+ * wrapped = wrapped.commit();
20
+ * console.log(array);
21
+ * // => [1, 2, 3]
22
+ *
23
+ * wrapped.last();
24
+ * // => 3
25
+ *
26
+ * console.log(array);
27
+ * // => [1, 2, 3]
28
+ */
29
+ function wrapperCommit() {
30
+ return new LodashWrapper(this.value(), this.__chain__);
31
+ }
32
+
33
+ module.exports = wrapperCommit;
node_modules/lodash/compact.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Creates an array with all falsey values removed. The values `false`, `null`,
3
+ * `0`, `""`, `undefined`, and `NaN` are falsey.
4
+ *
5
+ * @static
6
+ * @memberOf _
7
+ * @since 0.1.0
8
+ * @category Array
9
+ * @param {Array} array The array to compact.
10
+ * @returns {Array} Returns the new array of filtered values.
11
+ * @example
12
+ *
13
+ * _.compact([0, 1, false, 2, '', 3]);
14
+ * // => [1, 2, 3]
15
+ */
16
+ function compact(array) {
17
+ var index = -1,
18
+ length = array == null ? 0 : array.length,
19
+ resIndex = 0,
20
+ result = [];
21
+
22
+ while (++index < length) {
23
+ var value = array[index];
24
+ if (value) {
25
+ result[resIndex++] = value;
26
+ }
27
+ }
28
+ return result;
29
+ }
30
+
31
+ module.exports = compact;
node_modules/lodash/concat.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayPush = require('./_arrayPush'),
2
+ baseFlatten = require('./_baseFlatten'),
3
+ copyArray = require('./_copyArray'),
4
+ isArray = require('./isArray');
5
+
6
+ /**
7
+ * Creates a new array concatenating `array` with any additional arrays
8
+ * and/or values.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Array
14
+ * @param {Array} array The array to concatenate.
15
+ * @param {...*} [values] The values to concatenate.
16
+ * @returns {Array} Returns the new concatenated array.
17
+ * @example
18
+ *
19
+ * var array = [1];
20
+ * var other = _.concat(array, 2, [3], [[4]]);
21
+ *
22
+ * console.log(other);
23
+ * // => [1, 2, 3, [4]]
24
+ *
25
+ * console.log(array);
26
+ * // => [1]
27
+ */
28
+ function concat() {
29
+ var length = arguments.length;
30
+ if (!length) {
31
+ return [];
32
+ }
33
+ var args = Array(length - 1),
34
+ array = arguments[0],
35
+ index = length;
36
+
37
+ while (index--) {
38
+ args[index - 1] = arguments[index];
39
+ }
40
+ return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
41
+ }
42
+
43
+ module.exports = concat;
node_modules/lodash/cond.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ arrayMap = require('./_arrayMap'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ baseRest = require('./_baseRest');
5
+
6
+ /** Error message constants. */
7
+ var FUNC_ERROR_TEXT = 'Expected a function';
8
+
9
+ /**
10
+ * Creates a function that iterates over `pairs` and invokes the corresponding
11
+ * function of the first predicate to return truthy. The predicate-function
12
+ * pairs are invoked with the `this` binding and arguments of the created
13
+ * function.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 4.0.0
18
+ * @category Util
19
+ * @param {Array} pairs The predicate-function pairs.
20
+ * @returns {Function} Returns the new composite function.
21
+ * @example
22
+ *
23
+ * var func = _.cond([
24
+ * [_.matches({ 'a': 1 }), _.constant('matches A')],
25
+ * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
26
+ * [_.stubTrue, _.constant('no match')]
27
+ * ]);
28
+ *
29
+ * func({ 'a': 1, 'b': 2 });
30
+ * // => 'matches A'
31
+ *
32
+ * func({ 'a': 0, 'b': 1 });
33
+ * // => 'matches B'
34
+ *
35
+ * func({ 'a': '1', 'b': '2' });
36
+ * // => 'no match'
37
+ */
38
+ function cond(pairs) {
39
+ var length = pairs == null ? 0 : pairs.length,
40
+ toIteratee = baseIteratee;
41
+
42
+ pairs = !length ? [] : arrayMap(pairs, function(pair) {
43
+ if (typeof pair[1] != 'function') {
44
+ throw new TypeError(FUNC_ERROR_TEXT);
45
+ }
46
+ return [toIteratee(pair[0]), pair[1]];
47
+ });
48
+
49
+ return baseRest(function(args) {
50
+ var index = -1;
51
+ while (++index < length) {
52
+ var pair = pairs[index];
53
+ if (apply(pair[0], this, args)) {
54
+ return apply(pair[1], this, args);
55
+ }
56
+ }
57
+ });
58
+ }
59
+
60
+ module.exports = cond;
node_modules/lodash/conforms.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone'),
2
+ baseConforms = require('./_baseConforms');
3
+
4
+ /** Used to compose bitmasks for cloning. */
5
+ var CLONE_DEEP_FLAG = 1;
6
+
7
+ /**
8
+ * Creates a function that invokes the predicate properties of `source` with
9
+ * the corresponding property values of a given object, returning `true` if
10
+ * all predicates return truthy, else `false`.
11
+ *
12
+ * **Note:** The created function is equivalent to `_.conformsTo` with
13
+ * `source` partially applied.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 4.0.0
18
+ * @category Util
19
+ * @param {Object} source The object of property predicates to conform to.
20
+ * @returns {Function} Returns the new spec function.
21
+ * @example
22
+ *
23
+ * var objects = [
24
+ * { 'a': 2, 'b': 1 },
25
+ * { 'a': 1, 'b': 2 }
26
+ * ];
27
+ *
28
+ * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
29
+ * // => [{ 'a': 1, 'b': 2 }]
30
+ */
31
+ function conforms(source) {
32
+ return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
33
+ }
34
+
35
+ module.exports = conforms;
node_modules/lodash/conformsTo.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseConformsTo = require('./_baseConformsTo'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * Checks if `object` conforms to `source` by invoking the predicate
6
+ * properties of `source` with the corresponding property values of `object`.
7
+ *
8
+ * **Note:** This method is equivalent to `_.conforms` when `source` is
9
+ * partially applied.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.14.0
14
+ * @category Lang
15
+ * @param {Object} object The object to inspect.
16
+ * @param {Object} source The object of property predicates to conform to.
17
+ * @returns {boolean} Returns `true` if `object` conforms, else `false`.
18
+ * @example
19
+ *
20
+ * var object = { 'a': 1, 'b': 2 };
21
+ *
22
+ * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
23
+ * // => true
24
+ *
25
+ * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
26
+ * // => false
27
+ */
28
+ function conformsTo(object, source) {
29
+ return source == null || baseConformsTo(object, source, keys(source));
30
+ }
31
+
32
+ module.exports = conformsTo;
node_modules/lodash/constant.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Creates a function that returns `value`.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 2.4.0
7
+ * @category Util
8
+ * @param {*} value The value to return from the new function.
9
+ * @returns {Function} Returns the new constant function.
10
+ * @example
11
+ *
12
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
13
+ *
14
+ * console.log(objects);
15
+ * // => [{ 'a': 1 }, { 'a': 1 }]
16
+ *
17
+ * console.log(objects[0] === objects[1]);
18
+ * // => true
19
+ */
20
+ function constant(value) {
21
+ return function() {
22
+ return value;
23
+ };
24
+ }
25
+
26
+ module.exports = constant;
node_modules/lodash/core.js ADDED
@@ -0,0 +1,3877 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * Lodash (Custom Build) <https://lodash.com/>
4
+ * Build: `lodash core -o ./dist/lodash.core.js`
5
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
6
+ * Released under MIT license <https://lodash.com/license>
7
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
8
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
9
+ */
10
+ ;(function() {
11
+
12
+ /** Used as a safe reference for `undefined` in pre-ES5 environments. */
13
+ var undefined;
14
+
15
+ /** Used as the semantic version number. */
16
+ var VERSION = '4.17.20';
17
+
18
+ /** Error message constants. */
19
+ var FUNC_ERROR_TEXT = 'Expected a function';
20
+
21
+ /** Used to compose bitmasks for value comparisons. */
22
+ var COMPARE_PARTIAL_FLAG = 1,
23
+ COMPARE_UNORDERED_FLAG = 2;
24
+
25
+ /** Used to compose bitmasks for function metadata. */
26
+ var WRAP_BIND_FLAG = 1,
27
+ WRAP_PARTIAL_FLAG = 32;
28
+
29
+ /** Used as references for various `Number` constants. */
30
+ var INFINITY = 1 / 0,
31
+ MAX_SAFE_INTEGER = 9007199254740991;
32
+
33
+ /** `Object#toString` result references. */
34
+ var argsTag = '[object Arguments]',
35
+ arrayTag = '[object Array]',
36
+ asyncTag = '[object AsyncFunction]',
37
+ boolTag = '[object Boolean]',
38
+ dateTag = '[object Date]',
39
+ errorTag = '[object Error]',
40
+ funcTag = '[object Function]',
41
+ genTag = '[object GeneratorFunction]',
42
+ numberTag = '[object Number]',
43
+ objectTag = '[object Object]',
44
+ proxyTag = '[object Proxy]',
45
+ regexpTag = '[object RegExp]',
46
+ stringTag = '[object String]';
47
+
48
+ /** Used to match HTML entities and HTML characters. */
49
+ var reUnescapedHtml = /[&<>"']/g,
50
+ reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
51
+
52
+ /** Used to detect unsigned integer values. */
53
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
54
+
55
+ /** Used to map characters to HTML entities. */
56
+ var htmlEscapes = {
57
+ '&': '&amp;',
58
+ '<': '&lt;',
59
+ '>': '&gt;',
60
+ '"': '&quot;',
61
+ "'": '&#39;'
62
+ };
63
+
64
+ /** Detect free variable `global` from Node.js. */
65
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
66
+
67
+ /** Detect free variable `self`. */
68
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
69
+
70
+ /** Used as a reference to the global object. */
71
+ var root = freeGlobal || freeSelf || Function('return this')();
72
+
73
+ /** Detect free variable `exports`. */
74
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
75
+
76
+ /** Detect free variable `module`. */
77
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
78
+
79
+ /*--------------------------------------------------------------------------*/
80
+
81
+ /**
82
+ * Appends the elements of `values` to `array`.
83
+ *
84
+ * @private
85
+ * @param {Array} array The array to modify.
86
+ * @param {Array} values The values to append.
87
+ * @returns {Array} Returns `array`.
88
+ */
89
+ function arrayPush(array, values) {
90
+ array.push.apply(array, values);
91
+ return array;
92
+ }
93
+
94
+ /**
95
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
96
+ * support for iteratee shorthands.
97
+ *
98
+ * @private
99
+ * @param {Array} array The array to inspect.
100
+ * @param {Function} predicate The function invoked per iteration.
101
+ * @param {number} fromIndex The index to search from.
102
+ * @param {boolean} [fromRight] Specify iterating from right to left.
103
+ * @returns {number} Returns the index of the matched value, else `-1`.
104
+ */
105
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
106
+ var length = array.length,
107
+ index = fromIndex + (fromRight ? 1 : -1);
108
+
109
+ while ((fromRight ? index-- : ++index < length)) {
110
+ if (predicate(array[index], index, array)) {
111
+ return index;
112
+ }
113
+ }
114
+ return -1;
115
+ }
116
+
117
+ /**
118
+ * The base implementation of `_.property` without support for deep paths.
119
+ *
120
+ * @private
121
+ * @param {string} key The key of the property to get.
122
+ * @returns {Function} Returns the new accessor function.
123
+ */
124
+ function baseProperty(key) {
125
+ return function(object) {
126
+ return object == null ? undefined : object[key];
127
+ };
128
+ }
129
+
130
+ /**
131
+ * The base implementation of `_.propertyOf` without support for deep paths.
132
+ *
133
+ * @private
134
+ * @param {Object} object The object to query.
135
+ * @returns {Function} Returns the new accessor function.
136
+ */
137
+ function basePropertyOf(object) {
138
+ return function(key) {
139
+ return object == null ? undefined : object[key];
140
+ };
141
+ }
142
+
143
+ /**
144
+ * The base implementation of `_.reduce` and `_.reduceRight`, without support
145
+ * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
146
+ *
147
+ * @private
148
+ * @param {Array|Object} collection The collection to iterate over.
149
+ * @param {Function} iteratee The function invoked per iteration.
150
+ * @param {*} accumulator The initial value.
151
+ * @param {boolean} initAccum Specify using the first or last element of
152
+ * `collection` as the initial value.
153
+ * @param {Function} eachFunc The function to iterate over `collection`.
154
+ * @returns {*} Returns the accumulated value.
155
+ */
156
+ function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
157
+ eachFunc(collection, function(value, index, collection) {
158
+ accumulator = initAccum
159
+ ? (initAccum = false, value)
160
+ : iteratee(accumulator, value, index, collection);
161
+ });
162
+ return accumulator;
163
+ }
164
+
165
+ /**
166
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
167
+ * array of `object` property values corresponding to the property names
168
+ * of `props`.
169
+ *
170
+ * @private
171
+ * @param {Object} object The object to query.
172
+ * @param {Array} props The property names to get values for.
173
+ * @returns {Object} Returns the array of property values.
174
+ */
175
+ function baseValues(object, props) {
176
+ return baseMap(props, function(key) {
177
+ return object[key];
178
+ });
179
+ }
180
+
181
+ /**
182
+ * Used by `_.escape` to convert characters to HTML entities.
183
+ *
184
+ * @private
185
+ * @param {string} chr The matched character to escape.
186
+ * @returns {string} Returns the escaped character.
187
+ */
188
+ var escapeHtmlChar = basePropertyOf(htmlEscapes);
189
+
190
+ /**
191
+ * Creates a unary function that invokes `func` with its argument transformed.
192
+ *
193
+ * @private
194
+ * @param {Function} func The function to wrap.
195
+ * @param {Function} transform The argument transform.
196
+ * @returns {Function} Returns the new function.
197
+ */
198
+ function overArg(func, transform) {
199
+ return function(arg) {
200
+ return func(transform(arg));
201
+ };
202
+ }
203
+
204
+ /*--------------------------------------------------------------------------*/
205
+
206
+ /** Used for built-in method references. */
207
+ var arrayProto = Array.prototype,
208
+ objectProto = Object.prototype;
209
+
210
+ /** Used to check objects for own properties. */
211
+ var hasOwnProperty = objectProto.hasOwnProperty;
212
+
213
+ /** Used to generate unique IDs. */
214
+ var idCounter = 0;
215
+
216
+ /**
217
+ * Used to resolve the
218
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
219
+ * of values.
220
+ */
221
+ var nativeObjectToString = objectProto.toString;
222
+
223
+ /** Used to restore the original `_` reference in `_.noConflict`. */
224
+ var oldDash = root._;
225
+
226
+ /** Built-in value references. */
227
+ var objectCreate = Object.create,
228
+ propertyIsEnumerable = objectProto.propertyIsEnumerable;
229
+
230
+ /* Built-in method references for those with the same name as other `lodash` methods. */
231
+ var nativeIsFinite = root.isFinite,
232
+ nativeKeys = overArg(Object.keys, Object),
233
+ nativeMax = Math.max;
234
+
235
+ /*------------------------------------------------------------------------*/
236
+
237
+ /**
238
+ * Creates a `lodash` object which wraps `value` to enable implicit method
239
+ * chain sequences. Methods that operate on and return arrays, collections,
240
+ * and functions can be chained together. Methods that retrieve a single value
241
+ * or may return a primitive value will automatically end the chain sequence
242
+ * and return the unwrapped value. Otherwise, the value must be unwrapped
243
+ * with `_#value`.
244
+ *
245
+ * Explicit chain sequences, which must be unwrapped with `_#value`, may be
246
+ * enabled using `_.chain`.
247
+ *
248
+ * The execution of chained methods is lazy, that is, it's deferred until
249
+ * `_#value` is implicitly or explicitly called.
250
+ *
251
+ * Lazy evaluation allows several methods to support shortcut fusion.
252
+ * Shortcut fusion is an optimization to merge iteratee calls; this avoids
253
+ * the creation of intermediate arrays and can greatly reduce the number of
254
+ * iteratee executions. Sections of a chain sequence qualify for shortcut
255
+ * fusion if the section is applied to an array and iteratees accept only
256
+ * one argument. The heuristic for whether a section qualifies for shortcut
257
+ * fusion is subject to change.
258
+ *
259
+ * Chaining is supported in custom builds as long as the `_#value` method is
260
+ * directly or indirectly included in the build.
261
+ *
262
+ * In addition to lodash methods, wrappers have `Array` and `String` methods.
263
+ *
264
+ * The wrapper `Array` methods are:
265
+ * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
266
+ *
267
+ * The wrapper `String` methods are:
268
+ * `replace` and `split`
269
+ *
270
+ * The wrapper methods that support shortcut fusion are:
271
+ * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
272
+ * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
273
+ * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
274
+ *
275
+ * The chainable wrapper methods are:
276
+ * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
277
+ * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
278
+ * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
279
+ * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
280
+ * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
281
+ * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
282
+ * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
283
+ * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
284
+ * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
285
+ * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
286
+ * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
287
+ * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
288
+ * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
289
+ * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
290
+ * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
291
+ * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
292
+ * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
293
+ * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
294
+ * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
295
+ * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
296
+ * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
297
+ * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
298
+ * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
299
+ * `zipObject`, `zipObjectDeep`, and `zipWith`
300
+ *
301
+ * The wrapper methods that are **not** chainable by default are:
302
+ * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
303
+ * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
304
+ * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
305
+ * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
306
+ * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
307
+ * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
308
+ * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
309
+ * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
310
+ * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
311
+ * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
312
+ * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
313
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
314
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
315
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
316
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
317
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
318
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
319
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
320
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
321
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
322
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
323
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
324
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
325
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
326
+ * `upperFirst`, `value`, and `words`
327
+ *
328
+ * @name _
329
+ * @constructor
330
+ * @category Seq
331
+ * @param {*} value The value to wrap in a `lodash` instance.
332
+ * @returns {Object} Returns the new `lodash` wrapper instance.
333
+ * @example
334
+ *
335
+ * function square(n) {
336
+ * return n * n;
337
+ * }
338
+ *
339
+ * var wrapped = _([1, 2, 3]);
340
+ *
341
+ * // Returns an unwrapped value.
342
+ * wrapped.reduce(_.add);
343
+ * // => 6
344
+ *
345
+ * // Returns a wrapped value.
346
+ * var squares = wrapped.map(square);
347
+ *
348
+ * _.isArray(squares);
349
+ * // => false
350
+ *
351
+ * _.isArray(squares.value());
352
+ * // => true
353
+ */
354
+ function lodash(value) {
355
+ return value instanceof LodashWrapper
356
+ ? value
357
+ : new LodashWrapper(value);
358
+ }
359
+
360
+ /**
361
+ * The base implementation of `_.create` without support for assigning
362
+ * properties to the created object.
363
+ *
364
+ * @private
365
+ * @param {Object} proto The object to inherit from.
366
+ * @returns {Object} Returns the new object.
367
+ */
368
+ var baseCreate = (function() {
369
+ function object() {}
370
+ return function(proto) {
371
+ if (!isObject(proto)) {
372
+ return {};
373
+ }
374
+ if (objectCreate) {
375
+ return objectCreate(proto);
376
+ }
377
+ object.prototype = proto;
378
+ var result = new object;
379
+ object.prototype = undefined;
380
+ return result;
381
+ };
382
+ }());
383
+
384
+ /**
385
+ * The base constructor for creating `lodash` wrapper objects.
386
+ *
387
+ * @private
388
+ * @param {*} value The value to wrap.
389
+ * @param {boolean} [chainAll] Enable explicit method chain sequences.
390
+ */
391
+ function LodashWrapper(value, chainAll) {
392
+ this.__wrapped__ = value;
393
+ this.__actions__ = [];
394
+ this.__chain__ = !!chainAll;
395
+ }
396
+
397
+ LodashWrapper.prototype = baseCreate(lodash.prototype);
398
+ LodashWrapper.prototype.constructor = LodashWrapper;
399
+
400
+ /*------------------------------------------------------------------------*/
401
+
402
+ /**
403
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
404
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
405
+ * for equality comparisons.
406
+ *
407
+ * @private
408
+ * @param {Object} object The object to modify.
409
+ * @param {string} key The key of the property to assign.
410
+ * @param {*} value The value to assign.
411
+ */
412
+ function assignValue(object, key, value) {
413
+ var objValue = object[key];
414
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
415
+ (value === undefined && !(key in object))) {
416
+ baseAssignValue(object, key, value);
417
+ }
418
+ }
419
+
420
+ /**
421
+ * The base implementation of `assignValue` and `assignMergeValue` without
422
+ * value checks.
423
+ *
424
+ * @private
425
+ * @param {Object} object The object to modify.
426
+ * @param {string} key The key of the property to assign.
427
+ * @param {*} value The value to assign.
428
+ */
429
+ function baseAssignValue(object, key, value) {
430
+ object[key] = value;
431
+ }
432
+
433
+ /**
434
+ * The base implementation of `_.delay` and `_.defer` which accepts `args`
435
+ * to provide to `func`.
436
+ *
437
+ * @private
438
+ * @param {Function} func The function to delay.
439
+ * @param {number} wait The number of milliseconds to delay invocation.
440
+ * @param {Array} args The arguments to provide to `func`.
441
+ * @returns {number|Object} Returns the timer id or timeout object.
442
+ */
443
+ function baseDelay(func, wait, args) {
444
+ if (typeof func != 'function') {
445
+ throw new TypeError(FUNC_ERROR_TEXT);
446
+ }
447
+ return setTimeout(function() { func.apply(undefined, args); }, wait);
448
+ }
449
+
450
+ /**
451
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
452
+ *
453
+ * @private
454
+ * @param {Array|Object} collection The collection to iterate over.
455
+ * @param {Function} iteratee The function invoked per iteration.
456
+ * @returns {Array|Object} Returns `collection`.
457
+ */
458
+ var baseEach = createBaseEach(baseForOwn);
459
+
460
+ /**
461
+ * The base implementation of `_.every` without support for iteratee shorthands.
462
+ *
463
+ * @private
464
+ * @param {Array|Object} collection The collection to iterate over.
465
+ * @param {Function} predicate The function invoked per iteration.
466
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
467
+ * else `false`
468
+ */
469
+ function baseEvery(collection, predicate) {
470
+ var result = true;
471
+ baseEach(collection, function(value, index, collection) {
472
+ result = !!predicate(value, index, collection);
473
+ return result;
474
+ });
475
+ return result;
476
+ }
477
+
478
+ /**
479
+ * The base implementation of methods like `_.max` and `_.min` which accepts a
480
+ * `comparator` to determine the extremum value.
481
+ *
482
+ * @private
483
+ * @param {Array} array The array to iterate over.
484
+ * @param {Function} iteratee The iteratee invoked per iteration.
485
+ * @param {Function} comparator The comparator used to compare values.
486
+ * @returns {*} Returns the extremum value.
487
+ */
488
+ function baseExtremum(array, iteratee, comparator) {
489
+ var index = -1,
490
+ length = array.length;
491
+
492
+ while (++index < length) {
493
+ var value = array[index],
494
+ current = iteratee(value);
495
+
496
+ if (current != null && (computed === undefined
497
+ ? (current === current && !false)
498
+ : comparator(current, computed)
499
+ )) {
500
+ var computed = current,
501
+ result = value;
502
+ }
503
+ }
504
+ return result;
505
+ }
506
+
507
+ /**
508
+ * The base implementation of `_.filter` without support for iteratee shorthands.
509
+ *
510
+ * @private
511
+ * @param {Array|Object} collection The collection to iterate over.
512
+ * @param {Function} predicate The function invoked per iteration.
513
+ * @returns {Array} Returns the new filtered array.
514
+ */
515
+ function baseFilter(collection, predicate) {
516
+ var result = [];
517
+ baseEach(collection, function(value, index, collection) {
518
+ if (predicate(value, index, collection)) {
519
+ result.push(value);
520
+ }
521
+ });
522
+ return result;
523
+ }
524
+
525
+ /**
526
+ * The base implementation of `_.flatten` with support for restricting flattening.
527
+ *
528
+ * @private
529
+ * @param {Array} array The array to flatten.
530
+ * @param {number} depth The maximum recursion depth.
531
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
532
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
533
+ * @param {Array} [result=[]] The initial result value.
534
+ * @returns {Array} Returns the new flattened array.
535
+ */
536
+ function baseFlatten(array, depth, predicate, isStrict, result) {
537
+ var index = -1,
538
+ length = array.length;
539
+
540
+ predicate || (predicate = isFlattenable);
541
+ result || (result = []);
542
+
543
+ while (++index < length) {
544
+ var value = array[index];
545
+ if (depth > 0 && predicate(value)) {
546
+ if (depth > 1) {
547
+ // Recursively flatten arrays (susceptible to call stack limits).
548
+ baseFlatten(value, depth - 1, predicate, isStrict, result);
549
+ } else {
550
+ arrayPush(result, value);
551
+ }
552
+ } else if (!isStrict) {
553
+ result[result.length] = value;
554
+ }
555
+ }
556
+ return result;
557
+ }
558
+
559
+ /**
560
+ * The base implementation of `baseForOwn` which iterates over `object`
561
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
562
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
563
+ *
564
+ * @private
565
+ * @param {Object} object The object to iterate over.
566
+ * @param {Function} iteratee The function invoked per iteration.
567
+ * @param {Function} keysFunc The function to get the keys of `object`.
568
+ * @returns {Object} Returns `object`.
569
+ */
570
+ var baseFor = createBaseFor();
571
+
572
+ /**
573
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
574
+ *
575
+ * @private
576
+ * @param {Object} object The object to iterate over.
577
+ * @param {Function} iteratee The function invoked per iteration.
578
+ * @returns {Object} Returns `object`.
579
+ */
580
+ function baseForOwn(object, iteratee) {
581
+ return object && baseFor(object, iteratee, keys);
582
+ }
583
+
584
+ /**
585
+ * The base implementation of `_.functions` which creates an array of
586
+ * `object` function property names filtered from `props`.
587
+ *
588
+ * @private
589
+ * @param {Object} object The object to inspect.
590
+ * @param {Array} props The property names to filter.
591
+ * @returns {Array} Returns the function names.
592
+ */
593
+ function baseFunctions(object, props) {
594
+ return baseFilter(props, function(key) {
595
+ return isFunction(object[key]);
596
+ });
597
+ }
598
+
599
+ /**
600
+ * The base implementation of `getTag` without fallbacks for buggy environments.
601
+ *
602
+ * @private
603
+ * @param {*} value The value to query.
604
+ * @returns {string} Returns the `toStringTag`.
605
+ */
606
+ function baseGetTag(value) {
607
+ return objectToString(value);
608
+ }
609
+
610
+ /**
611
+ * The base implementation of `_.gt` which doesn't coerce arguments.
612
+ *
613
+ * @private
614
+ * @param {*} value The value to compare.
615
+ * @param {*} other The other value to compare.
616
+ * @returns {boolean} Returns `true` if `value` is greater than `other`,
617
+ * else `false`.
618
+ */
619
+ function baseGt(value, other) {
620
+ return value > other;
621
+ }
622
+
623
+ /**
624
+ * The base implementation of `_.isArguments`.
625
+ *
626
+ * @private
627
+ * @param {*} value The value to check.
628
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
629
+ */
630
+ var baseIsArguments = noop;
631
+
632
+ /**
633
+ * The base implementation of `_.isDate` without Node.js optimizations.
634
+ *
635
+ * @private
636
+ * @param {*} value The value to check.
637
+ * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
638
+ */
639
+ function baseIsDate(value) {
640
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
641
+ }
642
+
643
+ /**
644
+ * The base implementation of `_.isEqual` which supports partial comparisons
645
+ * and tracks traversed objects.
646
+ *
647
+ * @private
648
+ * @param {*} value The value to compare.
649
+ * @param {*} other The other value to compare.
650
+ * @param {boolean} bitmask The bitmask flags.
651
+ * 1 - Unordered comparison
652
+ * 2 - Partial comparison
653
+ * @param {Function} [customizer] The function to customize comparisons.
654
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
655
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
656
+ */
657
+ function baseIsEqual(value, other, bitmask, customizer, stack) {
658
+ if (value === other) {
659
+ return true;
660
+ }
661
+ if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
662
+ return value !== value && other !== other;
663
+ }
664
+ return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
665
+ }
666
+
667
+ /**
668
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
669
+ * deep comparisons and tracks traversed objects enabling objects with circular
670
+ * references to be compared.
671
+ *
672
+ * @private
673
+ * @param {Object} object The object to compare.
674
+ * @param {Object} other The other object to compare.
675
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
676
+ * @param {Function} customizer The function to customize comparisons.
677
+ * @param {Function} equalFunc The function to determine equivalents of values.
678
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
679
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
680
+ */
681
+ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
682
+ var objIsArr = isArray(object),
683
+ othIsArr = isArray(other),
684
+ objTag = objIsArr ? arrayTag : baseGetTag(object),
685
+ othTag = othIsArr ? arrayTag : baseGetTag(other);
686
+
687
+ objTag = objTag == argsTag ? objectTag : objTag;
688
+ othTag = othTag == argsTag ? objectTag : othTag;
689
+
690
+ var objIsObj = objTag == objectTag,
691
+ othIsObj = othTag == objectTag,
692
+ isSameTag = objTag == othTag;
693
+
694
+ stack || (stack = []);
695
+ var objStack = find(stack, function(entry) {
696
+ return entry[0] == object;
697
+ });
698
+ var othStack = find(stack, function(entry) {
699
+ return entry[0] == other;
700
+ });
701
+ if (objStack && othStack) {
702
+ return objStack[1] == other;
703
+ }
704
+ stack.push([object, other]);
705
+ stack.push([other, object]);
706
+ if (isSameTag && !objIsObj) {
707
+ var result = (objIsArr)
708
+ ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
709
+ : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
710
+ stack.pop();
711
+ return result;
712
+ }
713
+ if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
714
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
715
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
716
+
717
+ if (objIsWrapped || othIsWrapped) {
718
+ var objUnwrapped = objIsWrapped ? object.value() : object,
719
+ othUnwrapped = othIsWrapped ? other.value() : other;
720
+
721
+ var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
722
+ stack.pop();
723
+ return result;
724
+ }
725
+ }
726
+ if (!isSameTag) {
727
+ return false;
728
+ }
729
+ var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);
730
+ stack.pop();
731
+ return result;
732
+ }
733
+
734
+ /**
735
+ * The base implementation of `_.isRegExp` without Node.js optimizations.
736
+ *
737
+ * @private
738
+ * @param {*} value The value to check.
739
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
740
+ */
741
+ function baseIsRegExp(value) {
742
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
743
+ }
744
+
745
+ /**
746
+ * The base implementation of `_.iteratee`.
747
+ *
748
+ * @private
749
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
750
+ * @returns {Function} Returns the iteratee.
751
+ */
752
+ function baseIteratee(func) {
753
+ if (typeof func == 'function') {
754
+ return func;
755
+ }
756
+ if (func == null) {
757
+ return identity;
758
+ }
759
+ return (typeof func == 'object' ? baseMatches : baseProperty)(func);
760
+ }
761
+
762
+ /**
763
+ * The base implementation of `_.lt` which doesn't coerce arguments.
764
+ *
765
+ * @private
766
+ * @param {*} value The value to compare.
767
+ * @param {*} other The other value to compare.
768
+ * @returns {boolean} Returns `true` if `value` is less than `other`,
769
+ * else `false`.
770
+ */
771
+ function baseLt(value, other) {
772
+ return value < other;
773
+ }
774
+
775
+ /**
776
+ * The base implementation of `_.map` without support for iteratee shorthands.
777
+ *
778
+ * @private
779
+ * @param {Array|Object} collection The collection to iterate over.
780
+ * @param {Function} iteratee The function invoked per iteration.
781
+ * @returns {Array} Returns the new mapped array.
782
+ */
783
+ function baseMap(collection, iteratee) {
784
+ var index = -1,
785
+ result = isArrayLike(collection) ? Array(collection.length) : [];
786
+
787
+ baseEach(collection, function(value, key, collection) {
788
+ result[++index] = iteratee(value, key, collection);
789
+ });
790
+ return result;
791
+ }
792
+
793
+ /**
794
+ * The base implementation of `_.matches` which doesn't clone `source`.
795
+ *
796
+ * @private
797
+ * @param {Object} source The object of property values to match.
798
+ * @returns {Function} Returns the new spec function.
799
+ */
800
+ function baseMatches(source) {
801
+ var props = nativeKeys(source);
802
+ return function(object) {
803
+ var length = props.length;
804
+ if (object == null) {
805
+ return !length;
806
+ }
807
+ object = Object(object);
808
+ while (length--) {
809
+ var key = props[length];
810
+ if (!(key in object &&
811
+ baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)
812
+ )) {
813
+ return false;
814
+ }
815
+ }
816
+ return true;
817
+ };
818
+ }
819
+
820
+ /**
821
+ * The base implementation of `_.pick` without support for individual
822
+ * property identifiers.
823
+ *
824
+ * @private
825
+ * @param {Object} object The source object.
826
+ * @param {string[]} paths The property paths to pick.
827
+ * @returns {Object} Returns the new object.
828
+ */
829
+ function basePick(object, props) {
830
+ object = Object(object);
831
+ return reduce(props, function(result, key) {
832
+ if (key in object) {
833
+ result[key] = object[key];
834
+ }
835
+ return result;
836
+ }, {});
837
+ }
838
+
839
+ /**
840
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
841
+ *
842
+ * @private
843
+ * @param {Function} func The function to apply a rest parameter to.
844
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
845
+ * @returns {Function} Returns the new function.
846
+ */
847
+ function baseRest(func, start) {
848
+ return setToString(overRest(func, start, identity), func + '');
849
+ }
850
+
851
+ /**
852
+ * The base implementation of `_.slice` without an iteratee call guard.
853
+ *
854
+ * @private
855
+ * @param {Array} array The array to slice.
856
+ * @param {number} [start=0] The start position.
857
+ * @param {number} [end=array.length] The end position.
858
+ * @returns {Array} Returns the slice of `array`.
859
+ */
860
+ function baseSlice(array, start, end) {
861
+ var index = -1,
862
+ length = array.length;
863
+
864
+ if (start < 0) {
865
+ start = -start > length ? 0 : (length + start);
866
+ }
867
+ end = end > length ? length : end;
868
+ if (end < 0) {
869
+ end += length;
870
+ }
871
+ length = start > end ? 0 : ((end - start) >>> 0);
872
+ start >>>= 0;
873
+
874
+ var result = Array(length);
875
+ while (++index < length) {
876
+ result[index] = array[index + start];
877
+ }
878
+ return result;
879
+ }
880
+
881
+ /**
882
+ * Copies the values of `source` to `array`.
883
+ *
884
+ * @private
885
+ * @param {Array} source The array to copy values from.
886
+ * @param {Array} [array=[]] The array to copy values to.
887
+ * @returns {Array} Returns `array`.
888
+ */
889
+ function copyArray(source) {
890
+ return baseSlice(source, 0, source.length);
891
+ }
892
+
893
+ /**
894
+ * The base implementation of `_.some` without support for iteratee shorthands.
895
+ *
896
+ * @private
897
+ * @param {Array|Object} collection The collection to iterate over.
898
+ * @param {Function} predicate The function invoked per iteration.
899
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
900
+ * else `false`.
901
+ */
902
+ function baseSome(collection, predicate) {
903
+ var result;
904
+
905
+ baseEach(collection, function(value, index, collection) {
906
+ result = predicate(value, index, collection);
907
+ return !result;
908
+ });
909
+ return !!result;
910
+ }
911
+
912
+ /**
913
+ * The base implementation of `wrapperValue` which returns the result of
914
+ * performing a sequence of actions on the unwrapped `value`, where each
915
+ * successive action is supplied the return value of the previous.
916
+ *
917
+ * @private
918
+ * @param {*} value The unwrapped value.
919
+ * @param {Array} actions Actions to perform to resolve the unwrapped value.
920
+ * @returns {*} Returns the resolved value.
921
+ */
922
+ function baseWrapperValue(value, actions) {
923
+ var result = value;
924
+ return reduce(actions, function(result, action) {
925
+ return action.func.apply(action.thisArg, arrayPush([result], action.args));
926
+ }, result);
927
+ }
928
+
929
+ /**
930
+ * Compares values to sort them in ascending order.
931
+ *
932
+ * @private
933
+ * @param {*} value The value to compare.
934
+ * @param {*} other The other value to compare.
935
+ * @returns {number} Returns the sort order indicator for `value`.
936
+ */
937
+ function compareAscending(value, other) {
938
+ if (value !== other) {
939
+ var valIsDefined = value !== undefined,
940
+ valIsNull = value === null,
941
+ valIsReflexive = value === value,
942
+ valIsSymbol = false;
943
+
944
+ var othIsDefined = other !== undefined,
945
+ othIsNull = other === null,
946
+ othIsReflexive = other === other,
947
+ othIsSymbol = false;
948
+
949
+ if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
950
+ (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
951
+ (valIsNull && othIsDefined && othIsReflexive) ||
952
+ (!valIsDefined && othIsReflexive) ||
953
+ !valIsReflexive) {
954
+ return 1;
955
+ }
956
+ if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
957
+ (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
958
+ (othIsNull && valIsDefined && valIsReflexive) ||
959
+ (!othIsDefined && valIsReflexive) ||
960
+ !othIsReflexive) {
961
+ return -1;
962
+ }
963
+ }
964
+ return 0;
965
+ }
966
+
967
+ /**
968
+ * Copies properties of `source` to `object`.
969
+ *
970
+ * @private
971
+ * @param {Object} source The object to copy properties from.
972
+ * @param {Array} props The property identifiers to copy.
973
+ * @param {Object} [object={}] The object to copy properties to.
974
+ * @param {Function} [customizer] The function to customize copied values.
975
+ * @returns {Object} Returns `object`.
976
+ */
977
+ function copyObject(source, props, object, customizer) {
978
+ var isNew = !object;
979
+ object || (object = {});
980
+
981
+ var index = -1,
982
+ length = props.length;
983
+
984
+ while (++index < length) {
985
+ var key = props[index];
986
+
987
+ var newValue = customizer
988
+ ? customizer(object[key], source[key], key, object, source)
989
+ : undefined;
990
+
991
+ if (newValue === undefined) {
992
+ newValue = source[key];
993
+ }
994
+ if (isNew) {
995
+ baseAssignValue(object, key, newValue);
996
+ } else {
997
+ assignValue(object, key, newValue);
998
+ }
999
+ }
1000
+ return object;
1001
+ }
1002
+
1003
+ /**
1004
+ * Creates a function like `_.assign`.
1005
+ *
1006
+ * @private
1007
+ * @param {Function} assigner The function to assign values.
1008
+ * @returns {Function} Returns the new assigner function.
1009
+ */
1010
+ function createAssigner(assigner) {
1011
+ return baseRest(function(object, sources) {
1012
+ var index = -1,
1013
+ length = sources.length,
1014
+ customizer = length > 1 ? sources[length - 1] : undefined;
1015
+
1016
+ customizer = (assigner.length > 3 && typeof customizer == 'function')
1017
+ ? (length--, customizer)
1018
+ : undefined;
1019
+
1020
+ object = Object(object);
1021
+ while (++index < length) {
1022
+ var source = sources[index];
1023
+ if (source) {
1024
+ assigner(object, source, index, customizer);
1025
+ }
1026
+ }
1027
+ return object;
1028
+ });
1029
+ }
1030
+
1031
+ /**
1032
+ * Creates a `baseEach` or `baseEachRight` function.
1033
+ *
1034
+ * @private
1035
+ * @param {Function} eachFunc The function to iterate over a collection.
1036
+ * @param {boolean} [fromRight] Specify iterating from right to left.
1037
+ * @returns {Function} Returns the new base function.
1038
+ */
1039
+ function createBaseEach(eachFunc, fromRight) {
1040
+ return function(collection, iteratee) {
1041
+ if (collection == null) {
1042
+ return collection;
1043
+ }
1044
+ if (!isArrayLike(collection)) {
1045
+ return eachFunc(collection, iteratee);
1046
+ }
1047
+ var length = collection.length,
1048
+ index = fromRight ? length : -1,
1049
+ iterable = Object(collection);
1050
+
1051
+ while ((fromRight ? index-- : ++index < length)) {
1052
+ if (iteratee(iterable[index], index, iterable) === false) {
1053
+ break;
1054
+ }
1055
+ }
1056
+ return collection;
1057
+ };
1058
+ }
1059
+
1060
+ /**
1061
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
1062
+ *
1063
+ * @private
1064
+ * @param {boolean} [fromRight] Specify iterating from right to left.
1065
+ * @returns {Function} Returns the new base function.
1066
+ */
1067
+ function createBaseFor(fromRight) {
1068
+ return function(object, iteratee, keysFunc) {
1069
+ var index = -1,
1070
+ iterable = Object(object),
1071
+ props = keysFunc(object),
1072
+ length = props.length;
1073
+
1074
+ while (length--) {
1075
+ var key = props[fromRight ? length : ++index];
1076
+ if (iteratee(iterable[key], key, iterable) === false) {
1077
+ break;
1078
+ }
1079
+ }
1080
+ return object;
1081
+ };
1082
+ }
1083
+
1084
+ /**
1085
+ * Creates a function that produces an instance of `Ctor` regardless of
1086
+ * whether it was invoked as part of a `new` expression or by `call` or `apply`.
1087
+ *
1088
+ * @private
1089
+ * @param {Function} Ctor The constructor to wrap.
1090
+ * @returns {Function} Returns the new wrapped function.
1091
+ */
1092
+ function createCtor(Ctor) {
1093
+ return function() {
1094
+ // Use a `switch` statement to work with class constructors. See
1095
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
1096
+ // for more details.
1097
+ var args = arguments;
1098
+ var thisBinding = baseCreate(Ctor.prototype),
1099
+ result = Ctor.apply(thisBinding, args);
1100
+
1101
+ // Mimic the constructor's `return` behavior.
1102
+ // See https://es5.github.io/#x13.2.2 for more details.
1103
+ return isObject(result) ? result : thisBinding;
1104
+ };
1105
+ }
1106
+
1107
+ /**
1108
+ * Creates a `_.find` or `_.findLast` function.
1109
+ *
1110
+ * @private
1111
+ * @param {Function} findIndexFunc The function to find the collection index.
1112
+ * @returns {Function} Returns the new find function.
1113
+ */
1114
+ function createFind(findIndexFunc) {
1115
+ return function(collection, predicate, fromIndex) {
1116
+ var iterable = Object(collection);
1117
+ if (!isArrayLike(collection)) {
1118
+ var iteratee = baseIteratee(predicate, 3);
1119
+ collection = keys(collection);
1120
+ predicate = function(key) { return iteratee(iterable[key], key, iterable); };
1121
+ }
1122
+ var index = findIndexFunc(collection, predicate, fromIndex);
1123
+ return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
1124
+ };
1125
+ }
1126
+
1127
+ /**
1128
+ * Creates a function that wraps `func` to invoke it with the `this` binding
1129
+ * of `thisArg` and `partials` prepended to the arguments it receives.
1130
+ *
1131
+ * @private
1132
+ * @param {Function} func The function to wrap.
1133
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
1134
+ * @param {*} thisArg The `this` binding of `func`.
1135
+ * @param {Array} partials The arguments to prepend to those provided to
1136
+ * the new function.
1137
+ * @returns {Function} Returns the new wrapped function.
1138
+ */
1139
+ function createPartial(func, bitmask, thisArg, partials) {
1140
+ if (typeof func != 'function') {
1141
+ throw new TypeError(FUNC_ERROR_TEXT);
1142
+ }
1143
+ var isBind = bitmask & WRAP_BIND_FLAG,
1144
+ Ctor = createCtor(func);
1145
+
1146
+ function wrapper() {
1147
+ var argsIndex = -1,
1148
+ argsLength = arguments.length,
1149
+ leftIndex = -1,
1150
+ leftLength = partials.length,
1151
+ args = Array(leftLength + argsLength),
1152
+ fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
1153
+
1154
+ while (++leftIndex < leftLength) {
1155
+ args[leftIndex] = partials[leftIndex];
1156
+ }
1157
+ while (argsLength--) {
1158
+ args[leftIndex++] = arguments[++argsIndex];
1159
+ }
1160
+ return fn.apply(isBind ? thisArg : this, args);
1161
+ }
1162
+ return wrapper;
1163
+ }
1164
+
1165
+ /**
1166
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
1167
+ * partial deep comparisons.
1168
+ *
1169
+ * @private
1170
+ * @param {Array} array The array to compare.
1171
+ * @param {Array} other The other array to compare.
1172
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
1173
+ * @param {Function} customizer The function to customize comparisons.
1174
+ * @param {Function} equalFunc The function to determine equivalents of values.
1175
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
1176
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
1177
+ */
1178
+ function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
1179
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
1180
+ arrLength = array.length,
1181
+ othLength = other.length;
1182
+
1183
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
1184
+ return false;
1185
+ }
1186
+ // Check that cyclic values are equal.
1187
+ var arrStacked = stack.get(array);
1188
+ var othStacked = stack.get(other);
1189
+ if (arrStacked && othStacked) {
1190
+ return arrStacked == other && othStacked == array;
1191
+ }
1192
+ var index = -1,
1193
+ result = true,
1194
+ seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;
1195
+
1196
+ // Ignore non-index properties.
1197
+ while (++index < arrLength) {
1198
+ var arrValue = array[index],
1199
+ othValue = other[index];
1200
+
1201
+ var compared;
1202
+ if (compared !== undefined) {
1203
+ if (compared) {
1204
+ continue;
1205
+ }
1206
+ result = false;
1207
+ break;
1208
+ }
1209
+ // Recursively compare arrays (susceptible to call stack limits).
1210
+ if (seen) {
1211
+ if (!baseSome(other, function(othValue, othIndex) {
1212
+ if (!indexOf(seen, othIndex) &&
1213
+ (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
1214
+ return seen.push(othIndex);
1215
+ }
1216
+ })) {
1217
+ result = false;
1218
+ break;
1219
+ }
1220
+ } else if (!(
1221
+ arrValue === othValue ||
1222
+ equalFunc(arrValue, othValue, bitmask, customizer, stack)
1223
+ )) {
1224
+ result = false;
1225
+ break;
1226
+ }
1227
+ }
1228
+ return result;
1229
+ }
1230
+
1231
+ /**
1232
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
1233
+ * the same `toStringTag`.
1234
+ *
1235
+ * **Note:** This function only supports comparing values with tags of
1236
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
1237
+ *
1238
+ * @private
1239
+ * @param {Object} object The object to compare.
1240
+ * @param {Object} other The other object to compare.
1241
+ * @param {string} tag The `toStringTag` of the objects to compare.
1242
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
1243
+ * @param {Function} customizer The function to customize comparisons.
1244
+ * @param {Function} equalFunc The function to determine equivalents of values.
1245
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
1246
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
1247
+ */
1248
+ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
1249
+ switch (tag) {
1250
+
1251
+ case boolTag:
1252
+ case dateTag:
1253
+ case numberTag:
1254
+ // Coerce booleans to `1` or `0` and dates to milliseconds.
1255
+ // Invalid dates are coerced to `NaN`.
1256
+ return eq(+object, +other);
1257
+
1258
+ case errorTag:
1259
+ return object.name == other.name && object.message == other.message;
1260
+
1261
+ case regexpTag:
1262
+ case stringTag:
1263
+ // Coerce regexes to strings and treat strings, primitives and objects,
1264
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
1265
+ // for more details.
1266
+ return object == (other + '');
1267
+
1268
+ }
1269
+ return false;
1270
+ }
1271
+
1272
+ /**
1273
+ * A specialized version of `baseIsEqualDeep` for objects with support for
1274
+ * partial deep comparisons.
1275
+ *
1276
+ * @private
1277
+ * @param {Object} object The object to compare.
1278
+ * @param {Object} other The other object to compare.
1279
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
1280
+ * @param {Function} customizer The function to customize comparisons.
1281
+ * @param {Function} equalFunc The function to determine equivalents of values.
1282
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
1283
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
1284
+ */
1285
+ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
1286
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
1287
+ objProps = keys(object),
1288
+ objLength = objProps.length,
1289
+ othProps = keys(other),
1290
+ othLength = othProps.length;
1291
+
1292
+ if (objLength != othLength && !isPartial) {
1293
+ return false;
1294
+ }
1295
+ var index = objLength;
1296
+ while (index--) {
1297
+ var key = objProps[index];
1298
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
1299
+ return false;
1300
+ }
1301
+ }
1302
+ // Check that cyclic values are equal.
1303
+ var objStacked = stack.get(object);
1304
+ var othStacked = stack.get(other);
1305
+ if (objStacked && othStacked) {
1306
+ return objStacked == other && othStacked == object;
1307
+ }
1308
+ var result = true;
1309
+
1310
+ var skipCtor = isPartial;
1311
+ while (++index < objLength) {
1312
+ key = objProps[index];
1313
+ var objValue = object[key],
1314
+ othValue = other[key];
1315
+
1316
+ var compared;
1317
+ // Recursively compare objects (susceptible to call stack limits).
1318
+ if (!(compared === undefined
1319
+ ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
1320
+ : compared
1321
+ )) {
1322
+ result = false;
1323
+ break;
1324
+ }
1325
+ skipCtor || (skipCtor = key == 'constructor');
1326
+ }
1327
+ if (result && !skipCtor) {
1328
+ var objCtor = object.constructor,
1329
+ othCtor = other.constructor;
1330
+
1331
+ // Non `Object` object instances with different constructors are not equal.
1332
+ if (objCtor != othCtor &&
1333
+ ('constructor' in object && 'constructor' in other) &&
1334
+ !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
1335
+ typeof othCtor == 'function' && othCtor instanceof othCtor)) {
1336
+ result = false;
1337
+ }
1338
+ }
1339
+ return result;
1340
+ }
1341
+
1342
+ /**
1343
+ * A specialized version of `baseRest` which flattens the rest array.
1344
+ *
1345
+ * @private
1346
+ * @param {Function} func The function to apply a rest parameter to.
1347
+ * @returns {Function} Returns the new function.
1348
+ */
1349
+ function flatRest(func) {
1350
+ return setToString(overRest(func, undefined, flatten), func + '');
1351
+ }
1352
+
1353
+ /**
1354
+ * Checks if `value` is a flattenable `arguments` object or array.
1355
+ *
1356
+ * @private
1357
+ * @param {*} value The value to check.
1358
+ * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
1359
+ */
1360
+ function isFlattenable(value) {
1361
+ return isArray(value) || isArguments(value);
1362
+ }
1363
+
1364
+ /**
1365
+ * Checks if `value` is a valid array-like index.
1366
+ *
1367
+ * @private
1368
+ * @param {*} value The value to check.
1369
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
1370
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
1371
+ */
1372
+ function isIndex(value, length) {
1373
+ var type = typeof value;
1374
+ length = length == null ? MAX_SAFE_INTEGER : length;
1375
+
1376
+ return !!length &&
1377
+ (type == 'number' ||
1378
+ (type != 'symbol' && reIsUint.test(value))) &&
1379
+ (value > -1 && value % 1 == 0 && value < length);
1380
+ }
1381
+
1382
+ /**
1383
+ * Checks if the given arguments are from an iteratee call.
1384
+ *
1385
+ * @private
1386
+ * @param {*} value The potential iteratee value argument.
1387
+ * @param {*} index The potential iteratee index or key argument.
1388
+ * @param {*} object The potential iteratee object argument.
1389
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
1390
+ * else `false`.
1391
+ */
1392
+ function isIterateeCall(value, index, object) {
1393
+ if (!isObject(object)) {
1394
+ return false;
1395
+ }
1396
+ var type = typeof index;
1397
+ if (type == 'number'
1398
+ ? (isArrayLike(object) && isIndex(index, object.length))
1399
+ : (type == 'string' && index in object)
1400
+ ) {
1401
+ return eq(object[index], value);
1402
+ }
1403
+ return false;
1404
+ }
1405
+
1406
+ /**
1407
+ * This function is like
1408
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1409
+ * except that it includes inherited enumerable properties.
1410
+ *
1411
+ * @private
1412
+ * @param {Object} object The object to query.
1413
+ * @returns {Array} Returns the array of property names.
1414
+ */
1415
+ function nativeKeysIn(object) {
1416
+ var result = [];
1417
+ if (object != null) {
1418
+ for (var key in Object(object)) {
1419
+ result.push(key);
1420
+ }
1421
+ }
1422
+ return result;
1423
+ }
1424
+
1425
+ /**
1426
+ * Converts `value` to a string using `Object.prototype.toString`.
1427
+ *
1428
+ * @private
1429
+ * @param {*} value The value to convert.
1430
+ * @returns {string} Returns the converted string.
1431
+ */
1432
+ function objectToString(value) {
1433
+ return nativeObjectToString.call(value);
1434
+ }
1435
+
1436
+ /**
1437
+ * A specialized version of `baseRest` which transforms the rest array.
1438
+ *
1439
+ * @private
1440
+ * @param {Function} func The function to apply a rest parameter to.
1441
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
1442
+ * @param {Function} transform The rest array transform.
1443
+ * @returns {Function} Returns the new function.
1444
+ */
1445
+ function overRest(func, start, transform) {
1446
+ start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
1447
+ return function() {
1448
+ var args = arguments,
1449
+ index = -1,
1450
+ length = nativeMax(args.length - start, 0),
1451
+ array = Array(length);
1452
+
1453
+ while (++index < length) {
1454
+ array[index] = args[start + index];
1455
+ }
1456
+ index = -1;
1457
+ var otherArgs = Array(start + 1);
1458
+ while (++index < start) {
1459
+ otherArgs[index] = args[index];
1460
+ }
1461
+ otherArgs[start] = transform(array);
1462
+ return func.apply(this, otherArgs);
1463
+ };
1464
+ }
1465
+
1466
+ /**
1467
+ * Sets the `toString` method of `func` to return `string`.
1468
+ *
1469
+ * @private
1470
+ * @param {Function} func The function to modify.
1471
+ * @param {Function} string The `toString` result.
1472
+ * @returns {Function} Returns `func`.
1473
+ */
1474
+ var setToString = identity;
1475
+
1476
+ /*------------------------------------------------------------------------*/
1477
+
1478
+ /**
1479
+ * Creates an array with all falsey values removed. The values `false`, `null`,
1480
+ * `0`, `""`, `undefined`, and `NaN` are falsey.
1481
+ *
1482
+ * @static
1483
+ * @memberOf _
1484
+ * @since 0.1.0
1485
+ * @category Array
1486
+ * @param {Array} array The array to compact.
1487
+ * @returns {Array} Returns the new array of filtered values.
1488
+ * @example
1489
+ *
1490
+ * _.compact([0, 1, false, 2, '', 3]);
1491
+ * // => [1, 2, 3]
1492
+ */
1493
+ function compact(array) {
1494
+ return baseFilter(array, Boolean);
1495
+ }
1496
+
1497
+ /**
1498
+ * Creates a new array concatenating `array` with any additional arrays
1499
+ * and/or values.
1500
+ *
1501
+ * @static
1502
+ * @memberOf _
1503
+ * @since 4.0.0
1504
+ * @category Array
1505
+ * @param {Array} array The array to concatenate.
1506
+ * @param {...*} [values] The values to concatenate.
1507
+ * @returns {Array} Returns the new concatenated array.
1508
+ * @example
1509
+ *
1510
+ * var array = [1];
1511
+ * var other = _.concat(array, 2, [3], [[4]]);
1512
+ *
1513
+ * console.log(other);
1514
+ * // => [1, 2, 3, [4]]
1515
+ *
1516
+ * console.log(array);
1517
+ * // => [1]
1518
+ */
1519
+ function concat() {
1520
+ var length = arguments.length;
1521
+ if (!length) {
1522
+ return [];
1523
+ }
1524
+ var args = Array(length - 1),
1525
+ array = arguments[0],
1526
+ index = length;
1527
+
1528
+ while (index--) {
1529
+ args[index - 1] = arguments[index];
1530
+ }
1531
+ return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
1532
+ }
1533
+
1534
+ /**
1535
+ * This method is like `_.find` except that it returns the index of the first
1536
+ * element `predicate` returns truthy for instead of the element itself.
1537
+ *
1538
+ * @static
1539
+ * @memberOf _
1540
+ * @since 1.1.0
1541
+ * @category Array
1542
+ * @param {Array} array The array to inspect.
1543
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1544
+ * @param {number} [fromIndex=0] The index to search from.
1545
+ * @returns {number} Returns the index of the found element, else `-1`.
1546
+ * @example
1547
+ *
1548
+ * var users = [
1549
+ * { 'user': 'barney', 'active': false },
1550
+ * { 'user': 'fred', 'active': false },
1551
+ * { 'user': 'pebbles', 'active': true }
1552
+ * ];
1553
+ *
1554
+ * _.findIndex(users, function(o) { return o.user == 'barney'; });
1555
+ * // => 0
1556
+ *
1557
+ * // The `_.matches` iteratee shorthand.
1558
+ * _.findIndex(users, { 'user': 'fred', 'active': false });
1559
+ * // => 1
1560
+ *
1561
+ * // The `_.matchesProperty` iteratee shorthand.
1562
+ * _.findIndex(users, ['active', false]);
1563
+ * // => 0
1564
+ *
1565
+ * // The `_.property` iteratee shorthand.
1566
+ * _.findIndex(users, 'active');
1567
+ * // => 2
1568
+ */
1569
+ function findIndex(array, predicate, fromIndex) {
1570
+ var length = array == null ? 0 : array.length;
1571
+ if (!length) {
1572
+ return -1;
1573
+ }
1574
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
1575
+ if (index < 0) {
1576
+ index = nativeMax(length + index, 0);
1577
+ }
1578
+ return baseFindIndex(array, baseIteratee(predicate, 3), index);
1579
+ }
1580
+
1581
+ /**
1582
+ * Flattens `array` a single level deep.
1583
+ *
1584
+ * @static
1585
+ * @memberOf _
1586
+ * @since 0.1.0
1587
+ * @category Array
1588
+ * @param {Array} array The array to flatten.
1589
+ * @returns {Array} Returns the new flattened array.
1590
+ * @example
1591
+ *
1592
+ * _.flatten([1, [2, [3, [4]], 5]]);
1593
+ * // => [1, 2, [3, [4]], 5]
1594
+ */
1595
+ function flatten(array) {
1596
+ var length = array == null ? 0 : array.length;
1597
+ return length ? baseFlatten(array, 1) : [];
1598
+ }
1599
+
1600
+ /**
1601
+ * Recursively flattens `array`.
1602
+ *
1603
+ * @static
1604
+ * @memberOf _
1605
+ * @since 3.0.0
1606
+ * @category Array
1607
+ * @param {Array} array The array to flatten.
1608
+ * @returns {Array} Returns the new flattened array.
1609
+ * @example
1610
+ *
1611
+ * _.flattenDeep([1, [2, [3, [4]], 5]]);
1612
+ * // => [1, 2, 3, 4, 5]
1613
+ */
1614
+ function flattenDeep(array) {
1615
+ var length = array == null ? 0 : array.length;
1616
+ return length ? baseFlatten(array, INFINITY) : [];
1617
+ }
1618
+
1619
+ /**
1620
+ * Gets the first element of `array`.
1621
+ *
1622
+ * @static
1623
+ * @memberOf _
1624
+ * @since 0.1.0
1625
+ * @alias first
1626
+ * @category Array
1627
+ * @param {Array} array The array to query.
1628
+ * @returns {*} Returns the first element of `array`.
1629
+ * @example
1630
+ *
1631
+ * _.head([1, 2, 3]);
1632
+ * // => 1
1633
+ *
1634
+ * _.head([]);
1635
+ * // => undefined
1636
+ */
1637
+ function head(array) {
1638
+ return (array && array.length) ? array[0] : undefined;
1639
+ }
1640
+
1641
+ /**
1642
+ * Gets the index at which the first occurrence of `value` is found in `array`
1643
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
1644
+ * for equality comparisons. If `fromIndex` is negative, it's used as the
1645
+ * offset from the end of `array`.
1646
+ *
1647
+ * @static
1648
+ * @memberOf _
1649
+ * @since 0.1.0
1650
+ * @category Array
1651
+ * @param {Array} array The array to inspect.
1652
+ * @param {*} value The value to search for.
1653
+ * @param {number} [fromIndex=0] The index to search from.
1654
+ * @returns {number} Returns the index of the matched value, else `-1`.
1655
+ * @example
1656
+ *
1657
+ * _.indexOf([1, 2, 1, 2], 2);
1658
+ * // => 1
1659
+ *
1660
+ * // Search from the `fromIndex`.
1661
+ * _.indexOf([1, 2, 1, 2], 2, 2);
1662
+ * // => 3
1663
+ */
1664
+ function indexOf(array, value, fromIndex) {
1665
+ var length = array == null ? 0 : array.length;
1666
+ if (typeof fromIndex == 'number') {
1667
+ fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
1668
+ } else {
1669
+ fromIndex = 0;
1670
+ }
1671
+ var index = (fromIndex || 0) - 1,
1672
+ isReflexive = value === value;
1673
+
1674
+ while (++index < length) {
1675
+ var other = array[index];
1676
+ if ((isReflexive ? other === value : other !== other)) {
1677
+ return index;
1678
+ }
1679
+ }
1680
+ return -1;
1681
+ }
1682
+
1683
+ /**
1684
+ * Gets the last element of `array`.
1685
+ *
1686
+ * @static
1687
+ * @memberOf _
1688
+ * @since 0.1.0
1689
+ * @category Array
1690
+ * @param {Array} array The array to query.
1691
+ * @returns {*} Returns the last element of `array`.
1692
+ * @example
1693
+ *
1694
+ * _.last([1, 2, 3]);
1695
+ * // => 3
1696
+ */
1697
+ function last(array) {
1698
+ var length = array == null ? 0 : array.length;
1699
+ return length ? array[length - 1] : undefined;
1700
+ }
1701
+
1702
+ /**
1703
+ * Creates a slice of `array` from `start` up to, but not including, `end`.
1704
+ *
1705
+ * **Note:** This method is used instead of
1706
+ * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
1707
+ * returned.
1708
+ *
1709
+ * @static
1710
+ * @memberOf _
1711
+ * @since 3.0.0
1712
+ * @category Array
1713
+ * @param {Array} array The array to slice.
1714
+ * @param {number} [start=0] The start position.
1715
+ * @param {number} [end=array.length] The end position.
1716
+ * @returns {Array} Returns the slice of `array`.
1717
+ */
1718
+ function slice(array, start, end) {
1719
+ var length = array == null ? 0 : array.length;
1720
+ start = start == null ? 0 : +start;
1721
+ end = end === undefined ? length : +end;
1722
+ return length ? baseSlice(array, start, end) : [];
1723
+ }
1724
+
1725
+ /*------------------------------------------------------------------------*/
1726
+
1727
+ /**
1728
+ * Creates a `lodash` wrapper instance that wraps `value` with explicit method
1729
+ * chain sequences enabled. The result of such sequences must be unwrapped
1730
+ * with `_#value`.
1731
+ *
1732
+ * @static
1733
+ * @memberOf _
1734
+ * @since 1.3.0
1735
+ * @category Seq
1736
+ * @param {*} value The value to wrap.
1737
+ * @returns {Object} Returns the new `lodash` wrapper instance.
1738
+ * @example
1739
+ *
1740
+ * var users = [
1741
+ * { 'user': 'barney', 'age': 36 },
1742
+ * { 'user': 'fred', 'age': 40 },
1743
+ * { 'user': 'pebbles', 'age': 1 }
1744
+ * ];
1745
+ *
1746
+ * var youngest = _
1747
+ * .chain(users)
1748
+ * .sortBy('age')
1749
+ * .map(function(o) {
1750
+ * return o.user + ' is ' + o.age;
1751
+ * })
1752
+ * .head()
1753
+ * .value();
1754
+ * // => 'pebbles is 1'
1755
+ */
1756
+ function chain(value) {
1757
+ var result = lodash(value);
1758
+ result.__chain__ = true;
1759
+ return result;
1760
+ }
1761
+
1762
+ /**
1763
+ * This method invokes `interceptor` and returns `value`. The interceptor
1764
+ * is invoked with one argument; (value). The purpose of this method is to
1765
+ * "tap into" a method chain sequence in order to modify intermediate results.
1766
+ *
1767
+ * @static
1768
+ * @memberOf _
1769
+ * @since 0.1.0
1770
+ * @category Seq
1771
+ * @param {*} value The value to provide to `interceptor`.
1772
+ * @param {Function} interceptor The function to invoke.
1773
+ * @returns {*} Returns `value`.
1774
+ * @example
1775
+ *
1776
+ * _([1, 2, 3])
1777
+ * .tap(function(array) {
1778
+ * // Mutate input array.
1779
+ * array.pop();
1780
+ * })
1781
+ * .reverse()
1782
+ * .value();
1783
+ * // => [2, 1]
1784
+ */
1785
+ function tap(value, interceptor) {
1786
+ interceptor(value);
1787
+ return value;
1788
+ }
1789
+
1790
+ /**
1791
+ * This method is like `_.tap` except that it returns the result of `interceptor`.
1792
+ * The purpose of this method is to "pass thru" values replacing intermediate
1793
+ * results in a method chain sequence.
1794
+ *
1795
+ * @static
1796
+ * @memberOf _
1797
+ * @since 3.0.0
1798
+ * @category Seq
1799
+ * @param {*} value The value to provide to `interceptor`.
1800
+ * @param {Function} interceptor The function to invoke.
1801
+ * @returns {*} Returns the result of `interceptor`.
1802
+ * @example
1803
+ *
1804
+ * _(' abc ')
1805
+ * .chain()
1806
+ * .trim()
1807
+ * .thru(function(value) {
1808
+ * return [value];
1809
+ * })
1810
+ * .value();
1811
+ * // => ['abc']
1812
+ */
1813
+ function thru(value, interceptor) {
1814
+ return interceptor(value);
1815
+ }
1816
+
1817
+ /**
1818
+ * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
1819
+ *
1820
+ * @name chain
1821
+ * @memberOf _
1822
+ * @since 0.1.0
1823
+ * @category Seq
1824
+ * @returns {Object} Returns the new `lodash` wrapper instance.
1825
+ * @example
1826
+ *
1827
+ * var users = [
1828
+ * { 'user': 'barney', 'age': 36 },
1829
+ * { 'user': 'fred', 'age': 40 }
1830
+ * ];
1831
+ *
1832
+ * // A sequence without explicit chaining.
1833
+ * _(users).head();
1834
+ * // => { 'user': 'barney', 'age': 36 }
1835
+ *
1836
+ * // A sequence with explicit chaining.
1837
+ * _(users)
1838
+ * .chain()
1839
+ * .head()
1840
+ * .pick('user')
1841
+ * .value();
1842
+ * // => { 'user': 'barney' }
1843
+ */
1844
+ function wrapperChain() {
1845
+ return chain(this);
1846
+ }
1847
+
1848
+ /**
1849
+ * Executes the chain sequence to resolve the unwrapped value.
1850
+ *
1851
+ * @name value
1852
+ * @memberOf _
1853
+ * @since 0.1.0
1854
+ * @alias toJSON, valueOf
1855
+ * @category Seq
1856
+ * @returns {*} Returns the resolved unwrapped value.
1857
+ * @example
1858
+ *
1859
+ * _([1, 2, 3]).value();
1860
+ * // => [1, 2, 3]
1861
+ */
1862
+ function wrapperValue() {
1863
+ return baseWrapperValue(this.__wrapped__, this.__actions__);
1864
+ }
1865
+
1866
+ /*------------------------------------------------------------------------*/
1867
+
1868
+ /**
1869
+ * Checks if `predicate` returns truthy for **all** elements of `collection`.
1870
+ * Iteration is stopped once `predicate` returns falsey. The predicate is
1871
+ * invoked with three arguments: (value, index|key, collection).
1872
+ *
1873
+ * **Note:** This method returns `true` for
1874
+ * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
1875
+ * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
1876
+ * elements of empty collections.
1877
+ *
1878
+ * @static
1879
+ * @memberOf _
1880
+ * @since 0.1.0
1881
+ * @category Collection
1882
+ * @param {Array|Object} collection The collection to iterate over.
1883
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1884
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
1885
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
1886
+ * else `false`.
1887
+ * @example
1888
+ *
1889
+ * _.every([true, 1, null, 'yes'], Boolean);
1890
+ * // => false
1891
+ *
1892
+ * var users = [
1893
+ * { 'user': 'barney', 'age': 36, 'active': false },
1894
+ * { 'user': 'fred', 'age': 40, 'active': false }
1895
+ * ];
1896
+ *
1897
+ * // The `_.matches` iteratee shorthand.
1898
+ * _.every(users, { 'user': 'barney', 'active': false });
1899
+ * // => false
1900
+ *
1901
+ * // The `_.matchesProperty` iteratee shorthand.
1902
+ * _.every(users, ['active', false]);
1903
+ * // => true
1904
+ *
1905
+ * // The `_.property` iteratee shorthand.
1906
+ * _.every(users, 'active');
1907
+ * // => false
1908
+ */
1909
+ function every(collection, predicate, guard) {
1910
+ predicate = guard ? undefined : predicate;
1911
+ return baseEvery(collection, baseIteratee(predicate));
1912
+ }
1913
+
1914
+ /**
1915
+ * Iterates over elements of `collection`, returning an array of all elements
1916
+ * `predicate` returns truthy for. The predicate is invoked with three
1917
+ * arguments: (value, index|key, collection).
1918
+ *
1919
+ * **Note:** Unlike `_.remove`, this method returns a new array.
1920
+ *
1921
+ * @static
1922
+ * @memberOf _
1923
+ * @since 0.1.0
1924
+ * @category Collection
1925
+ * @param {Array|Object} collection The collection to iterate over.
1926
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1927
+ * @returns {Array} Returns the new filtered array.
1928
+ * @see _.reject
1929
+ * @example
1930
+ *
1931
+ * var users = [
1932
+ * { 'user': 'barney', 'age': 36, 'active': true },
1933
+ * { 'user': 'fred', 'age': 40, 'active': false }
1934
+ * ];
1935
+ *
1936
+ * _.filter(users, function(o) { return !o.active; });
1937
+ * // => objects for ['fred']
1938
+ *
1939
+ * // The `_.matches` iteratee shorthand.
1940
+ * _.filter(users, { 'age': 36, 'active': true });
1941
+ * // => objects for ['barney']
1942
+ *
1943
+ * // The `_.matchesProperty` iteratee shorthand.
1944
+ * _.filter(users, ['active', false]);
1945
+ * // => objects for ['fred']
1946
+ *
1947
+ * // The `_.property` iteratee shorthand.
1948
+ * _.filter(users, 'active');
1949
+ * // => objects for ['barney']
1950
+ *
1951
+ * // Combining several predicates using `_.overEvery` or `_.overSome`.
1952
+ * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
1953
+ * // => objects for ['fred', 'barney']
1954
+ */
1955
+ function filter(collection, predicate) {
1956
+ return baseFilter(collection, baseIteratee(predicate));
1957
+ }
1958
+
1959
+ /**
1960
+ * Iterates over elements of `collection`, returning the first element
1961
+ * `predicate` returns truthy for. The predicate is invoked with three
1962
+ * arguments: (value, index|key, collection).
1963
+ *
1964
+ * @static
1965
+ * @memberOf _
1966
+ * @since 0.1.0
1967
+ * @category Collection
1968
+ * @param {Array|Object} collection The collection to inspect.
1969
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
1970
+ * @param {number} [fromIndex=0] The index to search from.
1971
+ * @returns {*} Returns the matched element, else `undefined`.
1972
+ * @example
1973
+ *
1974
+ * var users = [
1975
+ * { 'user': 'barney', 'age': 36, 'active': true },
1976
+ * { 'user': 'fred', 'age': 40, 'active': false },
1977
+ * { 'user': 'pebbles', 'age': 1, 'active': true }
1978
+ * ];
1979
+ *
1980
+ * _.find(users, function(o) { return o.age < 40; });
1981
+ * // => object for 'barney'
1982
+ *
1983
+ * // The `_.matches` iteratee shorthand.
1984
+ * _.find(users, { 'age': 1, 'active': true });
1985
+ * // => object for 'pebbles'
1986
+ *
1987
+ * // The `_.matchesProperty` iteratee shorthand.
1988
+ * _.find(users, ['active', false]);
1989
+ * // => object for 'fred'
1990
+ *
1991
+ * // The `_.property` iteratee shorthand.
1992
+ * _.find(users, 'active');
1993
+ * // => object for 'barney'
1994
+ */
1995
+ var find = createFind(findIndex);
1996
+
1997
+ /**
1998
+ * Iterates over elements of `collection` and invokes `iteratee` for each element.
1999
+ * The iteratee is invoked with three arguments: (value, index|key, collection).
2000
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
2001
+ *
2002
+ * **Note:** As with other "Collections" methods, objects with a "length"
2003
+ * property are iterated like arrays. To avoid this behavior use `_.forIn`
2004
+ * or `_.forOwn` for object iteration.
2005
+ *
2006
+ * @static
2007
+ * @memberOf _
2008
+ * @since 0.1.0
2009
+ * @alias each
2010
+ * @category Collection
2011
+ * @param {Array|Object} collection The collection to iterate over.
2012
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
2013
+ * @returns {Array|Object} Returns `collection`.
2014
+ * @see _.forEachRight
2015
+ * @example
2016
+ *
2017
+ * _.forEach([1, 2], function(value) {
2018
+ * console.log(value);
2019
+ * });
2020
+ * // => Logs `1` then `2`.
2021
+ *
2022
+ * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
2023
+ * console.log(key);
2024
+ * });
2025
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
2026
+ */
2027
+ function forEach(collection, iteratee) {
2028
+ return baseEach(collection, baseIteratee(iteratee));
2029
+ }
2030
+
2031
+ /**
2032
+ * Creates an array of values by running each element in `collection` thru
2033
+ * `iteratee`. The iteratee is invoked with three arguments:
2034
+ * (value, index|key, collection).
2035
+ *
2036
+ * Many lodash methods are guarded to work as iteratees for methods like
2037
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
2038
+ *
2039
+ * The guarded methods are:
2040
+ * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
2041
+ * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
2042
+ * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
2043
+ * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
2044
+ *
2045
+ * @static
2046
+ * @memberOf _
2047
+ * @since 0.1.0
2048
+ * @category Collection
2049
+ * @param {Array|Object} collection The collection to iterate over.
2050
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
2051
+ * @returns {Array} Returns the new mapped array.
2052
+ * @example
2053
+ *
2054
+ * function square(n) {
2055
+ * return n * n;
2056
+ * }
2057
+ *
2058
+ * _.map([4, 8], square);
2059
+ * // => [16, 64]
2060
+ *
2061
+ * _.map({ 'a': 4, 'b': 8 }, square);
2062
+ * // => [16, 64] (iteration order is not guaranteed)
2063
+ *
2064
+ * var users = [
2065
+ * { 'user': 'barney' },
2066
+ * { 'user': 'fred' }
2067
+ * ];
2068
+ *
2069
+ * // The `_.property` iteratee shorthand.
2070
+ * _.map(users, 'user');
2071
+ * // => ['barney', 'fred']
2072
+ */
2073
+ function map(collection, iteratee) {
2074
+ return baseMap(collection, baseIteratee(iteratee));
2075
+ }
2076
+
2077
+ /**
2078
+ * Reduces `collection` to a value which is the accumulated result of running
2079
+ * each element in `collection` thru `iteratee`, where each successive
2080
+ * invocation is supplied the return value of the previous. If `accumulator`
2081
+ * is not given, the first element of `collection` is used as the initial
2082
+ * value. The iteratee is invoked with four arguments:
2083
+ * (accumulator, value, index|key, collection).
2084
+ *
2085
+ * Many lodash methods are guarded to work as iteratees for methods like
2086
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
2087
+ *
2088
+ * The guarded methods are:
2089
+ * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
2090
+ * and `sortBy`
2091
+ *
2092
+ * @static
2093
+ * @memberOf _
2094
+ * @since 0.1.0
2095
+ * @category Collection
2096
+ * @param {Array|Object} collection The collection to iterate over.
2097
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
2098
+ * @param {*} [accumulator] The initial value.
2099
+ * @returns {*} Returns the accumulated value.
2100
+ * @see _.reduceRight
2101
+ * @example
2102
+ *
2103
+ * _.reduce([1, 2], function(sum, n) {
2104
+ * return sum + n;
2105
+ * }, 0);
2106
+ * // => 3
2107
+ *
2108
+ * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
2109
+ * (result[value] || (result[value] = [])).push(key);
2110
+ * return result;
2111
+ * }, {});
2112
+ * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
2113
+ */
2114
+ function reduce(collection, iteratee, accumulator) {
2115
+ return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);
2116
+ }
2117
+
2118
+ /**
2119
+ * Gets the size of `collection` by returning its length for array-like
2120
+ * values or the number of own enumerable string keyed properties for objects.
2121
+ *
2122
+ * @static
2123
+ * @memberOf _
2124
+ * @since 0.1.0
2125
+ * @category Collection
2126
+ * @param {Array|Object|string} collection The collection to inspect.
2127
+ * @returns {number} Returns the collection size.
2128
+ * @example
2129
+ *
2130
+ * _.size([1, 2, 3]);
2131
+ * // => 3
2132
+ *
2133
+ * _.size({ 'a': 1, 'b': 2 });
2134
+ * // => 2
2135
+ *
2136
+ * _.size('pebbles');
2137
+ * // => 7
2138
+ */
2139
+ function size(collection) {
2140
+ if (collection == null) {
2141
+ return 0;
2142
+ }
2143
+ collection = isArrayLike(collection) ? collection : nativeKeys(collection);
2144
+ return collection.length;
2145
+ }
2146
+
2147
+ /**
2148
+ * Checks if `predicate` returns truthy for **any** element of `collection`.
2149
+ * Iteration is stopped once `predicate` returns truthy. The predicate is
2150
+ * invoked with three arguments: (value, index|key, collection).
2151
+ *
2152
+ * @static
2153
+ * @memberOf _
2154
+ * @since 0.1.0
2155
+ * @category Collection
2156
+ * @param {Array|Object} collection The collection to iterate over.
2157
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
2158
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
2159
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
2160
+ * else `false`.
2161
+ * @example
2162
+ *
2163
+ * _.some([null, 0, 'yes', false], Boolean);
2164
+ * // => true
2165
+ *
2166
+ * var users = [
2167
+ * { 'user': 'barney', 'active': true },
2168
+ * { 'user': 'fred', 'active': false }
2169
+ * ];
2170
+ *
2171
+ * // The `_.matches` iteratee shorthand.
2172
+ * _.some(users, { 'user': 'barney', 'active': false });
2173
+ * // => false
2174
+ *
2175
+ * // The `_.matchesProperty` iteratee shorthand.
2176
+ * _.some(users, ['active', false]);
2177
+ * // => true
2178
+ *
2179
+ * // The `_.property` iteratee shorthand.
2180
+ * _.some(users, 'active');
2181
+ * // => true
2182
+ */
2183
+ function some(collection, predicate, guard) {
2184
+ predicate = guard ? undefined : predicate;
2185
+ return baseSome(collection, baseIteratee(predicate));
2186
+ }
2187
+
2188
+ /**
2189
+ * Creates an array of elements, sorted in ascending order by the results of
2190
+ * running each element in a collection thru each iteratee. This method
2191
+ * performs a stable sort, that is, it preserves the original sort order of
2192
+ * equal elements. The iteratees are invoked with one argument: (value).
2193
+ *
2194
+ * @static
2195
+ * @memberOf _
2196
+ * @since 0.1.0
2197
+ * @category Collection
2198
+ * @param {Array|Object} collection The collection to iterate over.
2199
+ * @param {...(Function|Function[])} [iteratees=[_.identity]]
2200
+ * The iteratees to sort by.
2201
+ * @returns {Array} Returns the new sorted array.
2202
+ * @example
2203
+ *
2204
+ * var users = [
2205
+ * { 'user': 'fred', 'age': 48 },
2206
+ * { 'user': 'barney', 'age': 36 },
2207
+ * { 'user': 'fred', 'age': 30 },
2208
+ * { 'user': 'barney', 'age': 34 }
2209
+ * ];
2210
+ *
2211
+ * _.sortBy(users, [function(o) { return o.user; }]);
2212
+ * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
2213
+ *
2214
+ * _.sortBy(users, ['user', 'age']);
2215
+ * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
2216
+ */
2217
+ function sortBy(collection, iteratee) {
2218
+ var index = 0;
2219
+ iteratee = baseIteratee(iteratee);
2220
+
2221
+ return baseMap(baseMap(collection, function(value, key, collection) {
2222
+ return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };
2223
+ }).sort(function(object, other) {
2224
+ return compareAscending(object.criteria, other.criteria) || (object.index - other.index);
2225
+ }), baseProperty('value'));
2226
+ }
2227
+
2228
+ /*------------------------------------------------------------------------*/
2229
+
2230
+ /**
2231
+ * Creates a function that invokes `func`, with the `this` binding and arguments
2232
+ * of the created function, while it's called less than `n` times. Subsequent
2233
+ * calls to the created function return the result of the last `func` invocation.
2234
+ *
2235
+ * @static
2236
+ * @memberOf _
2237
+ * @since 3.0.0
2238
+ * @category Function
2239
+ * @param {number} n The number of calls at which `func` is no longer invoked.
2240
+ * @param {Function} func The function to restrict.
2241
+ * @returns {Function} Returns the new restricted function.
2242
+ * @example
2243
+ *
2244
+ * jQuery(element).on('click', _.before(5, addContactToList));
2245
+ * // => Allows adding up to 4 contacts to the list.
2246
+ */
2247
+ function before(n, func) {
2248
+ var result;
2249
+ if (typeof func != 'function') {
2250
+ throw new TypeError(FUNC_ERROR_TEXT);
2251
+ }
2252
+ n = toInteger(n);
2253
+ return function() {
2254
+ if (--n > 0) {
2255
+ result = func.apply(this, arguments);
2256
+ }
2257
+ if (n <= 1) {
2258
+ func = undefined;
2259
+ }
2260
+ return result;
2261
+ };
2262
+ }
2263
+
2264
+ /**
2265
+ * Creates a function that invokes `func` with the `this` binding of `thisArg`
2266
+ * and `partials` prepended to the arguments it receives.
2267
+ *
2268
+ * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
2269
+ * may be used as a placeholder for partially applied arguments.
2270
+ *
2271
+ * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
2272
+ * property of bound functions.
2273
+ *
2274
+ * @static
2275
+ * @memberOf _
2276
+ * @since 0.1.0
2277
+ * @category Function
2278
+ * @param {Function} func The function to bind.
2279
+ * @param {*} thisArg The `this` binding of `func`.
2280
+ * @param {...*} [partials] The arguments to be partially applied.
2281
+ * @returns {Function} Returns the new bound function.
2282
+ * @example
2283
+ *
2284
+ * function greet(greeting, punctuation) {
2285
+ * return greeting + ' ' + this.user + punctuation;
2286
+ * }
2287
+ *
2288
+ * var object = { 'user': 'fred' };
2289
+ *
2290
+ * var bound = _.bind(greet, object, 'hi');
2291
+ * bound('!');
2292
+ * // => 'hi fred!'
2293
+ *
2294
+ * // Bound with placeholders.
2295
+ * var bound = _.bind(greet, object, _, '!');
2296
+ * bound('hi');
2297
+ * // => 'hi fred!'
2298
+ */
2299
+ var bind = baseRest(function(func, thisArg, partials) {
2300
+ return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);
2301
+ });
2302
+
2303
+ /**
2304
+ * Defers invoking the `func` until the current call stack has cleared. Any
2305
+ * additional arguments are provided to `func` when it's invoked.
2306
+ *
2307
+ * @static
2308
+ * @memberOf _
2309
+ * @since 0.1.0
2310
+ * @category Function
2311
+ * @param {Function} func The function to defer.
2312
+ * @param {...*} [args] The arguments to invoke `func` with.
2313
+ * @returns {number} Returns the timer id.
2314
+ * @example
2315
+ *
2316
+ * _.defer(function(text) {
2317
+ * console.log(text);
2318
+ * }, 'deferred');
2319
+ * // => Logs 'deferred' after one millisecond.
2320
+ */
2321
+ var defer = baseRest(function(func, args) {
2322
+ return baseDelay(func, 1, args);
2323
+ });
2324
+
2325
+ /**
2326
+ * Invokes `func` after `wait` milliseconds. Any additional arguments are
2327
+ * provided to `func` when it's invoked.
2328
+ *
2329
+ * @static
2330
+ * @memberOf _
2331
+ * @since 0.1.0
2332
+ * @category Function
2333
+ * @param {Function} func The function to delay.
2334
+ * @param {number} wait The number of milliseconds to delay invocation.
2335
+ * @param {...*} [args] The arguments to invoke `func` with.
2336
+ * @returns {number} Returns the timer id.
2337
+ * @example
2338
+ *
2339
+ * _.delay(function(text) {
2340
+ * console.log(text);
2341
+ * }, 1000, 'later');
2342
+ * // => Logs 'later' after one second.
2343
+ */
2344
+ var delay = baseRest(function(func, wait, args) {
2345
+ return baseDelay(func, toNumber(wait) || 0, args);
2346
+ });
2347
+
2348
+ /**
2349
+ * Creates a function that negates the result of the predicate `func`. The
2350
+ * `func` predicate is invoked with the `this` binding and arguments of the
2351
+ * created function.
2352
+ *
2353
+ * @static
2354
+ * @memberOf _
2355
+ * @since 3.0.0
2356
+ * @category Function
2357
+ * @param {Function} predicate The predicate to negate.
2358
+ * @returns {Function} Returns the new negated function.
2359
+ * @example
2360
+ *
2361
+ * function isEven(n) {
2362
+ * return n % 2 == 0;
2363
+ * }
2364
+ *
2365
+ * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
2366
+ * // => [1, 3, 5]
2367
+ */
2368
+ function negate(predicate) {
2369
+ if (typeof predicate != 'function') {
2370
+ throw new TypeError(FUNC_ERROR_TEXT);
2371
+ }
2372
+ return function() {
2373
+ var args = arguments;
2374
+ return !predicate.apply(this, args);
2375
+ };
2376
+ }
2377
+
2378
+ /**
2379
+ * Creates a function that is restricted to invoking `func` once. Repeat calls
2380
+ * to the function return the value of the first invocation. The `func` is
2381
+ * invoked with the `this` binding and arguments of the created function.
2382
+ *
2383
+ * @static
2384
+ * @memberOf _
2385
+ * @since 0.1.0
2386
+ * @category Function
2387
+ * @param {Function} func The function to restrict.
2388
+ * @returns {Function} Returns the new restricted function.
2389
+ * @example
2390
+ *
2391
+ * var initialize = _.once(createApplication);
2392
+ * initialize();
2393
+ * initialize();
2394
+ * // => `createApplication` is invoked once
2395
+ */
2396
+ function once(func) {
2397
+ return before(2, func);
2398
+ }
2399
+
2400
+ /*------------------------------------------------------------------------*/
2401
+
2402
+ /**
2403
+ * Creates a shallow clone of `value`.
2404
+ *
2405
+ * **Note:** This method is loosely based on the
2406
+ * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
2407
+ * and supports cloning arrays, array buffers, booleans, date objects, maps,
2408
+ * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
2409
+ * arrays. The own enumerable properties of `arguments` objects are cloned
2410
+ * as plain objects. An empty object is returned for uncloneable values such
2411
+ * as error objects, functions, DOM nodes, and WeakMaps.
2412
+ *
2413
+ * @static
2414
+ * @memberOf _
2415
+ * @since 0.1.0
2416
+ * @category Lang
2417
+ * @param {*} value The value to clone.
2418
+ * @returns {*} Returns the cloned value.
2419
+ * @see _.cloneDeep
2420
+ * @example
2421
+ *
2422
+ * var objects = [{ 'a': 1 }, { 'b': 2 }];
2423
+ *
2424
+ * var shallow = _.clone(objects);
2425
+ * console.log(shallow[0] === objects[0]);
2426
+ * // => true
2427
+ */
2428
+ function clone(value) {
2429
+ if (!isObject(value)) {
2430
+ return value;
2431
+ }
2432
+ return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));
2433
+ }
2434
+
2435
+ /**
2436
+ * Performs a
2437
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2438
+ * comparison between two values to determine if they are equivalent.
2439
+ *
2440
+ * @static
2441
+ * @memberOf _
2442
+ * @since 4.0.0
2443
+ * @category Lang
2444
+ * @param {*} value The value to compare.
2445
+ * @param {*} other The other value to compare.
2446
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2447
+ * @example
2448
+ *
2449
+ * var object = { 'a': 1 };
2450
+ * var other = { 'a': 1 };
2451
+ *
2452
+ * _.eq(object, object);
2453
+ * // => true
2454
+ *
2455
+ * _.eq(object, other);
2456
+ * // => false
2457
+ *
2458
+ * _.eq('a', 'a');
2459
+ * // => true
2460
+ *
2461
+ * _.eq('a', Object('a'));
2462
+ * // => false
2463
+ *
2464
+ * _.eq(NaN, NaN);
2465
+ * // => true
2466
+ */
2467
+ function eq(value, other) {
2468
+ return value === other || (value !== value && other !== other);
2469
+ }
2470
+
2471
+ /**
2472
+ * Checks if `value` is likely an `arguments` object.
2473
+ *
2474
+ * @static
2475
+ * @memberOf _
2476
+ * @since 0.1.0
2477
+ * @category Lang
2478
+ * @param {*} value The value to check.
2479
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
2480
+ * else `false`.
2481
+ * @example
2482
+ *
2483
+ * _.isArguments(function() { return arguments; }());
2484
+ * // => true
2485
+ *
2486
+ * _.isArguments([1, 2, 3]);
2487
+ * // => false
2488
+ */
2489
+ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
2490
+ return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
2491
+ !propertyIsEnumerable.call(value, 'callee');
2492
+ };
2493
+
2494
+ /**
2495
+ * Checks if `value` is classified as an `Array` object.
2496
+ *
2497
+ * @static
2498
+ * @memberOf _
2499
+ * @since 0.1.0
2500
+ * @category Lang
2501
+ * @param {*} value The value to check.
2502
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
2503
+ * @example
2504
+ *
2505
+ * _.isArray([1, 2, 3]);
2506
+ * // => true
2507
+ *
2508
+ * _.isArray(document.body.children);
2509
+ * // => false
2510
+ *
2511
+ * _.isArray('abc');
2512
+ * // => false
2513
+ *
2514
+ * _.isArray(_.noop);
2515
+ * // => false
2516
+ */
2517
+ var isArray = Array.isArray;
2518
+
2519
+ /**
2520
+ * Checks if `value` is array-like. A value is considered array-like if it's
2521
+ * not a function and has a `value.length` that's an integer greater than or
2522
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
2523
+ *
2524
+ * @static
2525
+ * @memberOf _
2526
+ * @since 4.0.0
2527
+ * @category Lang
2528
+ * @param {*} value The value to check.
2529
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2530
+ * @example
2531
+ *
2532
+ * _.isArrayLike([1, 2, 3]);
2533
+ * // => true
2534
+ *
2535
+ * _.isArrayLike(document.body.children);
2536
+ * // => true
2537
+ *
2538
+ * _.isArrayLike('abc');
2539
+ * // => true
2540
+ *
2541
+ * _.isArrayLike(_.noop);
2542
+ * // => false
2543
+ */
2544
+ function isArrayLike(value) {
2545
+ return value != null && isLength(value.length) && !isFunction(value);
2546
+ }
2547
+
2548
+ /**
2549
+ * Checks if `value` is classified as a boolean primitive or object.
2550
+ *
2551
+ * @static
2552
+ * @memberOf _
2553
+ * @since 0.1.0
2554
+ * @category Lang
2555
+ * @param {*} value The value to check.
2556
+ * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
2557
+ * @example
2558
+ *
2559
+ * _.isBoolean(false);
2560
+ * // => true
2561
+ *
2562
+ * _.isBoolean(null);
2563
+ * // => false
2564
+ */
2565
+ function isBoolean(value) {
2566
+ return value === true || value === false ||
2567
+ (isObjectLike(value) && baseGetTag(value) == boolTag);
2568
+ }
2569
+
2570
+ /**
2571
+ * Checks if `value` is classified as a `Date` object.
2572
+ *
2573
+ * @static
2574
+ * @memberOf _
2575
+ * @since 0.1.0
2576
+ * @category Lang
2577
+ * @param {*} value The value to check.
2578
+ * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
2579
+ * @example
2580
+ *
2581
+ * _.isDate(new Date);
2582
+ * // => true
2583
+ *
2584
+ * _.isDate('Mon April 23 2012');
2585
+ * // => false
2586
+ */
2587
+ var isDate = baseIsDate;
2588
+
2589
+ /**
2590
+ * Checks if `value` is an empty object, collection, map, or set.
2591
+ *
2592
+ * Objects are considered empty if they have no own enumerable string keyed
2593
+ * properties.
2594
+ *
2595
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
2596
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
2597
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
2598
+ *
2599
+ * @static
2600
+ * @memberOf _
2601
+ * @since 0.1.0
2602
+ * @category Lang
2603
+ * @param {*} value The value to check.
2604
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
2605
+ * @example
2606
+ *
2607
+ * _.isEmpty(null);
2608
+ * // => true
2609
+ *
2610
+ * _.isEmpty(true);
2611
+ * // => true
2612
+ *
2613
+ * _.isEmpty(1);
2614
+ * // => true
2615
+ *
2616
+ * _.isEmpty([1, 2, 3]);
2617
+ * // => false
2618
+ *
2619
+ * _.isEmpty({ 'a': 1 });
2620
+ * // => false
2621
+ */
2622
+ function isEmpty(value) {
2623
+ if (isArrayLike(value) &&
2624
+ (isArray(value) || isString(value) ||
2625
+ isFunction(value.splice) || isArguments(value))) {
2626
+ return !value.length;
2627
+ }
2628
+ return !nativeKeys(value).length;
2629
+ }
2630
+
2631
+ /**
2632
+ * Performs a deep comparison between two values to determine if they are
2633
+ * equivalent.
2634
+ *
2635
+ * **Note:** This method supports comparing arrays, array buffers, booleans,
2636
+ * date objects, error objects, maps, numbers, `Object` objects, regexes,
2637
+ * sets, strings, symbols, and typed arrays. `Object` objects are compared
2638
+ * by their own, not inherited, enumerable properties. Functions and DOM
2639
+ * nodes are compared by strict equality, i.e. `===`.
2640
+ *
2641
+ * @static
2642
+ * @memberOf _
2643
+ * @since 0.1.0
2644
+ * @category Lang
2645
+ * @param {*} value The value to compare.
2646
+ * @param {*} other The other value to compare.
2647
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2648
+ * @example
2649
+ *
2650
+ * var object = { 'a': 1 };
2651
+ * var other = { 'a': 1 };
2652
+ *
2653
+ * _.isEqual(object, other);
2654
+ * // => true
2655
+ *
2656
+ * object === other;
2657
+ * // => false
2658
+ */
2659
+ function isEqual(value, other) {
2660
+ return baseIsEqual(value, other);
2661
+ }
2662
+
2663
+ /**
2664
+ * Checks if `value` is a finite primitive number.
2665
+ *
2666
+ * **Note:** This method is based on
2667
+ * [`Number.isFinite`](https://mdn.io/Number/isFinite).
2668
+ *
2669
+ * @static
2670
+ * @memberOf _
2671
+ * @since 0.1.0
2672
+ * @category Lang
2673
+ * @param {*} value The value to check.
2674
+ * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
2675
+ * @example
2676
+ *
2677
+ * _.isFinite(3);
2678
+ * // => true
2679
+ *
2680
+ * _.isFinite(Number.MIN_VALUE);
2681
+ * // => true
2682
+ *
2683
+ * _.isFinite(Infinity);
2684
+ * // => false
2685
+ *
2686
+ * _.isFinite('3');
2687
+ * // => false
2688
+ */
2689
+ function isFinite(value) {
2690
+ return typeof value == 'number' && nativeIsFinite(value);
2691
+ }
2692
+
2693
+ /**
2694
+ * Checks if `value` is classified as a `Function` object.
2695
+ *
2696
+ * @static
2697
+ * @memberOf _
2698
+ * @since 0.1.0
2699
+ * @category Lang
2700
+ * @param {*} value The value to check.
2701
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
2702
+ * @example
2703
+ *
2704
+ * _.isFunction(_);
2705
+ * // => true
2706
+ *
2707
+ * _.isFunction(/abc/);
2708
+ * // => false
2709
+ */
2710
+ function isFunction(value) {
2711
+ if (!isObject(value)) {
2712
+ return false;
2713
+ }
2714
+ // The use of `Object#toString` avoids issues with the `typeof` operator
2715
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
2716
+ var tag = baseGetTag(value);
2717
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
2718
+ }
2719
+
2720
+ /**
2721
+ * Checks if `value` is a valid array-like length.
2722
+ *
2723
+ * **Note:** This method is loosely based on
2724
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2725
+ *
2726
+ * @static
2727
+ * @memberOf _
2728
+ * @since 4.0.0
2729
+ * @category Lang
2730
+ * @param {*} value The value to check.
2731
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2732
+ * @example
2733
+ *
2734
+ * _.isLength(3);
2735
+ * // => true
2736
+ *
2737
+ * _.isLength(Number.MIN_VALUE);
2738
+ * // => false
2739
+ *
2740
+ * _.isLength(Infinity);
2741
+ * // => false
2742
+ *
2743
+ * _.isLength('3');
2744
+ * // => false
2745
+ */
2746
+ function isLength(value) {
2747
+ return typeof value == 'number' &&
2748
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2749
+ }
2750
+
2751
+ /**
2752
+ * Checks if `value` is the
2753
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
2754
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2755
+ *
2756
+ * @static
2757
+ * @memberOf _
2758
+ * @since 0.1.0
2759
+ * @category Lang
2760
+ * @param {*} value The value to check.
2761
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
2762
+ * @example
2763
+ *
2764
+ * _.isObject({});
2765
+ * // => true
2766
+ *
2767
+ * _.isObject([1, 2, 3]);
2768
+ * // => true
2769
+ *
2770
+ * _.isObject(_.noop);
2771
+ * // => true
2772
+ *
2773
+ * _.isObject(null);
2774
+ * // => false
2775
+ */
2776
+ function isObject(value) {
2777
+ var type = typeof value;
2778
+ return value != null && (type == 'object' || type == 'function');
2779
+ }
2780
+
2781
+ /**
2782
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
2783
+ * and has a `typeof` result of "object".
2784
+ *
2785
+ * @static
2786
+ * @memberOf _
2787
+ * @since 4.0.0
2788
+ * @category Lang
2789
+ * @param {*} value The value to check.
2790
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2791
+ * @example
2792
+ *
2793
+ * _.isObjectLike({});
2794
+ * // => true
2795
+ *
2796
+ * _.isObjectLike([1, 2, 3]);
2797
+ * // => true
2798
+ *
2799
+ * _.isObjectLike(_.noop);
2800
+ * // => false
2801
+ *
2802
+ * _.isObjectLike(null);
2803
+ * // => false
2804
+ */
2805
+ function isObjectLike(value) {
2806
+ return value != null && typeof value == 'object';
2807
+ }
2808
+
2809
+ /**
2810
+ * Checks if `value` is `NaN`.
2811
+ *
2812
+ * **Note:** This method is based on
2813
+ * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
2814
+ * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
2815
+ * `undefined` and other non-number values.
2816
+ *
2817
+ * @static
2818
+ * @memberOf _
2819
+ * @since 0.1.0
2820
+ * @category Lang
2821
+ * @param {*} value The value to check.
2822
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
2823
+ * @example
2824
+ *
2825
+ * _.isNaN(NaN);
2826
+ * // => true
2827
+ *
2828
+ * _.isNaN(new Number(NaN));
2829
+ * // => true
2830
+ *
2831
+ * isNaN(undefined);
2832
+ * // => true
2833
+ *
2834
+ * _.isNaN(undefined);
2835
+ * // => false
2836
+ */
2837
+ function isNaN(value) {
2838
+ // An `NaN` primitive is the only value that is not equal to itself.
2839
+ // Perform the `toStringTag` check first to avoid errors with some
2840
+ // ActiveX objects in IE.
2841
+ return isNumber(value) && value != +value;
2842
+ }
2843
+
2844
+ /**
2845
+ * Checks if `value` is `null`.
2846
+ *
2847
+ * @static
2848
+ * @memberOf _
2849
+ * @since 0.1.0
2850
+ * @category Lang
2851
+ * @param {*} value The value to check.
2852
+ * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
2853
+ * @example
2854
+ *
2855
+ * _.isNull(null);
2856
+ * // => true
2857
+ *
2858
+ * _.isNull(void 0);
2859
+ * // => false
2860
+ */
2861
+ function isNull(value) {
2862
+ return value === null;
2863
+ }
2864
+
2865
+ /**
2866
+ * Checks if `value` is classified as a `Number` primitive or object.
2867
+ *
2868
+ * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
2869
+ * classified as numbers, use the `_.isFinite` method.
2870
+ *
2871
+ * @static
2872
+ * @memberOf _
2873
+ * @since 0.1.0
2874
+ * @category Lang
2875
+ * @param {*} value The value to check.
2876
+ * @returns {boolean} Returns `true` if `value` is a number, else `false`.
2877
+ * @example
2878
+ *
2879
+ * _.isNumber(3);
2880
+ * // => true
2881
+ *
2882
+ * _.isNumber(Number.MIN_VALUE);
2883
+ * // => true
2884
+ *
2885
+ * _.isNumber(Infinity);
2886
+ * // => true
2887
+ *
2888
+ * _.isNumber('3');
2889
+ * // => false
2890
+ */
2891
+ function isNumber(value) {
2892
+ return typeof value == 'number' ||
2893
+ (isObjectLike(value) && baseGetTag(value) == numberTag);
2894
+ }
2895
+
2896
+ /**
2897
+ * Checks if `value` is classified as a `RegExp` object.
2898
+ *
2899
+ * @static
2900
+ * @memberOf _
2901
+ * @since 0.1.0
2902
+ * @category Lang
2903
+ * @param {*} value The value to check.
2904
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
2905
+ * @example
2906
+ *
2907
+ * _.isRegExp(/abc/);
2908
+ * // => true
2909
+ *
2910
+ * _.isRegExp('/abc/');
2911
+ * // => false
2912
+ */
2913
+ var isRegExp = baseIsRegExp;
2914
+
2915
+ /**
2916
+ * Checks if `value` is classified as a `String` primitive or object.
2917
+ *
2918
+ * @static
2919
+ * @since 0.1.0
2920
+ * @memberOf _
2921
+ * @category Lang
2922
+ * @param {*} value The value to check.
2923
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
2924
+ * @example
2925
+ *
2926
+ * _.isString('abc');
2927
+ * // => true
2928
+ *
2929
+ * _.isString(1);
2930
+ * // => false
2931
+ */
2932
+ function isString(value) {
2933
+ return typeof value == 'string' ||
2934
+ (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
2935
+ }
2936
+
2937
+ /**
2938
+ * Checks if `value` is `undefined`.
2939
+ *
2940
+ * @static
2941
+ * @since 0.1.0
2942
+ * @memberOf _
2943
+ * @category Lang
2944
+ * @param {*} value The value to check.
2945
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
2946
+ * @example
2947
+ *
2948
+ * _.isUndefined(void 0);
2949
+ * // => true
2950
+ *
2951
+ * _.isUndefined(null);
2952
+ * // => false
2953
+ */
2954
+ function isUndefined(value) {
2955
+ return value === undefined;
2956
+ }
2957
+
2958
+ /**
2959
+ * Converts `value` to an array.
2960
+ *
2961
+ * @static
2962
+ * @since 0.1.0
2963
+ * @memberOf _
2964
+ * @category Lang
2965
+ * @param {*} value The value to convert.
2966
+ * @returns {Array} Returns the converted array.
2967
+ * @example
2968
+ *
2969
+ * _.toArray({ 'a': 1, 'b': 2 });
2970
+ * // => [1, 2]
2971
+ *
2972
+ * _.toArray('abc');
2973
+ * // => ['a', 'b', 'c']
2974
+ *
2975
+ * _.toArray(1);
2976
+ * // => []
2977
+ *
2978
+ * _.toArray(null);
2979
+ * // => []
2980
+ */
2981
+ function toArray(value) {
2982
+ if (!isArrayLike(value)) {
2983
+ return values(value);
2984
+ }
2985
+ return value.length ? copyArray(value) : [];
2986
+ }
2987
+
2988
+ /**
2989
+ * Converts `value` to an integer.
2990
+ *
2991
+ * **Note:** This method is loosely based on
2992
+ * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
2993
+ *
2994
+ * @static
2995
+ * @memberOf _
2996
+ * @since 4.0.0
2997
+ * @category Lang
2998
+ * @param {*} value The value to convert.
2999
+ * @returns {number} Returns the converted integer.
3000
+ * @example
3001
+ *
3002
+ * _.toInteger(3.2);
3003
+ * // => 3
3004
+ *
3005
+ * _.toInteger(Number.MIN_VALUE);
3006
+ * // => 0
3007
+ *
3008
+ * _.toInteger(Infinity);
3009
+ * // => 1.7976931348623157e+308
3010
+ *
3011
+ * _.toInteger('3.2');
3012
+ * // => 3
3013
+ */
3014
+ var toInteger = Number;
3015
+
3016
+ /**
3017
+ * Converts `value` to a number.
3018
+ *
3019
+ * @static
3020
+ * @memberOf _
3021
+ * @since 4.0.0
3022
+ * @category Lang
3023
+ * @param {*} value The value to process.
3024
+ * @returns {number} Returns the number.
3025
+ * @example
3026
+ *
3027
+ * _.toNumber(3.2);
3028
+ * // => 3.2
3029
+ *
3030
+ * _.toNumber(Number.MIN_VALUE);
3031
+ * // => 5e-324
3032
+ *
3033
+ * _.toNumber(Infinity);
3034
+ * // => Infinity
3035
+ *
3036
+ * _.toNumber('3.2');
3037
+ * // => 3.2
3038
+ */
3039
+ var toNumber = Number;
3040
+
3041
+ /**
3042
+ * Converts `value` to a string. An empty string is returned for `null`
3043
+ * and `undefined` values. The sign of `-0` is preserved.
3044
+ *
3045
+ * @static
3046
+ * @memberOf _
3047
+ * @since 4.0.0
3048
+ * @category Lang
3049
+ * @param {*} value The value to convert.
3050
+ * @returns {string} Returns the converted string.
3051
+ * @example
3052
+ *
3053
+ * _.toString(null);
3054
+ * // => ''
3055
+ *
3056
+ * _.toString(-0);
3057
+ * // => '-0'
3058
+ *
3059
+ * _.toString([1, 2, 3]);
3060
+ * // => '1,2,3'
3061
+ */
3062
+ function toString(value) {
3063
+ if (typeof value == 'string') {
3064
+ return value;
3065
+ }
3066
+ return value == null ? '' : (value + '');
3067
+ }
3068
+
3069
+ /*------------------------------------------------------------------------*/
3070
+
3071
+ /**
3072
+ * Assigns own enumerable string keyed properties of source objects to the
3073
+ * destination object. Source objects are applied from left to right.
3074
+ * Subsequent sources overwrite property assignments of previous sources.
3075
+ *
3076
+ * **Note:** This method mutates `object` and is loosely based on
3077
+ * [`Object.assign`](https://mdn.io/Object/assign).
3078
+ *
3079
+ * @static
3080
+ * @memberOf _
3081
+ * @since 0.10.0
3082
+ * @category Object
3083
+ * @param {Object} object The destination object.
3084
+ * @param {...Object} [sources] The source objects.
3085
+ * @returns {Object} Returns `object`.
3086
+ * @see _.assignIn
3087
+ * @example
3088
+ *
3089
+ * function Foo() {
3090
+ * this.a = 1;
3091
+ * }
3092
+ *
3093
+ * function Bar() {
3094
+ * this.c = 3;
3095
+ * }
3096
+ *
3097
+ * Foo.prototype.b = 2;
3098
+ * Bar.prototype.d = 4;
3099
+ *
3100
+ * _.assign({ 'a': 0 }, new Foo, new Bar);
3101
+ * // => { 'a': 1, 'c': 3 }
3102
+ */
3103
+ var assign = createAssigner(function(object, source) {
3104
+ copyObject(source, nativeKeys(source), object);
3105
+ });
3106
+
3107
+ /**
3108
+ * This method is like `_.assign` except that it iterates over own and
3109
+ * inherited source properties.
3110
+ *
3111
+ * **Note:** This method mutates `object`.
3112
+ *
3113
+ * @static
3114
+ * @memberOf _
3115
+ * @since 4.0.0
3116
+ * @alias extend
3117
+ * @category Object
3118
+ * @param {Object} object The destination object.
3119
+ * @param {...Object} [sources] The source objects.
3120
+ * @returns {Object} Returns `object`.
3121
+ * @see _.assign
3122
+ * @example
3123
+ *
3124
+ * function Foo() {
3125
+ * this.a = 1;
3126
+ * }
3127
+ *
3128
+ * function Bar() {
3129
+ * this.c = 3;
3130
+ * }
3131
+ *
3132
+ * Foo.prototype.b = 2;
3133
+ * Bar.prototype.d = 4;
3134
+ *
3135
+ * _.assignIn({ 'a': 0 }, new Foo, new Bar);
3136
+ * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
3137
+ */
3138
+ var assignIn = createAssigner(function(object, source) {
3139
+ copyObject(source, nativeKeysIn(source), object);
3140
+ });
3141
+
3142
+ /**
3143
+ * Creates an object that inherits from the `prototype` object. If a
3144
+ * `properties` object is given, its own enumerable string keyed properties
3145
+ * are assigned to the created object.
3146
+ *
3147
+ * @static
3148
+ * @memberOf _
3149
+ * @since 2.3.0
3150
+ * @category Object
3151
+ * @param {Object} prototype The object to inherit from.
3152
+ * @param {Object} [properties] The properties to assign to the object.
3153
+ * @returns {Object} Returns the new object.
3154
+ * @example
3155
+ *
3156
+ * function Shape() {
3157
+ * this.x = 0;
3158
+ * this.y = 0;
3159
+ * }
3160
+ *
3161
+ * function Circle() {
3162
+ * Shape.call(this);
3163
+ * }
3164
+ *
3165
+ * Circle.prototype = _.create(Shape.prototype, {
3166
+ * 'constructor': Circle
3167
+ * });
3168
+ *
3169
+ * var circle = new Circle;
3170
+ * circle instanceof Circle;
3171
+ * // => true
3172
+ *
3173
+ * circle instanceof Shape;
3174
+ * // => true
3175
+ */
3176
+ function create(prototype, properties) {
3177
+ var result = baseCreate(prototype);
3178
+ return properties == null ? result : assign(result, properties);
3179
+ }
3180
+
3181
+ /**
3182
+ * Assigns own and inherited enumerable string keyed properties of source
3183
+ * objects to the destination object for all destination properties that
3184
+ * resolve to `undefined`. Source objects are applied from left to right.
3185
+ * Once a property is set, additional values of the same property are ignored.
3186
+ *
3187
+ * **Note:** This method mutates `object`.
3188
+ *
3189
+ * @static
3190
+ * @since 0.1.0
3191
+ * @memberOf _
3192
+ * @category Object
3193
+ * @param {Object} object The destination object.
3194
+ * @param {...Object} [sources] The source objects.
3195
+ * @returns {Object} Returns `object`.
3196
+ * @see _.defaultsDeep
3197
+ * @example
3198
+ *
3199
+ * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
3200
+ * // => { 'a': 1, 'b': 2 }
3201
+ */
3202
+ var defaults = baseRest(function(object, sources) {
3203
+ object = Object(object);
3204
+
3205
+ var index = -1;
3206
+ var length = sources.length;
3207
+ var guard = length > 2 ? sources[2] : undefined;
3208
+
3209
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
3210
+ length = 1;
3211
+ }
3212
+
3213
+ while (++index < length) {
3214
+ var source = sources[index];
3215
+ var props = keysIn(source);
3216
+ var propsIndex = -1;
3217
+ var propsLength = props.length;
3218
+
3219
+ while (++propsIndex < propsLength) {
3220
+ var key = props[propsIndex];
3221
+ var value = object[key];
3222
+
3223
+ if (value === undefined ||
3224
+ (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
3225
+ object[key] = source[key];
3226
+ }
3227
+ }
3228
+ }
3229
+
3230
+ return object;
3231
+ });
3232
+
3233
+ /**
3234
+ * Checks if `path` is a direct property of `object`.
3235
+ *
3236
+ * @static
3237
+ * @since 0.1.0
3238
+ * @memberOf _
3239
+ * @category Object
3240
+ * @param {Object} object The object to query.
3241
+ * @param {Array|string} path The path to check.
3242
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
3243
+ * @example
3244
+ *
3245
+ * var object = { 'a': { 'b': 2 } };
3246
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
3247
+ *
3248
+ * _.has(object, 'a');
3249
+ * // => true
3250
+ *
3251
+ * _.has(object, 'a.b');
3252
+ * // => true
3253
+ *
3254
+ * _.has(object, ['a', 'b']);
3255
+ * // => true
3256
+ *
3257
+ * _.has(other, 'a');
3258
+ * // => false
3259
+ */
3260
+ function has(object, path) {
3261
+ return object != null && hasOwnProperty.call(object, path);
3262
+ }
3263
+
3264
+ /**
3265
+ * Creates an array of the own enumerable property names of `object`.
3266
+ *
3267
+ * **Note:** Non-object values are coerced to objects. See the
3268
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
3269
+ * for more details.
3270
+ *
3271
+ * @static
3272
+ * @since 0.1.0
3273
+ * @memberOf _
3274
+ * @category Object
3275
+ * @param {Object} object The object to query.
3276
+ * @returns {Array} Returns the array of property names.
3277
+ * @example
3278
+ *
3279
+ * function Foo() {
3280
+ * this.a = 1;
3281
+ * this.b = 2;
3282
+ * }
3283
+ *
3284
+ * Foo.prototype.c = 3;
3285
+ *
3286
+ * _.keys(new Foo);
3287
+ * // => ['a', 'b'] (iteration order is not guaranteed)
3288
+ *
3289
+ * _.keys('hi');
3290
+ * // => ['0', '1']
3291
+ */
3292
+ var keys = nativeKeys;
3293
+
3294
+ /**
3295
+ * Creates an array of the own and inherited enumerable property names of `object`.
3296
+ *
3297
+ * **Note:** Non-object values are coerced to objects.
3298
+ *
3299
+ * @static
3300
+ * @memberOf _
3301
+ * @since 3.0.0
3302
+ * @category Object
3303
+ * @param {Object} object The object to query.
3304
+ * @returns {Array} Returns the array of property names.
3305
+ * @example
3306
+ *
3307
+ * function Foo() {
3308
+ * this.a = 1;
3309
+ * this.b = 2;
3310
+ * }
3311
+ *
3312
+ * Foo.prototype.c = 3;
3313
+ *
3314
+ * _.keysIn(new Foo);
3315
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3316
+ */
3317
+ var keysIn = nativeKeysIn;
3318
+
3319
+ /**
3320
+ * Creates an object composed of the picked `object` properties.
3321
+ *
3322
+ * @static
3323
+ * @since 0.1.0
3324
+ * @memberOf _
3325
+ * @category Object
3326
+ * @param {Object} object The source object.
3327
+ * @param {...(string|string[])} [paths] The property paths to pick.
3328
+ * @returns {Object} Returns the new object.
3329
+ * @example
3330
+ *
3331
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
3332
+ *
3333
+ * _.pick(object, ['a', 'c']);
3334
+ * // => { 'a': 1, 'c': 3 }
3335
+ */
3336
+ var pick = flatRest(function(object, paths) {
3337
+ return object == null ? {} : basePick(object, paths);
3338
+ });
3339
+
3340
+ /**
3341
+ * This method is like `_.get` except that if the resolved value is a
3342
+ * function it's invoked with the `this` binding of its parent object and
3343
+ * its result is returned.
3344
+ *
3345
+ * @static
3346
+ * @since 0.1.0
3347
+ * @memberOf _
3348
+ * @category Object
3349
+ * @param {Object} object The object to query.
3350
+ * @param {Array|string} path The path of the property to resolve.
3351
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
3352
+ * @returns {*} Returns the resolved value.
3353
+ * @example
3354
+ *
3355
+ * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
3356
+ *
3357
+ * _.result(object, 'a[0].b.c1');
3358
+ * // => 3
3359
+ *
3360
+ * _.result(object, 'a[0].b.c2');
3361
+ * // => 4
3362
+ *
3363
+ * _.result(object, 'a[0].b.c3', 'default');
3364
+ * // => 'default'
3365
+ *
3366
+ * _.result(object, 'a[0].b.c3', _.constant('default'));
3367
+ * // => 'default'
3368
+ */
3369
+ function result(object, path, defaultValue) {
3370
+ var value = object == null ? undefined : object[path];
3371
+ if (value === undefined) {
3372
+ value = defaultValue;
3373
+ }
3374
+ return isFunction(value) ? value.call(object) : value;
3375
+ }
3376
+
3377
+ /**
3378
+ * Creates an array of the own enumerable string keyed property values of `object`.
3379
+ *
3380
+ * **Note:** Non-object values are coerced to objects.
3381
+ *
3382
+ * @static
3383
+ * @since 0.1.0
3384
+ * @memberOf _
3385
+ * @category Object
3386
+ * @param {Object} object The object to query.
3387
+ * @returns {Array} Returns the array of property values.
3388
+ * @example
3389
+ *
3390
+ * function Foo() {
3391
+ * this.a = 1;
3392
+ * this.b = 2;
3393
+ * }
3394
+ *
3395
+ * Foo.prototype.c = 3;
3396
+ *
3397
+ * _.values(new Foo);
3398
+ * // => [1, 2] (iteration order is not guaranteed)
3399
+ *
3400
+ * _.values('hi');
3401
+ * // => ['h', 'i']
3402
+ */
3403
+ function values(object) {
3404
+ return object == null ? [] : baseValues(object, keys(object));
3405
+ }
3406
+
3407
+ /*------------------------------------------------------------------------*/
3408
+
3409
+ /**
3410
+ * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
3411
+ * corresponding HTML entities.
3412
+ *
3413
+ * **Note:** No other characters are escaped. To escape additional
3414
+ * characters use a third-party library like [_he_](https://mths.be/he).
3415
+ *
3416
+ * Though the ">" character is escaped for symmetry, characters like
3417
+ * ">" and "/" don't need escaping in HTML and have no special meaning
3418
+ * unless they're part of a tag or unquoted attribute value. See
3419
+ * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
3420
+ * (under "semi-related fun fact") for more details.
3421
+ *
3422
+ * When working with HTML you should always
3423
+ * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
3424
+ * XSS vectors.
3425
+ *
3426
+ * @static
3427
+ * @since 0.1.0
3428
+ * @memberOf _
3429
+ * @category String
3430
+ * @param {string} [string=''] The string to escape.
3431
+ * @returns {string} Returns the escaped string.
3432
+ * @example
3433
+ *
3434
+ * _.escape('fred, barney, & pebbles');
3435
+ * // => 'fred, barney, &amp; pebbles'
3436
+ */
3437
+ function escape(string) {
3438
+ string = toString(string);
3439
+ return (string && reHasUnescapedHtml.test(string))
3440
+ ? string.replace(reUnescapedHtml, escapeHtmlChar)
3441
+ : string;
3442
+ }
3443
+
3444
+ /*------------------------------------------------------------------------*/
3445
+
3446
+ /**
3447
+ * This method returns the first argument it receives.
3448
+ *
3449
+ * @static
3450
+ * @since 0.1.0
3451
+ * @memberOf _
3452
+ * @category Util
3453
+ * @param {*} value Any value.
3454
+ * @returns {*} Returns `value`.
3455
+ * @example
3456
+ *
3457
+ * var object = { 'a': 1 };
3458
+ *
3459
+ * console.log(_.identity(object) === object);
3460
+ * // => true
3461
+ */
3462
+ function identity(value) {
3463
+ return value;
3464
+ }
3465
+
3466
+ /**
3467
+ * Creates a function that invokes `func` with the arguments of the created
3468
+ * function. If `func` is a property name, the created function returns the
3469
+ * property value for a given element. If `func` is an array or object, the
3470
+ * created function returns `true` for elements that contain the equivalent
3471
+ * source properties, otherwise it returns `false`.
3472
+ *
3473
+ * @static
3474
+ * @since 4.0.0
3475
+ * @memberOf _
3476
+ * @category Util
3477
+ * @param {*} [func=_.identity] The value to convert to a callback.
3478
+ * @returns {Function} Returns the callback.
3479
+ * @example
3480
+ *
3481
+ * var users = [
3482
+ * { 'user': 'barney', 'age': 36, 'active': true },
3483
+ * { 'user': 'fred', 'age': 40, 'active': false }
3484
+ * ];
3485
+ *
3486
+ * // The `_.matches` iteratee shorthand.
3487
+ * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
3488
+ * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
3489
+ *
3490
+ * // The `_.matchesProperty` iteratee shorthand.
3491
+ * _.filter(users, _.iteratee(['user', 'fred']));
3492
+ * // => [{ 'user': 'fred', 'age': 40 }]
3493
+ *
3494
+ * // The `_.property` iteratee shorthand.
3495
+ * _.map(users, _.iteratee('user'));
3496
+ * // => ['barney', 'fred']
3497
+ *
3498
+ * // Create custom iteratee shorthands.
3499
+ * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
3500
+ * return !_.isRegExp(func) ? iteratee(func) : function(string) {
3501
+ * return func.test(string);
3502
+ * };
3503
+ * });
3504
+ *
3505
+ * _.filter(['abc', 'def'], /ef/);
3506
+ * // => ['def']
3507
+ */
3508
+ var iteratee = baseIteratee;
3509
+
3510
+ /**
3511
+ * Creates a function that performs a partial deep comparison between a given
3512
+ * object and `source`, returning `true` if the given object has equivalent
3513
+ * property values, else `false`.
3514
+ *
3515
+ * **Note:** The created function is equivalent to `_.isMatch` with `source`
3516
+ * partially applied.
3517
+ *
3518
+ * Partial comparisons will match empty array and empty object `source`
3519
+ * values against any array or object value, respectively. See `_.isEqual`
3520
+ * for a list of supported value comparisons.
3521
+ *
3522
+ * **Note:** Multiple values can be checked by combining several matchers
3523
+ * using `_.overSome`
3524
+ *
3525
+ * @static
3526
+ * @memberOf _
3527
+ * @since 3.0.0
3528
+ * @category Util
3529
+ * @param {Object} source The object of property values to match.
3530
+ * @returns {Function} Returns the new spec function.
3531
+ * @example
3532
+ *
3533
+ * var objects = [
3534
+ * { 'a': 1, 'b': 2, 'c': 3 },
3535
+ * { 'a': 4, 'b': 5, 'c': 6 }
3536
+ * ];
3537
+ *
3538
+ * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
3539
+ * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
3540
+ *
3541
+ * // Checking for several possible values
3542
+ * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
3543
+ * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
3544
+ */
3545
+ function matches(source) {
3546
+ return baseMatches(assign({}, source));
3547
+ }
3548
+
3549
+ /**
3550
+ * Adds all own enumerable string keyed function properties of a source
3551
+ * object to the destination object. If `object` is a function, then methods
3552
+ * are added to its prototype as well.
3553
+ *
3554
+ * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
3555
+ * avoid conflicts caused by modifying the original.
3556
+ *
3557
+ * @static
3558
+ * @since 0.1.0
3559
+ * @memberOf _
3560
+ * @category Util
3561
+ * @param {Function|Object} [object=lodash] The destination object.
3562
+ * @param {Object} source The object of functions to add.
3563
+ * @param {Object} [options={}] The options object.
3564
+ * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
3565
+ * @returns {Function|Object} Returns `object`.
3566
+ * @example
3567
+ *
3568
+ * function vowels(string) {
3569
+ * return _.filter(string, function(v) {
3570
+ * return /[aeiou]/i.test(v);
3571
+ * });
3572
+ * }
3573
+ *
3574
+ * _.mixin({ 'vowels': vowels });
3575
+ * _.vowels('fred');
3576
+ * // => ['e']
3577
+ *
3578
+ * _('fred').vowels().value();
3579
+ * // => ['e']
3580
+ *
3581
+ * _.mixin({ 'vowels': vowels }, { 'chain': false });
3582
+ * _('fred').vowels();
3583
+ * // => ['e']
3584
+ */
3585
+ function mixin(object, source, options) {
3586
+ var props = keys(source),
3587
+ methodNames = baseFunctions(source, props);
3588
+
3589
+ if (options == null &&
3590
+ !(isObject(source) && (methodNames.length || !props.length))) {
3591
+ options = source;
3592
+ source = object;
3593
+ object = this;
3594
+ methodNames = baseFunctions(source, keys(source));
3595
+ }
3596
+ var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
3597
+ isFunc = isFunction(object);
3598
+
3599
+ baseEach(methodNames, function(methodName) {
3600
+ var func = source[methodName];
3601
+ object[methodName] = func;
3602
+ if (isFunc) {
3603
+ object.prototype[methodName] = function() {
3604
+ var chainAll = this.__chain__;
3605
+ if (chain || chainAll) {
3606
+ var result = object(this.__wrapped__),
3607
+ actions = result.__actions__ = copyArray(this.__actions__);
3608
+
3609
+ actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
3610
+ result.__chain__ = chainAll;
3611
+ return result;
3612
+ }
3613
+ return func.apply(object, arrayPush([this.value()], arguments));
3614
+ };
3615
+ }
3616
+ });
3617
+
3618
+ return object;
3619
+ }
3620
+
3621
+ /**
3622
+ * Reverts the `_` variable to its previous value and returns a reference to
3623
+ * the `lodash` function.
3624
+ *
3625
+ * @static
3626
+ * @since 0.1.0
3627
+ * @memberOf _
3628
+ * @category Util
3629
+ * @returns {Function} Returns the `lodash` function.
3630
+ * @example
3631
+ *
3632
+ * var lodash = _.noConflict();
3633
+ */
3634
+ function noConflict() {
3635
+ if (root._ === this) {
3636
+ root._ = oldDash;
3637
+ }
3638
+ return this;
3639
+ }
3640
+
3641
+ /**
3642
+ * This method returns `undefined`.
3643
+ *
3644
+ * @static
3645
+ * @memberOf _
3646
+ * @since 2.3.0
3647
+ * @category Util
3648
+ * @example
3649
+ *
3650
+ * _.times(2, _.noop);
3651
+ * // => [undefined, undefined]
3652
+ */
3653
+ function noop() {
3654
+ // No operation performed.
3655
+ }
3656
+
3657
+ /**
3658
+ * Generates a unique ID. If `prefix` is given, the ID is appended to it.
3659
+ *
3660
+ * @static
3661
+ * @since 0.1.0
3662
+ * @memberOf _
3663
+ * @category Util
3664
+ * @param {string} [prefix=''] The value to prefix the ID with.
3665
+ * @returns {string} Returns the unique ID.
3666
+ * @example
3667
+ *
3668
+ * _.uniqueId('contact_');
3669
+ * // => 'contact_104'
3670
+ *
3671
+ * _.uniqueId();
3672
+ * // => '105'
3673
+ */
3674
+ function uniqueId(prefix) {
3675
+ var id = ++idCounter;
3676
+ return toString(prefix) + id;
3677
+ }
3678
+
3679
+ /*------------------------------------------------------------------------*/
3680
+
3681
+ /**
3682
+ * Computes the maximum value of `array`. If `array` is empty or falsey,
3683
+ * `undefined` is returned.
3684
+ *
3685
+ * @static
3686
+ * @since 0.1.0
3687
+ * @memberOf _
3688
+ * @category Math
3689
+ * @param {Array} array The array to iterate over.
3690
+ * @returns {*} Returns the maximum value.
3691
+ * @example
3692
+ *
3693
+ * _.max([4, 2, 8, 6]);
3694
+ * // => 8
3695
+ *
3696
+ * _.max([]);
3697
+ * // => undefined
3698
+ */
3699
+ function max(array) {
3700
+ return (array && array.length)
3701
+ ? baseExtremum(array, identity, baseGt)
3702
+ : undefined;
3703
+ }
3704
+
3705
+ /**
3706
+ * Computes the minimum value of `array`. If `array` is empty or falsey,
3707
+ * `undefined` is returned.
3708
+ *
3709
+ * @static
3710
+ * @since 0.1.0
3711
+ * @memberOf _
3712
+ * @category Math
3713
+ * @param {Array} array The array to iterate over.
3714
+ * @returns {*} Returns the minimum value.
3715
+ * @example
3716
+ *
3717
+ * _.min([4, 2, 8, 6]);
3718
+ * // => 2
3719
+ *
3720
+ * _.min([]);
3721
+ * // => undefined
3722
+ */
3723
+ function min(array) {
3724
+ return (array && array.length)
3725
+ ? baseExtremum(array, identity, baseLt)
3726
+ : undefined;
3727
+ }
3728
+
3729
+ /*------------------------------------------------------------------------*/
3730
+
3731
+ // Add methods that return wrapped values in chain sequences.
3732
+ lodash.assignIn = assignIn;
3733
+ lodash.before = before;
3734
+ lodash.bind = bind;
3735
+ lodash.chain = chain;
3736
+ lodash.compact = compact;
3737
+ lodash.concat = concat;
3738
+ lodash.create = create;
3739
+ lodash.defaults = defaults;
3740
+ lodash.defer = defer;
3741
+ lodash.delay = delay;
3742
+ lodash.filter = filter;
3743
+ lodash.flatten = flatten;
3744
+ lodash.flattenDeep = flattenDeep;
3745
+ lodash.iteratee = iteratee;
3746
+ lodash.keys = keys;
3747
+ lodash.map = map;
3748
+ lodash.matches = matches;
3749
+ lodash.mixin = mixin;
3750
+ lodash.negate = negate;
3751
+ lodash.once = once;
3752
+ lodash.pick = pick;
3753
+ lodash.slice = slice;
3754
+ lodash.sortBy = sortBy;
3755
+ lodash.tap = tap;
3756
+ lodash.thru = thru;
3757
+ lodash.toArray = toArray;
3758
+ lodash.values = values;
3759
+
3760
+ // Add aliases.
3761
+ lodash.extend = assignIn;
3762
+
3763
+ // Add methods to `lodash.prototype`.
3764
+ mixin(lodash, lodash);
3765
+
3766
+ /*------------------------------------------------------------------------*/
3767
+
3768
+ // Add methods that return unwrapped values in chain sequences.
3769
+ lodash.clone = clone;
3770
+ lodash.escape = escape;
3771
+ lodash.every = every;
3772
+ lodash.find = find;
3773
+ lodash.forEach = forEach;
3774
+ lodash.has = has;
3775
+ lodash.head = head;
3776
+ lodash.identity = identity;
3777
+ lodash.indexOf = indexOf;
3778
+ lodash.isArguments = isArguments;
3779
+ lodash.isArray = isArray;
3780
+ lodash.isBoolean = isBoolean;
3781
+ lodash.isDate = isDate;
3782
+ lodash.isEmpty = isEmpty;
3783
+ lodash.isEqual = isEqual;
3784
+ lodash.isFinite = isFinite;
3785
+ lodash.isFunction = isFunction;
3786
+ lodash.isNaN = isNaN;
3787
+ lodash.isNull = isNull;
3788
+ lodash.isNumber = isNumber;
3789
+ lodash.isObject = isObject;
3790
+ lodash.isRegExp = isRegExp;
3791
+ lodash.isString = isString;
3792
+ lodash.isUndefined = isUndefined;
3793
+ lodash.last = last;
3794
+ lodash.max = max;
3795
+ lodash.min = min;
3796
+ lodash.noConflict = noConflict;
3797
+ lodash.noop = noop;
3798
+ lodash.reduce = reduce;
3799
+ lodash.result = result;
3800
+ lodash.size = size;
3801
+ lodash.some = some;
3802
+ lodash.uniqueId = uniqueId;
3803
+
3804
+ // Add aliases.
3805
+ lodash.each = forEach;
3806
+ lodash.first = head;
3807
+
3808
+ mixin(lodash, (function() {
3809
+ var source = {};
3810
+ baseForOwn(lodash, function(func, methodName) {
3811
+ if (!hasOwnProperty.call(lodash.prototype, methodName)) {
3812
+ source[methodName] = func;
3813
+ }
3814
+ });
3815
+ return source;
3816
+ }()), { 'chain': false });
3817
+
3818
+ /*------------------------------------------------------------------------*/
3819
+
3820
+ /**
3821
+ * The semantic version number.
3822
+ *
3823
+ * @static
3824
+ * @memberOf _
3825
+ * @type {string}
3826
+ */
3827
+ lodash.VERSION = VERSION;
3828
+
3829
+ // Add `Array` methods to `lodash.prototype`.
3830
+ baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
3831
+ var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],
3832
+ chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
3833
+ retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);
3834
+
3835
+ lodash.prototype[methodName] = function() {
3836
+ var args = arguments;
3837
+ if (retUnwrapped && !this.__chain__) {
3838
+ var value = this.value();
3839
+ return func.apply(isArray(value) ? value : [], args);
3840
+ }
3841
+ return this[chainName](function(value) {
3842
+ return func.apply(isArray(value) ? value : [], args);
3843
+ });
3844
+ };
3845
+ });
3846
+
3847
+ // Add chain sequence methods to the `lodash` wrapper.
3848
+ lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
3849
+
3850
+ /*--------------------------------------------------------------------------*/
3851
+
3852
+ // Some AMD build optimizers, like r.js, check for condition patterns like:
3853
+ if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
3854
+ // Expose Lodash on the global object to prevent errors when Lodash is
3855
+ // loaded by a script tag in the presence of an AMD loader.
3856
+ // See http://requirejs.org/docs/errors.html#mismatch for more details.
3857
+ // Use `_.noConflict` to remove Lodash from the global object.
3858
+ root._ = lodash;
3859
+
3860
+ // Define as an anonymous module so, through path mapping, it can be
3861
+ // referenced as the "underscore" module.
3862
+ define(function() {
3863
+ return lodash;
3864
+ });
3865
+ }
3866
+ // Check for `exports` after `define` in case a build optimizer adds it.
3867
+ else if (freeModule) {
3868
+ // Export for Node.js.
3869
+ (freeModule.exports = lodash)._ = lodash;
3870
+ // Export for CommonJS support.
3871
+ freeExports._ = lodash;
3872
+ }
3873
+ else {
3874
+ // Export to the global object.
3875
+ root._ = lodash;
3876
+ }
3877
+ }.call(this));
node_modules/lodash/core.min.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
4
+ * Build: `lodash core -o ./dist/lodash.core.js`
5
+ */
6
+ ;(function(){function n(n,t){return n.push.apply(n,t),n}function t(n,t,r,e){for(var u=n.length,o=r+(e?1:-1);e?o--:++o<u;)if(t(n[o],o,n))return o;return-1}function r(n){return function(t){return null==t?nt:t[n]}}function e(n){return function(t){return null==n?nt:n[t]}}function u(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function o(n,t){return E(t,function(t){return n[t]})}function i(n,t){return function(r){return n(t(r))}}function c(n){return n instanceof f?n:new f(n)}function f(n,t){
7
+ this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function a(n,t,r){var e=n[t];Rt.call(n,t)&&wn(e,r)&&(r!==nt||t in n)||l(n,t,r)}function l(n,t,r){n[t]=r}function p(n,t,r){if(typeof n!="function")throw new TypeError(rt);return setTimeout(function(){n.apply(nt,r)},t)}function s(n,t){var r=true;return Ut(n,function(n,e,u){return r=!!t(n,e,u)}),r}function h(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===nt?i===i&&true:r(i,c)))var c=i,f=o}return f}function v(n,t){var r=[];
8
+ return Ut(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function y(t,r,e,u,o){var i=-1,c=t.length;for(e||(e=H),o||(o=[]);++i<c;){var f=t[i];r>0&&e(f)?r>1?y(f,r-1,e,u,o):n(o,f):u||(o[o.length]=f)}return o}function g(n,t){return n&&Vt(n,t,cr)}function _(n,t){return v(t,function(t){return Tn(n[t])})}function b(n){return W(n)}function j(n,t){return n>t}function d(n){return In(n)&&b(n)==ht}function m(n,t,r,e,u){return n===t||(null==n||null==t||!In(n)&&!In(t)?n!==n&&t!==t:O(n,t,r,e,m,u))}function O(n,t,r,e,u,o){
9
+ var i=Zt(n),c=Zt(t),f=i?lt:b(n),a=c?lt:b(t);f=f==at?bt:f,a=a==at?bt:a;var l=f==bt,p=a==bt,s=f==a;o||(o=[]);var h=Lt(o,function(t){return t[0]==n}),v=Lt(o,function(n){return n[0]==t});if(h&&v)return h[1]==t;if(o.push([n,t]),o.push([t,n]),s&&!l){var y=i?J(n,t,r,e,u,o):M(n,t,f,r,e,u,o);return o.pop(),y}if(!(r&et)){var g=l&&Rt.call(n,"__wrapped__"),_=p&&Rt.call(t,"__wrapped__");if(g||_){var j=g?n.value():n,d=_?t.value():t,y=u(j,d,r,e,o);return o.pop(),y}}if(!s)return false;var y=U(n,t,r,e,u,o);return o.pop(),
10
+ y}function x(n){return In(n)&&b(n)==dt}function w(n){return typeof n=="function"?n:null==n?Hn:(typeof n=="object"?N:r)(n)}function A(n,t){return n<t}function E(n,t){var r=-1,e=An(n)?Array(n.length):[];return Ut(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function N(n){var t=Gt(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&m(n[u],r[u],et|ut)))return false}return true}}function k(n,t){return n=Object(n),gn(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}
11
+ function F(n,t){return Kt(X(n,t,Hn),n+"")}function T(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var o=Array(u);++e<u;)o[e]=n[e+t];return o}function S(n){return T(n,0,n.length)}function B(n,t){var r;return Ut(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function I(t,r){var e=t;return gn(r,function(t,r){return r.func.apply(r.thisArg,n([t],r.args))},e)}function R(n,t){if(n!==t){var r=n!==nt,e=null===n,u=n===n,o=false,i=t!==nt,c=null===t,f=t===t,a=false;if(!c&&!a&&!o&&n>t||o&&i&&f&&!c&&!a||e&&i&&f||!r&&f||!u)return 1;
12
+ if(!e&&!o&&!a&&n<t||a&&r&&u&&!e&&!o||c&&r&&u||!i&&u||!f)return-1}return 0}function $(n,t,r,e){var u=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var c=t[o],f=e?e(r[c],n[c],c,r,n):nt;f===nt&&(f=n[c]),u?l(r,c,f):a(r,c,f)}return r}function q(n){return F(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:nt;for(o=n.length>3&&typeof o=="function"?(u--,o):nt,t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function D(n,t){return function(r,e){if(null==r)return r;if(!An(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&e(i[o],o,i)!==false;);
13
+ return r}}function P(n){return function(t,r,e){for(var u=-1,o=Object(t),i=e(t),c=i.length;c--;){var f=i[n?c:++u];if(r(o[f],f,o)===false)break}return t}}function z(n){return function(){var t=arguments,r=Mt(n.prototype),e=n.apply(r,t);return Bn(e)?e:r}}function C(n){return function(t,r,e){var u=Object(t);if(!An(t)){var o=w(r,3);t=cr(t),r=function(n){return o(u[n],n,u)}}var i=n(t,r,e);return i>-1?u[o?t[i]:i]:nt}}function G(n,t,r,e){function u(){for(var t=-1,c=arguments.length,f=-1,a=e.length,l=Array(a+c),p=this&&this!==kt&&this instanceof u?i:n;++f<a;)l[f]=e[f];
14
+ for(;c--;)l[f++]=arguments[++t];return p.apply(o?r:this,l)}if(typeof n!="function")throw new TypeError(rt);var o=t&ot,i=z(n);return u}function J(n,t,r,e,u,o){var i=r&et,c=n.length,f=t.length;if(c!=f&&!(i&&f>c))return false;var a=o.get(n),l=o.get(t);if(a&&l)return a==t&&l==n;for(var p=-1,s=true,h=r&ut?[]:nt;++p<c;){var v,y=n[p],g=t[p];if(v!==nt){if(v)continue;s=false;break}if(h){if(!B(t,function(n,t){if(!un(h,t)&&(y===n||u(y,n,r,e,o)))return h.push(t)})){s=false;break}}else if(y!==g&&!u(y,g,r,e,o)){s=false;break;
15
+ }}return s}function M(n,t,r,e,u,o,i){switch(r){case st:case ht:case _t:return wn(+n,+t);case vt:return n.name==t.name&&n.message==t.message;case dt:case mt:return n==t+""}return false}function U(n,t,r,e,u,o){var i=r&et,c=cr(n),f=c.length;if(f!=cr(t).length&&!i)return false;for(var a=f;a--;){var l=c[a];if(!(i?l in t:Rt.call(t,l)))return false}var p=o.get(n),s=o.get(t);if(p&&s)return p==t&&s==n;for(var h=true,v=i;++a<f;){l=c[a];var y,g=n[l],_=t[l];if(!(y===nt?g===_||u(g,_,r,e,o):y)){h=false;break}v||(v="constructor"==l);
16
+ }if(h&&!v){var b=n.constructor,j=t.constructor;b!=j&&"constructor"in n&&"constructor"in t&&!(typeof b=="function"&&b instanceof b&&typeof j=="function"&&j instanceof j)&&(h=false)}return h}function V(n){return Kt(X(n,nt,tn),n+"")}function H(n){return Zt(n)||Yt(n)}function K(n,t){var r=typeof n;return t=null==t?ft:t,!!t&&("number"==r||"symbol"!=r&&wt.test(n))&&n>-1&&n%1==0&&n<t}function L(n,t,r){if(!Bn(r))return false;var e=typeof t;return!!("number"==e?An(r)&&K(t,r.length):"string"==e&&t in r)&&wn(r[t],n);
17
+ }function Q(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function W(n){return qt.call(n)}function X(n,t,r){return t=Jt(t===nt?n.length-1:t,0),function(){for(var e=arguments,u=-1,o=Jt(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];u=-1;for(var c=Array(t+1);++u<t;)c[u]=e[u];return c[t]=r(i),n.apply(this,c)}}function Y(n){return v(n,Boolean)}function Z(){var t=arguments.length;if(!t)return[];for(var r=Array(t-1),e=arguments[0],u=t;u--;)r[u-1]=arguments[u];return n(Zt(e)?S(e):[e],y(r,1));
18
+ }function nn(n,r,e){var u=null==n?0:n.length;if(!u)return-1;var o=null==e?0:rr(e);return o<0&&(o=Jt(u+o,0)),t(n,w(r,3),o)}function tn(n){return(null==n?0:n.length)?y(n,1):[]}function rn(n){return(null==n?0:n.length)?y(n,ct):[]}function en(n){return n&&n.length?n[0]:nt}function un(n,t,r){var e=null==n?0:n.length;r=typeof r=="number"?r<0?Jt(e+r,0):r:0;for(var u=(r||0)-1,o=t===t;++u<e;){var i=n[u];if(o?i===t:i!==i)return u}return-1}function on(n){var t=null==n?0:n.length;return t?n[t-1]:nt}function cn(n,t,r){
19
+ var e=null==n?0:n.length;return t=null==t?0:+t,r=r===nt?e:+r,e?T(n,t,r):[]}function fn(n){var t=c(n);return t.__chain__=true,t}function an(n,t){return t(n),n}function ln(n,t){return t(n)}function pn(){return I(this.__wrapped__,this.__actions__)}function sn(n,t,r){return t=r?nt:t,s(n,w(t))}function hn(n,t){return v(n,w(t))}function vn(n,t){return Ut(n,w(t))}function yn(n,t){return E(n,w(t))}function gn(n,t,r){return u(n,w(t),r,arguments.length<3,Ut)}function _n(n){return null==n?0:(n=An(n)?n:Gt(n),n.length);
20
+ }function bn(n,t,r){return t=r?nt:t,B(n,w(t))}function jn(n,t){var e=0;return t=w(t),E(E(n,function(n,r,u){return{value:n,index:e++,criteria:t(n,r,u)}}).sort(function(n,t){return R(n.criteria,t.criteria)||n.index-t.index}),r("value"))}function dn(n,t){var r;if(typeof t!="function")throw new TypeError(rt);return n=rr(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=nt),r}}function mn(n){if(typeof n!="function")throw new TypeError(rt);return function(){return!n.apply(this,arguments)};
21
+ }function On(n){return dn(2,n)}function xn(n){return Bn(n)?Zt(n)?S(n):$(n,Gt(n)):n}function wn(n,t){return n===t||n!==n&&t!==t}function An(n){return null!=n&&Sn(n.length)&&!Tn(n)}function En(n){return n===true||n===false||In(n)&&b(n)==st}function Nn(n){return An(n)&&(Zt(n)||Dn(n)||Tn(n.splice)||Yt(n))?!n.length:!Gt(n).length}function kn(n,t){return m(n,t)}function Fn(n){return typeof n=="number"&&Ct(n)}function Tn(n){if(!Bn(n))return false;var t=b(n);return t==yt||t==gt||t==pt||t==jt}function Sn(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=ft;
22
+ }function Bn(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function In(n){return null!=n&&typeof n=="object"}function Rn(n){return qn(n)&&n!=+n}function $n(n){return null===n}function qn(n){return typeof n=="number"||In(n)&&b(n)==_t}function Dn(n){return typeof n=="string"||!Zt(n)&&In(n)&&b(n)==mt}function Pn(n){return n===nt}function zn(n){return An(n)?n.length?S(n):[]:Un(n)}function Cn(n){return typeof n=="string"?n:null==n?"":n+""}function Gn(n,t){var r=Mt(n);return null==t?r:ur(r,t);
23
+ }function Jn(n,t){return null!=n&&Rt.call(n,t)}function Mn(n,t,r){var e=null==n?nt:n[t];return e===nt&&(e=r),Tn(e)?e.call(n):e}function Un(n){return null==n?[]:o(n,cr(n))}function Vn(n){return n=Cn(n),n&&xt.test(n)?n.replace(Ot,St):n}function Hn(n){return n}function Kn(n){return N(ur({},n))}function Ln(t,r,e){var u=cr(r),o=_(r,u);null!=e||Bn(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=_(r,cr(r)));var i=!(Bn(e)&&"chain"in e&&!e.chain),c=Tn(t);return Ut(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){
24
+ var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=S(this.__actions__)).push({func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}function Qn(){return kt._===this&&(kt._=Dt),this}function Wn(){}function Xn(n){var t=++$t;return Cn(n)+t}function Yn(n){return n&&n.length?h(n,Hn,j):nt}function Zn(n){return n&&n.length?h(n,Hn,A):nt}var nt,tt="4.17.20",rt="Expected a function",et=1,ut=2,ot=1,it=32,ct=1/0,ft=9007199254740991,at="[object Arguments]",lt="[object Array]",pt="[object AsyncFunction]",st="[object Boolean]",ht="[object Date]",vt="[object Error]",yt="[object Function]",gt="[object GeneratorFunction]",_t="[object Number]",bt="[object Object]",jt="[object Proxy]",dt="[object RegExp]",mt="[object String]",Ot=/[&<>"']/g,xt=RegExp(Ot.source),wt=/^(?:0|[1-9]\d*)$/,At={
25
+ "&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Et=typeof global=="object"&&global&&global.Object===Object&&global,Nt=typeof self=="object"&&self&&self.Object===Object&&self,kt=Et||Nt||Function("return this")(),Ft=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tt=Ft&&typeof module=="object"&&module&&!module.nodeType&&module,St=e(At),Bt=Array.prototype,It=Object.prototype,Rt=It.hasOwnProperty,$t=0,qt=It.toString,Dt=kt._,Pt=Object.create,zt=It.propertyIsEnumerable,Ct=kt.isFinite,Gt=i(Object.keys,Object),Jt=Math.max,Mt=function(){
26
+ function n(){}return function(t){if(!Bn(t))return{};if(Pt)return Pt(t);n.prototype=t;var r=new n;return n.prototype=nt,r}}();f.prototype=Mt(c.prototype),f.prototype.constructor=f;var Ut=D(g),Vt=P(),Ht=Wn,Kt=Hn,Lt=C(nn),Qt=F(function(n,t,r){return G(n,ot|it,t,r)}),Wt=F(function(n,t){return p(n,1,t)}),Xt=F(function(n,t,r){return p(n,er(t)||0,r)}),Yt=Ht(function(){return arguments}())?Ht:function(n){return In(n)&&Rt.call(n,"callee")&&!zt.call(n,"callee")},Zt=Array.isArray,nr=d,tr=x,rr=Number,er=Number,ur=q(function(n,t){
27
+ $(t,Gt(t),n)}),or=q(function(n,t){$(t,Q(t),n)}),ir=F(function(n,t){n=Object(n);var r=-1,e=t.length,u=e>2?t[2]:nt;for(u&&L(t[0],t[1],u)&&(e=1);++r<e;)for(var o=t[r],i=fr(o),c=-1,f=i.length;++c<f;){var a=i[c],l=n[a];(l===nt||wn(l,It[a])&&!Rt.call(n,a))&&(n[a]=o[a])}return n}),cr=Gt,fr=Q,ar=V(function(n,t){return null==n?{}:k(n,t)}),lr=w;c.assignIn=or,c.before=dn,c.bind=Qt,c.chain=fn,c.compact=Y,c.concat=Z,c.create=Gn,c.defaults=ir,c.defer=Wt,c.delay=Xt,c.filter=hn,c.flatten=tn,c.flattenDeep=rn,c.iteratee=lr,
28
+ c.keys=cr,c.map=yn,c.matches=Kn,c.mixin=Ln,c.negate=mn,c.once=On,c.pick=ar,c.slice=cn,c.sortBy=jn,c.tap=an,c.thru=ln,c.toArray=zn,c.values=Un,c.extend=or,Ln(c,c),c.clone=xn,c.escape=Vn,c.every=sn,c.find=Lt,c.forEach=vn,c.has=Jn,c.head=en,c.identity=Hn,c.indexOf=un,c.isArguments=Yt,c.isArray=Zt,c.isBoolean=En,c.isDate=nr,c.isEmpty=Nn,c.isEqual=kn,c.isFinite=Fn,c.isFunction=Tn,c.isNaN=Rn,c.isNull=$n,c.isNumber=qn,c.isObject=Bn,c.isRegExp=tr,c.isString=Dn,c.isUndefined=Pn,c.last=on,c.max=Yn,c.min=Zn,
29
+ c.noConflict=Qn,c.noop=Wn,c.reduce=gn,c.result=Mn,c.size=_n,c.some=bn,c.uniqueId=Xn,c.each=vn,c.first=en,Ln(c,function(){var n={};return g(c,function(t,r){Rt.call(c.prototype,r)||(n[r]=t)}),n}(),{chain:false}),c.VERSION=tt,Ut(["pop","join","replace","reverse","split","push","shift","sort","splice","unshift"],function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:Bt)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);c.prototype[n]=function(){var n=arguments;
30
+ if(e&&!this.__chain__){var u=this.value();return t.apply(Zt(u)?u:[],n)}return this[r](function(r){return t.apply(Zt(r)?r:[],n)})}}),c.prototype.toJSON=c.prototype.valueOf=c.prototype.value=pn,typeof define=="function"&&typeof define.amd=="object"&&define.amd?(kt._=c, define(function(){return c})):Tt?((Tt.exports=c)._=c,Ft._=c):kt._=c}).call(this);
node_modules/lodash/countBy.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssignValue = require('./_baseAssignValue'),
2
+ createAggregator = require('./_createAggregator');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /**
11
+ * Creates an object composed of keys generated from the results of running
12
+ * each element of `collection` thru `iteratee`. The corresponding value of
13
+ * each key is the number of times the key was returned by `iteratee`. The
14
+ * iteratee is invoked with one argument: (value).
15
+ *
16
+ * @static
17
+ * @memberOf _
18
+ * @since 0.5.0
19
+ * @category Collection
20
+ * @param {Array|Object} collection The collection to iterate over.
21
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
22
+ * @returns {Object} Returns the composed aggregate object.
23
+ * @example
24
+ *
25
+ * _.countBy([6.1, 4.2, 6.3], Math.floor);
26
+ * // => { '4': 1, '6': 2 }
27
+ *
28
+ * // The `_.property` iteratee shorthand.
29
+ * _.countBy(['one', 'two', 'three'], 'length');
30
+ * // => { '3': 2, '5': 1 }
31
+ */
32
+ var countBy = createAggregator(function(result, value, key) {
33
+ if (hasOwnProperty.call(result, key)) {
34
+ ++result[key];
35
+ } else {
36
+ baseAssignValue(result, key, 1);
37
+ }
38
+ });
39
+
40
+ module.exports = countBy;
node_modules/lodash/create.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssign = require('./_baseAssign'),
2
+ baseCreate = require('./_baseCreate');
3
+
4
+ /**
5
+ * Creates an object that inherits from the `prototype` object. If a
6
+ * `properties` object is given, its own enumerable string keyed properties
7
+ * are assigned to the created object.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 2.3.0
12
+ * @category Object
13
+ * @param {Object} prototype The object to inherit from.
14
+ * @param {Object} [properties] The properties to assign to the object.
15
+ * @returns {Object} Returns the new object.
16
+ * @example
17
+ *
18
+ * function Shape() {
19
+ * this.x = 0;
20
+ * this.y = 0;
21
+ * }
22
+ *
23
+ * function Circle() {
24
+ * Shape.call(this);
25
+ * }
26
+ *
27
+ * Circle.prototype = _.create(Shape.prototype, {
28
+ * 'constructor': Circle
29
+ * });
30
+ *
31
+ * var circle = new Circle;
32
+ * circle instanceof Circle;
33
+ * // => true
34
+ *
35
+ * circle instanceof Shape;
36
+ * // => true
37
+ */
38
+ function create(prototype, properties) {
39
+ var result = baseCreate(prototype);
40
+ return properties == null ? result : baseAssign(result, properties);
41
+ }
42
+
43
+ module.exports = create;
node_modules/lodash/curry.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createWrap = require('./_createWrap');
2
+
3
+ /** Used to compose bitmasks for function metadata. */
4
+ var WRAP_CURRY_FLAG = 8;
5
+
6
+ /**
7
+ * Creates a function that accepts arguments of `func` and either invokes
8
+ * `func` returning its result, if at least `arity` number of arguments have
9
+ * been provided, or returns a function that accepts the remaining `func`
10
+ * arguments, and so on. The arity of `func` may be specified if `func.length`
11
+ * is not sufficient.
12
+ *
13
+ * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
14
+ * may be used as a placeholder for provided arguments.
15
+ *
16
+ * **Note:** This method doesn't set the "length" property of curried functions.
17
+ *
18
+ * @static
19
+ * @memberOf _
20
+ * @since 2.0.0
21
+ * @category Function
22
+ * @param {Function} func The function to curry.
23
+ * @param {number} [arity=func.length] The arity of `func`.
24
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
25
+ * @returns {Function} Returns the new curried function.
26
+ * @example
27
+ *
28
+ * var abc = function(a, b, c) {
29
+ * return [a, b, c];
30
+ * };
31
+ *
32
+ * var curried = _.curry(abc);
33
+ *
34
+ * curried(1)(2)(3);
35
+ * // => [1, 2, 3]
36
+ *
37
+ * curried(1, 2)(3);
38
+ * // => [1, 2, 3]
39
+ *
40
+ * curried(1, 2, 3);
41
+ * // => [1, 2, 3]
42
+ *
43
+ * // Curried with placeholders.
44
+ * curried(1)(_, 3)(2);
45
+ * // => [1, 2, 3]
46
+ */
47
+ function curry(func, arity, guard) {
48
+ arity = guard ? undefined : arity;
49
+ var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
50
+ result.placeholder = curry.placeholder;
51
+ return result;
52
+ }
53
+
54
+ // Assign default placeholders.
55
+ curry.placeholder = {};
56
+
57
+ module.exports = curry;
node_modules/lodash/curryRight.js ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createWrap = require('./_createWrap');
2
+
3
+ /** Used to compose bitmasks for function metadata. */
4
+ var WRAP_CURRY_RIGHT_FLAG = 16;
5
+
6
+ /**
7
+ * This method is like `_.curry` except that arguments are applied to `func`
8
+ * in the manner of `_.partialRight` instead of `_.partial`.
9
+ *
10
+ * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
11
+ * builds, may be used as a placeholder for provided arguments.
12
+ *
13
+ * **Note:** This method doesn't set the "length" property of curried functions.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 3.0.0
18
+ * @category Function
19
+ * @param {Function} func The function to curry.
20
+ * @param {number} [arity=func.length] The arity of `func`.
21
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
22
+ * @returns {Function} Returns the new curried function.
23
+ * @example
24
+ *
25
+ * var abc = function(a, b, c) {
26
+ * return [a, b, c];
27
+ * };
28
+ *
29
+ * var curried = _.curryRight(abc);
30
+ *
31
+ * curried(3)(2)(1);
32
+ * // => [1, 2, 3]
33
+ *
34
+ * curried(2, 3)(1);
35
+ * // => [1, 2, 3]
36
+ *
37
+ * curried(1, 2, 3);
38
+ * // => [1, 2, 3]
39
+ *
40
+ * // Curried with placeholders.
41
+ * curried(3)(1, _)(2);
42
+ * // => [1, 2, 3]
43
+ */
44
+ function curryRight(func, arity, guard) {
45
+ arity = guard ? undefined : arity;
46
+ var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
47
+ result.placeholder = curryRight.placeholder;
48
+ return result;
49
+ }
50
+
51
+ // Assign default placeholders.
52
+ curryRight.placeholder = {};
53
+
54
+ module.exports = curryRight;
node_modules/lodash/date.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ module.exports = {
2
+ 'now': require('./now')
3
+ };
node_modules/lodash/debounce.js ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isObject = require('./isObject'),
2
+ now = require('./now'),
3
+ toNumber = require('./toNumber');
4
+
5
+ /** Error message constants. */
6
+ var FUNC_ERROR_TEXT = 'Expected a function';
7
+
8
+ /* Built-in method references for those with the same name as other `lodash` methods. */
9
+ var nativeMax = Math.max,
10
+ nativeMin = Math.min;
11
+
12
+ /**
13
+ * Creates a debounced function that delays invoking `func` until after `wait`
14
+ * milliseconds have elapsed since the last time the debounced function was
15
+ * invoked. The debounced function comes with a `cancel` method to cancel
16
+ * delayed `func` invocations and a `flush` method to immediately invoke them.
17
+ * Provide `options` to indicate whether `func` should be invoked on the
18
+ * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
19
+ * with the last arguments provided to the debounced function. Subsequent
20
+ * calls to the debounced function return the result of the last `func`
21
+ * invocation.
22
+ *
23
+ * **Note:** If `leading` and `trailing` options are `true`, `func` is
24
+ * invoked on the trailing edge of the timeout only if the debounced function
25
+ * is invoked more than once during the `wait` timeout.
26
+ *
27
+ * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
28
+ * until to the next tick, similar to `setTimeout` with a timeout of `0`.
29
+ *
30
+ * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
31
+ * for details over the differences between `_.debounce` and `_.throttle`.
32
+ *
33
+ * @static
34
+ * @memberOf _
35
+ * @since 0.1.0
36
+ * @category Function
37
+ * @param {Function} func The function to debounce.
38
+ * @param {number} [wait=0] The number of milliseconds to delay.
39
+ * @param {Object} [options={}] The options object.
40
+ * @param {boolean} [options.leading=false]
41
+ * Specify invoking on the leading edge of the timeout.
42
+ * @param {number} [options.maxWait]
43
+ * The maximum time `func` is allowed to be delayed before it's invoked.
44
+ * @param {boolean} [options.trailing=true]
45
+ * Specify invoking on the trailing edge of the timeout.
46
+ * @returns {Function} Returns the new debounced function.
47
+ * @example
48
+ *
49
+ * // Avoid costly calculations while the window size is in flux.
50
+ * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
51
+ *
52
+ * // Invoke `sendMail` when clicked, debouncing subsequent calls.
53
+ * jQuery(element).on('click', _.debounce(sendMail, 300, {
54
+ * 'leading': true,
55
+ * 'trailing': false
56
+ * }));
57
+ *
58
+ * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
59
+ * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
60
+ * var source = new EventSource('/stream');
61
+ * jQuery(source).on('message', debounced);
62
+ *
63
+ * // Cancel the trailing debounced invocation.
64
+ * jQuery(window).on('popstate', debounced.cancel);
65
+ */
66
+ function debounce(func, wait, options) {
67
+ var lastArgs,
68
+ lastThis,
69
+ maxWait,
70
+ result,
71
+ timerId,
72
+ lastCallTime,
73
+ lastInvokeTime = 0,
74
+ leading = false,
75
+ maxing = false,
76
+ trailing = true;
77
+
78
+ if (typeof func != 'function') {
79
+ throw new TypeError(FUNC_ERROR_TEXT);
80
+ }
81
+ wait = toNumber(wait) || 0;
82
+ if (isObject(options)) {
83
+ leading = !!options.leading;
84
+ maxing = 'maxWait' in options;
85
+ maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
86
+ trailing = 'trailing' in options ? !!options.trailing : trailing;
87
+ }
88
+
89
+ function invokeFunc(time) {
90
+ var args = lastArgs,
91
+ thisArg = lastThis;
92
+
93
+ lastArgs = lastThis = undefined;
94
+ lastInvokeTime = time;
95
+ result = func.apply(thisArg, args);
96
+ return result;
97
+ }
98
+
99
+ function leadingEdge(time) {
100
+ // Reset any `maxWait` timer.
101
+ lastInvokeTime = time;
102
+ // Start the timer for the trailing edge.
103
+ timerId = setTimeout(timerExpired, wait);
104
+ // Invoke the leading edge.
105
+ return leading ? invokeFunc(time) : result;
106
+ }
107
+
108
+ function remainingWait(time) {
109
+ var timeSinceLastCall = time - lastCallTime,
110
+ timeSinceLastInvoke = time - lastInvokeTime,
111
+ timeWaiting = wait - timeSinceLastCall;
112
+
113
+ return maxing
114
+ ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
115
+ : timeWaiting;
116
+ }
117
+
118
+ function shouldInvoke(time) {
119
+ var timeSinceLastCall = time - lastCallTime,
120
+ timeSinceLastInvoke = time - lastInvokeTime;
121
+
122
+ // Either this is the first call, activity has stopped and we're at the
123
+ // trailing edge, the system time has gone backwards and we're treating
124
+ // it as the trailing edge, or we've hit the `maxWait` limit.
125
+ return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
126
+ (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
127
+ }
128
+
129
+ function timerExpired() {
130
+ var time = now();
131
+ if (shouldInvoke(time)) {
132
+ return trailingEdge(time);
133
+ }
134
+ // Restart the timer.
135
+ timerId = setTimeout(timerExpired, remainingWait(time));
136
+ }
137
+
138
+ function trailingEdge(time) {
139
+ timerId = undefined;
140
+
141
+ // Only invoke if we have `lastArgs` which means `func` has been
142
+ // debounced at least once.
143
+ if (trailing && lastArgs) {
144
+ return invokeFunc(time);
145
+ }
146
+ lastArgs = lastThis = undefined;
147
+ return result;
148
+ }
149
+
150
+ function cancel() {
151
+ if (timerId !== undefined) {
152
+ clearTimeout(timerId);
153
+ }
154
+ lastInvokeTime = 0;
155
+ lastArgs = lastCallTime = lastThis = timerId = undefined;
156
+ }
157
+
158
+ function flush() {
159
+ return timerId === undefined ? result : trailingEdge(now());
160
+ }
161
+
162
+ function debounced() {
163
+ var time = now(),
164
+ isInvoking = shouldInvoke(time);
165
+
166
+ lastArgs = arguments;
167
+ lastThis = this;
168
+ lastCallTime = time;
169
+
170
+ if (isInvoking) {
171
+ if (timerId === undefined) {
172
+ return leadingEdge(lastCallTime);
173
+ }
174
+ if (maxing) {
175
+ // Handle invocations in a tight loop.
176
+ clearTimeout(timerId);
177
+ timerId = setTimeout(timerExpired, wait);
178
+ return invokeFunc(lastCallTime);
179
+ }
180
+ }
181
+ if (timerId === undefined) {
182
+ timerId = setTimeout(timerExpired, wait);
183
+ }
184
+ return result;
185
+ }
186
+ debounced.cancel = cancel;
187
+ debounced.flush = flush;
188
+ return debounced;
189
+ }
190
+
191
+ module.exports = debounce;
node_modules/lodash/deburr.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var deburrLetter = require('./_deburrLetter'),
2
+ toString = require('./toString');
3
+
4
+ /** Used to match Latin Unicode letters (excluding mathematical operators). */
5
+ var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
6
+
7
+ /** Used to compose unicode character classes. */
8
+ var rsComboMarksRange = '\\u0300-\\u036f',
9
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
10
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
11
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
12
+
13
+ /** Used to compose unicode capture groups. */
14
+ var rsCombo = '[' + rsComboRange + ']';
15
+
16
+ /**
17
+ * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
18
+ * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
19
+ */
20
+ var reComboMark = RegExp(rsCombo, 'g');
21
+
22
+ /**
23
+ * Deburrs `string` by converting
24
+ * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
25
+ * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
26
+ * letters to basic Latin letters and removing
27
+ * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
28
+ *
29
+ * @static
30
+ * @memberOf _
31
+ * @since 3.0.0
32
+ * @category String
33
+ * @param {string} [string=''] The string to deburr.
34
+ * @returns {string} Returns the deburred string.
35
+ * @example
36
+ *
37
+ * _.deburr('déjà vu');
38
+ * // => 'deja vu'
39
+ */
40
+ function deburr(string) {
41
+ string = toString(string);
42
+ return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
43
+ }
44
+
45
+ module.exports = deburr;
node_modules/lodash/defaultTo.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks `value` to determine whether a default value should be returned in
3
+ * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
4
+ * or `undefined`.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 4.14.0
9
+ * @category Util
10
+ * @param {*} value The value to check.
11
+ * @param {*} defaultValue The default value.
12
+ * @returns {*} Returns the resolved value.
13
+ * @example
14
+ *
15
+ * _.defaultTo(1, 10);
16
+ * // => 1
17
+ *
18
+ * _.defaultTo(undefined, 10);
19
+ * // => 10
20
+ */
21
+ function defaultTo(value, defaultValue) {
22
+ return (value == null || value !== value) ? defaultValue : value;
23
+ }
24
+
25
+ module.exports = defaultTo;
node_modules/lodash/defaults.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseRest = require('./_baseRest'),
2
+ eq = require('./eq'),
3
+ isIterateeCall = require('./_isIterateeCall'),
4
+ keysIn = require('./keysIn');
5
+
6
+ /** Used for built-in method references. */
7
+ var objectProto = Object.prototype;
8
+
9
+ /** Used to check objects for own properties. */
10
+ var hasOwnProperty = objectProto.hasOwnProperty;
11
+
12
+ /**
13
+ * Assigns own and inherited enumerable string keyed properties of source
14
+ * objects to the destination object for all destination properties that
15
+ * resolve to `undefined`. Source objects are applied from left to right.
16
+ * Once a property is set, additional values of the same property are ignored.
17
+ *
18
+ * **Note:** This method mutates `object`.
19
+ *
20
+ * @static
21
+ * @since 0.1.0
22
+ * @memberOf _
23
+ * @category Object
24
+ * @param {Object} object The destination object.
25
+ * @param {...Object} [sources] The source objects.
26
+ * @returns {Object} Returns `object`.
27
+ * @see _.defaultsDeep
28
+ * @example
29
+ *
30
+ * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
31
+ * // => { 'a': 1, 'b': 2 }
32
+ */
33
+ var defaults = baseRest(function(object, sources) {
34
+ object = Object(object);
35
+
36
+ var index = -1;
37
+ var length = sources.length;
38
+ var guard = length > 2 ? sources[2] : undefined;
39
+
40
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
41
+ length = 1;
42
+ }
43
+
44
+ while (++index < length) {
45
+ var source = sources[index];
46
+ var props = keysIn(source);
47
+ var propsIndex = -1;
48
+ var propsLength = props.length;
49
+
50
+ while (++propsIndex < propsLength) {
51
+ var key = props[propsIndex];
52
+ var value = object[key];
53
+
54
+ if (value === undefined ||
55
+ (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
56
+ object[key] = source[key];
57
+ }
58
+ }
59
+ }
60
+
61
+ return object;
62
+ });
63
+
64
+ module.exports = defaults;
node_modules/lodash/defaultsDeep.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ baseRest = require('./_baseRest'),
3
+ customDefaultsMerge = require('./_customDefaultsMerge'),
4
+ mergeWith = require('./mergeWith');
5
+
6
+ /**
7
+ * This method is like `_.defaults` except that it recursively assigns
8
+ * default properties.
9
+ *
10
+ * **Note:** This method mutates `object`.
11
+ *
12
+ * @static
13
+ * @memberOf _
14
+ * @since 3.10.0
15
+ * @category Object
16
+ * @param {Object} object The destination object.
17
+ * @param {...Object} [sources] The source objects.
18
+ * @returns {Object} Returns `object`.
19
+ * @see _.defaults
20
+ * @example
21
+ *
22
+ * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
23
+ * // => { 'a': { 'b': 2, 'c': 3 } }
24
+ */
25
+ var defaultsDeep = baseRest(function(args) {
26
+ args.push(undefined, customDefaultsMerge);
27
+ return apply(mergeWith, undefined, args);
28
+ });
29
+
30
+ module.exports = defaultsDeep;
node_modules/lodash/defer.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDelay = require('./_baseDelay'),
2
+ baseRest = require('./_baseRest');
3
+
4
+ /**
5
+ * Defers invoking the `func` until the current call stack has cleared. Any
6
+ * additional arguments are provided to `func` when it's invoked.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 0.1.0
11
+ * @category Function
12
+ * @param {Function} func The function to defer.
13
+ * @param {...*} [args] The arguments to invoke `func` with.
14
+ * @returns {number} Returns the timer id.
15
+ * @example
16
+ *
17
+ * _.defer(function(text) {
18
+ * console.log(text);
19
+ * }, 'deferred');
20
+ * // => Logs 'deferred' after one millisecond.
21
+ */
22
+ var defer = baseRest(function(func, args) {
23
+ return baseDelay(func, 1, args);
24
+ });
25
+
26
+ module.exports = defer;
node_modules/lodash/delay.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDelay = require('./_baseDelay'),
2
+ baseRest = require('./_baseRest'),
3
+ toNumber = require('./toNumber');
4
+
5
+ /**
6
+ * Invokes `func` after `wait` milliseconds. Any additional arguments are
7
+ * provided to `func` when it's invoked.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 0.1.0
12
+ * @category Function
13
+ * @param {Function} func The function to delay.
14
+ * @param {number} wait The number of milliseconds to delay invocation.
15
+ * @param {...*} [args] The arguments to invoke `func` with.
16
+ * @returns {number} Returns the timer id.
17
+ * @example
18
+ *
19
+ * _.delay(function(text) {
20
+ * console.log(text);
21
+ * }, 1000, 'later');
22
+ * // => Logs 'later' after one second.
23
+ */
24
+ var delay = baseRest(function(func, wait, args) {
25
+ return baseDelay(func, toNumber(wait) || 0, args);
26
+ });
27
+
28
+ module.exports = delay;
node_modules/lodash/difference.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDifference = require('./_baseDifference'),
2
+ baseFlatten = require('./_baseFlatten'),
3
+ baseRest = require('./_baseRest'),
4
+ isArrayLikeObject = require('./isArrayLikeObject');
5
+
6
+ /**
7
+ * Creates an array of `array` values not included in the other given arrays
8
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
9
+ * for equality comparisons. The order and references of result values are
10
+ * determined by the first array.
11
+ *
12
+ * **Note:** Unlike `_.pullAll`, this method returns a new array.
13
+ *
14
+ * @static
15
+ * @memberOf _
16
+ * @since 0.1.0
17
+ * @category Array
18
+ * @param {Array} array The array to inspect.
19
+ * @param {...Array} [values] The values to exclude.
20
+ * @returns {Array} Returns the new array of filtered values.
21
+ * @see _.without, _.xor
22
+ * @example
23
+ *
24
+ * _.difference([2, 1], [2, 3]);
25
+ * // => [1]
26
+ */
27
+ var difference = baseRest(function(array, values) {
28
+ return isArrayLikeObject(array)
29
+ ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
30
+ : [];
31
+ });
32
+
33
+ module.exports = difference;
node_modules/lodash/differenceBy.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDifference = require('./_baseDifference'),
2
+ baseFlatten = require('./_baseFlatten'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ baseRest = require('./_baseRest'),
5
+ isArrayLikeObject = require('./isArrayLikeObject'),
6
+ last = require('./last');
7
+
8
+ /**
9
+ * This method is like `_.difference` except that it accepts `iteratee` which
10
+ * is invoked for each element of `array` and `values` to generate the criterion
11
+ * by which they're compared. The order and references of result values are
12
+ * determined by the first array. The iteratee is invoked with one argument:
13
+ * (value).
14
+ *
15
+ * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
16
+ *
17
+ * @static
18
+ * @memberOf _
19
+ * @since 4.0.0
20
+ * @category Array
21
+ * @param {Array} array The array to inspect.
22
+ * @param {...Array} [values] The values to exclude.
23
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
24
+ * @returns {Array} Returns the new array of filtered values.
25
+ * @example
26
+ *
27
+ * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
28
+ * // => [1.2]
29
+ *
30
+ * // The `_.property` iteratee shorthand.
31
+ * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
32
+ * // => [{ 'x': 2 }]
33
+ */
34
+ var differenceBy = baseRest(function(array, values) {
35
+ var iteratee = last(values);
36
+ if (isArrayLikeObject(iteratee)) {
37
+ iteratee = undefined;
38
+ }
39
+ return isArrayLikeObject(array)
40
+ ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))
41
+ : [];
42
+ });
43
+
44
+ module.exports = differenceBy;
node_modules/lodash/differenceWith.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseDifference = require('./_baseDifference'),
2
+ baseFlatten = require('./_baseFlatten'),
3
+ baseRest = require('./_baseRest'),
4
+ isArrayLikeObject = require('./isArrayLikeObject'),
5
+ last = require('./last');
6
+
7
+ /**
8
+ * This method is like `_.difference` except that it accepts `comparator`
9
+ * which is invoked to compare elements of `array` to `values`. The order and
10
+ * references of result values are determined by the first array. The comparator
11
+ * is invoked with two arguments: (arrVal, othVal).
12
+ *
13
+ * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 4.0.0
18
+ * @category Array
19
+ * @param {Array} array The array to inspect.
20
+ * @param {...Array} [values] The values to exclude.
21
+ * @param {Function} [comparator] The comparator invoked per element.
22
+ * @returns {Array} Returns the new array of filtered values.
23
+ * @example
24
+ *
25
+ * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
26
+ *
27
+ * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
28
+ * // => [{ 'x': 2, 'y': 1 }]
29
+ */
30
+ var differenceWith = baseRest(function(array, values) {
31
+ var comparator = last(values);
32
+ if (isArrayLikeObject(comparator)) {
33
+ comparator = undefined;
34
+ }
35
+ return isArrayLikeObject(array)
36
+ ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
37
+ : [];
38
+ });
39
+
40
+ module.exports = differenceWith;
node_modules/lodash/divide.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createMathOperation = require('./_createMathOperation');
2
+
3
+ /**
4
+ * Divide two numbers.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 4.7.0
9
+ * @category Math
10
+ * @param {number} dividend The first number in a division.
11
+ * @param {number} divisor The second number in a division.
12
+ * @returns {number} Returns the quotient.
13
+ * @example
14
+ *
15
+ * _.divide(6, 4);
16
+ * // => 1.5
17
+ */
18
+ var divide = createMathOperation(function(dividend, divisor) {
19
+ return dividend / divisor;
20
+ }, 1);
21
+
22
+ module.exports = divide;
node_modules/lodash/drop.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice'),
2
+ toInteger = require('./toInteger');
3
+
4
+ /**
5
+ * Creates a slice of `array` with `n` elements dropped from the beginning.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 0.5.0
10
+ * @category Array
11
+ * @param {Array} array The array to query.
12
+ * @param {number} [n=1] The number of elements to drop.
13
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
14
+ * @returns {Array} Returns the slice of `array`.
15
+ * @example
16
+ *
17
+ * _.drop([1, 2, 3]);
18
+ * // => [2, 3]
19
+ *
20
+ * _.drop([1, 2, 3], 2);
21
+ * // => [3]
22
+ *
23
+ * _.drop([1, 2, 3], 5);
24
+ * // => []
25
+ *
26
+ * _.drop([1, 2, 3], 0);
27
+ * // => [1, 2, 3]
28
+ */
29
+ function drop(array, n, guard) {
30
+ var length = array == null ? 0 : array.length;
31
+ if (!length) {
32
+ return [];
33
+ }
34
+ n = (guard || n === undefined) ? 1 : toInteger(n);
35
+ return baseSlice(array, n < 0 ? 0 : n, length);
36
+ }
37
+
38
+ module.exports = drop;
node_modules/lodash/dropRight.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice'),
2
+ toInteger = require('./toInteger');
3
+
4
+ /**
5
+ * Creates a slice of `array` with `n` elements dropped from the end.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 3.0.0
10
+ * @category Array
11
+ * @param {Array} array The array to query.
12
+ * @param {number} [n=1] The number of elements to drop.
13
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
14
+ * @returns {Array} Returns the slice of `array`.
15
+ * @example
16
+ *
17
+ * _.dropRight([1, 2, 3]);
18
+ * // => [1, 2]
19
+ *
20
+ * _.dropRight([1, 2, 3], 2);
21
+ * // => [1]
22
+ *
23
+ * _.dropRight([1, 2, 3], 5);
24
+ * // => []
25
+ *
26
+ * _.dropRight([1, 2, 3], 0);
27
+ * // => [1, 2, 3]
28
+ */
29
+ function dropRight(array, n, guard) {
30
+ var length = array == null ? 0 : array.length;
31
+ if (!length) {
32
+ return [];
33
+ }
34
+ n = (guard || n === undefined) ? 1 : toInteger(n);
35
+ n = length - n;
36
+ return baseSlice(array, 0, n < 0 ? 0 : n);
37
+ }
38
+
39
+ module.exports = dropRight;
node_modules/lodash/dropRightWhile.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIteratee = require('./_baseIteratee'),
2
+ baseWhile = require('./_baseWhile');
3
+
4
+ /**
5
+ * Creates a slice of `array` excluding elements dropped from the end.
6
+ * Elements are dropped until `predicate` returns falsey. The predicate is
7
+ * invoked with three arguments: (value, index, array).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 3.0.0
12
+ * @category Array
13
+ * @param {Array} array The array to query.
14
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
15
+ * @returns {Array} Returns the slice of `array`.
16
+ * @example
17
+ *
18
+ * var users = [
19
+ * { 'user': 'barney', 'active': true },
20
+ * { 'user': 'fred', 'active': false },
21
+ * { 'user': 'pebbles', 'active': false }
22
+ * ];
23
+ *
24
+ * _.dropRightWhile(users, function(o) { return !o.active; });
25
+ * // => objects for ['barney']
26
+ *
27
+ * // The `_.matches` iteratee shorthand.
28
+ * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
29
+ * // => objects for ['barney', 'fred']
30
+ *
31
+ * // The `_.matchesProperty` iteratee shorthand.
32
+ * _.dropRightWhile(users, ['active', false]);
33
+ * // => objects for ['barney']
34
+ *
35
+ * // The `_.property` iteratee shorthand.
36
+ * _.dropRightWhile(users, 'active');
37
+ * // => objects for ['barney', 'fred', 'pebbles']
38
+ */
39
+ function dropRightWhile(array, predicate) {
40
+ return (array && array.length)
41
+ ? baseWhile(array, baseIteratee(predicate, 3), true, true)
42
+ : [];
43
+ }
44
+
45
+ module.exports = dropRightWhile;
node_modules/lodash/dropWhile.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIteratee = require('./_baseIteratee'),
2
+ baseWhile = require('./_baseWhile');
3
+
4
+ /**
5
+ * Creates a slice of `array` excluding elements dropped from the beginning.
6
+ * Elements are dropped until `predicate` returns falsey. The predicate is
7
+ * invoked with three arguments: (value, index, array).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 3.0.0
12
+ * @category Array
13
+ * @param {Array} array The array to query.
14
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
15
+ * @returns {Array} Returns the slice of `array`.
16
+ * @example
17
+ *
18
+ * var users = [
19
+ * { 'user': 'barney', 'active': false },
20
+ * { 'user': 'fred', 'active': false },
21
+ * { 'user': 'pebbles', 'active': true }
22
+ * ];
23
+ *
24
+ * _.dropWhile(users, function(o) { return !o.active; });
25
+ * // => objects for ['pebbles']
26
+ *
27
+ * // The `_.matches` iteratee shorthand.
28
+ * _.dropWhile(users, { 'user': 'barney', 'active': false });
29
+ * // => objects for ['fred', 'pebbles']
30
+ *
31
+ * // The `_.matchesProperty` iteratee shorthand.
32
+ * _.dropWhile(users, ['active', false]);
33
+ * // => objects for ['pebbles']
34
+ *
35
+ * // The `_.property` iteratee shorthand.
36
+ * _.dropWhile(users, 'active');
37
+ * // => objects for ['barney', 'fred', 'pebbles']
38
+ */
39
+ function dropWhile(array, predicate) {
40
+ return (array && array.length)
41
+ ? baseWhile(array, baseIteratee(predicate, 3), true)
42
+ : [];
43
+ }
44
+
45
+ module.exports = dropWhile;
node_modules/lodash/each.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./forEach');
node_modules/lodash/eachRight.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./forEachRight');
node_modules/lodash/endsWith.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClamp = require('./_baseClamp'),
2
+ baseToString = require('./_baseToString'),
3
+ toInteger = require('./toInteger'),
4
+ toString = require('./toString');
5
+
6
+ /**
7
+ * Checks if `string` ends with the given target string.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 3.0.0
12
+ * @category String
13
+ * @param {string} [string=''] The string to inspect.
14
+ * @param {string} [target] The string to search for.
15
+ * @param {number} [position=string.length] The position to search up to.
16
+ * @returns {boolean} Returns `true` if `string` ends with `target`,
17
+ * else `false`.
18
+ * @example
19
+ *
20
+ * _.endsWith('abc', 'c');
21
+ * // => true
22
+ *
23
+ * _.endsWith('abc', 'b');
24
+ * // => false
25
+ *
26
+ * _.endsWith('abc', 'b', 2);
27
+ * // => true
28
+ */
29
+ function endsWith(string, target, position) {
30
+ string = toString(string);
31
+ target = baseToString(target);
32
+
33
+ var length = string.length;
34
+ position = position === undefined
35
+ ? length
36
+ : baseClamp(toInteger(position), 0, length);
37
+
38
+ var end = position;
39
+ position -= target.length;
40
+ return position >= 0 && string.slice(position, end) == target;
41
+ }
42
+
43
+ module.exports = endsWith;
node_modules/lodash/entries.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./toPairs');
node_modules/lodash/entriesIn.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./toPairsIn');
node_modules/lodash/eq.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Performs a
3
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
4
+ * comparison between two values to determine if they are equivalent.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 4.0.0
9
+ * @category Lang
10
+ * @param {*} value The value to compare.
11
+ * @param {*} other The other value to compare.
12
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
13
+ * @example
14
+ *
15
+ * var object = { 'a': 1 };
16
+ * var other = { 'a': 1 };
17
+ *
18
+ * _.eq(object, object);
19
+ * // => true
20
+ *
21
+ * _.eq(object, other);
22
+ * // => false
23
+ *
24
+ * _.eq('a', 'a');
25
+ * // => true
26
+ *
27
+ * _.eq('a', Object('a'));
28
+ * // => false
29
+ *
30
+ * _.eq(NaN, NaN);
31
+ * // => true
32
+ */
33
+ function eq(value, other) {
34
+ return value === other || (value !== value && other !== other);
35
+ }
36
+
37
+ module.exports = eq;
node_modules/lodash/escape.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var escapeHtmlChar = require('./_escapeHtmlChar'),
2
+ toString = require('./toString');
3
+
4
+ /** Used to match HTML entities and HTML characters. */
5
+ var reUnescapedHtml = /[&<>"']/g,
6
+ reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
7
+
8
+ /**
9
+ * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
10
+ * corresponding HTML entities.
11
+ *
12
+ * **Note:** No other characters are escaped. To escape additional
13
+ * characters use a third-party library like [_he_](https://mths.be/he).
14
+ *
15
+ * Though the ">" character is escaped for symmetry, characters like
16
+ * ">" and "/" don't need escaping in HTML and have no special meaning
17
+ * unless they're part of a tag or unquoted attribute value. See
18
+ * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
19
+ * (under "semi-related fun fact") for more details.
20
+ *
21
+ * When working with HTML you should always
22
+ * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
23
+ * XSS vectors.
24
+ *
25
+ * @static
26
+ * @since 0.1.0
27
+ * @memberOf _
28
+ * @category String
29
+ * @param {string} [string=''] The string to escape.
30
+ * @returns {string} Returns the escaped string.
31
+ * @example
32
+ *
33
+ * _.escape('fred, barney, & pebbles');
34
+ * // => 'fred, barney, &amp; pebbles'
35
+ */
36
+ function escape(string) {
37
+ string = toString(string);
38
+ return (string && reHasUnescapedHtml.test(string))
39
+ ? string.replace(reUnescapedHtml, escapeHtmlChar)
40
+ : string;
41
+ }
42
+
43
+ module.exports = escape;
node_modules/lodash/escapeRegExp.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toString = require('./toString');
2
+
3
+ /**
4
+ * Used to match `RegExp`
5
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
6
+ */
7
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
8
+ reHasRegExpChar = RegExp(reRegExpChar.source);
9
+
10
+ /**
11
+ * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
12
+ * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
13
+ *
14
+ * @static
15
+ * @memberOf _
16
+ * @since 3.0.0
17
+ * @category String
18
+ * @param {string} [string=''] The string to escape.
19
+ * @returns {string} Returns the escaped string.
20
+ * @example
21
+ *
22
+ * _.escapeRegExp('[lodash](https://lodash.com/)');
23
+ * // => '\[lodash\]\(https://lodash\.com/\)'
24
+ */
25
+ function escapeRegExp(string) {
26
+ string = toString(string);
27
+ return (string && reHasRegExpChar.test(string))
28
+ ? string.replace(reRegExpChar, '\\$&')
29
+ : string;
30
+ }
31
+
32
+ module.exports = escapeRegExp;
node_modules/lodash/every.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayEvery = require('./_arrayEvery'),
2
+ baseEvery = require('./_baseEvery'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ isArray = require('./isArray'),
5
+ isIterateeCall = require('./_isIterateeCall');
6
+
7
+ /**
8
+ * Checks if `predicate` returns truthy for **all** elements of `collection`.
9
+ * Iteration is stopped once `predicate` returns falsey. The predicate is
10
+ * invoked with three arguments: (value, index|key, collection).
11
+ *
12
+ * **Note:** This method returns `true` for
13
+ * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
14
+ * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
15
+ * elements of empty collections.
16
+ *
17
+ * @static
18
+ * @memberOf _
19
+ * @since 0.1.0
20
+ * @category Collection
21
+ * @param {Array|Object} collection The collection to iterate over.
22
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
23
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
24
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
25
+ * else `false`.
26
+ * @example
27
+ *
28
+ * _.every([true, 1, null, 'yes'], Boolean);
29
+ * // => false
30
+ *
31
+ * var users = [
32
+ * { 'user': 'barney', 'age': 36, 'active': false },
33
+ * { 'user': 'fred', 'age': 40, 'active': false }
34
+ * ];
35
+ *
36
+ * // The `_.matches` iteratee shorthand.
37
+ * _.every(users, { 'user': 'barney', 'active': false });
38
+ * // => false
39
+ *
40
+ * // The `_.matchesProperty` iteratee shorthand.
41
+ * _.every(users, ['active', false]);
42
+ * // => true
43
+ *
44
+ * // The `_.property` iteratee shorthand.
45
+ * _.every(users, 'active');
46
+ * // => false
47
+ */
48
+ function every(collection, predicate, guard) {
49
+ var func = isArray(collection) ? arrayEvery : baseEvery;
50
+ if (guard && isIterateeCall(collection, predicate, guard)) {
51
+ predicate = undefined;
52
+ }
53
+ return func(collection, baseIteratee(predicate, 3));
54
+ }
55
+
56
+ module.exports = every;
node_modules/lodash/extend.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignIn');
node_modules/lodash/extendWith.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignInWith');
node_modules/lodash/fill.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFill = require('./_baseFill'),
2
+ isIterateeCall = require('./_isIterateeCall');
3
+
4
+ /**
5
+ * Fills elements of `array` with `value` from `start` up to, but not
6
+ * including, `end`.
7
+ *
8
+ * **Note:** This method mutates `array`.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 3.2.0
13
+ * @category Array
14
+ * @param {Array} array The array to fill.
15
+ * @param {*} value The value to fill `array` with.
16
+ * @param {number} [start=0] The start position.
17
+ * @param {number} [end=array.length] The end position.
18
+ * @returns {Array} Returns `array`.
19
+ * @example
20
+ *
21
+ * var array = [1, 2, 3];
22
+ *
23
+ * _.fill(array, 'a');
24
+ * console.log(array);
25
+ * // => ['a', 'a', 'a']
26
+ *
27
+ * _.fill(Array(3), 2);
28
+ * // => [2, 2, 2]
29
+ *
30
+ * _.fill([4, 6, 8, 10], '*', 1, 3);
31
+ * // => [4, '*', '*', 10]
32
+ */
33
+ function fill(array, value, start, end) {
34
+ var length = array == null ? 0 : array.length;
35
+ if (!length) {
36
+ return [];
37
+ }
38
+ if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
39
+ start = 0;
40
+ end = length;
41
+ }
42
+ return baseFill(array, value, start, end);
43
+ }
44
+
45
+ module.exports = fill;
node_modules/lodash/filter.js ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayFilter = require('./_arrayFilter'),
2
+ baseFilter = require('./_baseFilter'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ isArray = require('./isArray');
5
+
6
+ /**
7
+ * Iterates over elements of `collection`, returning an array of all elements
8
+ * `predicate` returns truthy for. The predicate is invoked with three
9
+ * arguments: (value, index|key, collection).
10
+ *
11
+ * **Note:** Unlike `_.remove`, this method returns a new array.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 0.1.0
16
+ * @category Collection
17
+ * @param {Array|Object} collection The collection to iterate over.
18
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
19
+ * @returns {Array} Returns the new filtered array.
20
+ * @see _.reject
21
+ * @example
22
+ *
23
+ * var users = [
24
+ * { 'user': 'barney', 'age': 36, 'active': true },
25
+ * { 'user': 'fred', 'age': 40, 'active': false }
26
+ * ];
27
+ *
28
+ * _.filter(users, function(o) { return !o.active; });
29
+ * // => objects for ['fred']
30
+ *
31
+ * // The `_.matches` iteratee shorthand.
32
+ * _.filter(users, { 'age': 36, 'active': true });
33
+ * // => objects for ['barney']
34
+ *
35
+ * // The `_.matchesProperty` iteratee shorthand.
36
+ * _.filter(users, ['active', false]);
37
+ * // => objects for ['fred']
38
+ *
39
+ * // The `_.property` iteratee shorthand.
40
+ * _.filter(users, 'active');
41
+ * // => objects for ['barney']
42
+ *
43
+ * // Combining several predicates using `_.overEvery` or `_.overSome`.
44
+ * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
45
+ * // => objects for ['fred', 'barney']
46
+ */
47
+ function filter(collection, predicate) {
48
+ var func = isArray(collection) ? arrayFilter : baseFilter;
49
+ return func(collection, baseIteratee(predicate, 3));
50
+ }
51
+
52
+ module.exports = filter;
node_modules/lodash/find.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createFind = require('./_createFind'),
2
+ findIndex = require('./findIndex');
3
+
4
+ /**
5
+ * Iterates over elements of `collection`, returning the first element
6
+ * `predicate` returns truthy for. The predicate is invoked with three
7
+ * arguments: (value, index|key, collection).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 0.1.0
12
+ * @category Collection
13
+ * @param {Array|Object} collection The collection to inspect.
14
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
15
+ * @param {number} [fromIndex=0] The index to search from.
16
+ * @returns {*} Returns the matched element, else `undefined`.
17
+ * @example
18
+ *
19
+ * var users = [
20
+ * { 'user': 'barney', 'age': 36, 'active': true },
21
+ * { 'user': 'fred', 'age': 40, 'active': false },
22
+ * { 'user': 'pebbles', 'age': 1, 'active': true }
23
+ * ];
24
+ *
25
+ * _.find(users, function(o) { return o.age < 40; });
26
+ * // => object for 'barney'
27
+ *
28
+ * // The `_.matches` iteratee shorthand.
29
+ * _.find(users, { 'age': 1, 'active': true });
30
+ * // => object for 'pebbles'
31
+ *
32
+ * // The `_.matchesProperty` iteratee shorthand.
33
+ * _.find(users, ['active', false]);
34
+ * // => object for 'fred'
35
+ *
36
+ * // The `_.property` iteratee shorthand.
37
+ * _.find(users, 'active');
38
+ * // => object for 'barney'
39
+ */
40
+ var find = createFind(findIndex);
41
+
42
+ module.exports = find;
node_modules/lodash/findIndex.js ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindIndex = require('./_baseFindIndex'),
2
+ baseIteratee = require('./_baseIteratee'),
3
+ toInteger = require('./toInteger');
4
+
5
+ /* Built-in method references for those with the same name as other `lodash` methods. */
6
+ var nativeMax = Math.max;
7
+
8
+ /**
9
+ * This method is like `_.find` except that it returns the index of the first
10
+ * element `predicate` returns truthy for instead of the element itself.
11
+ *
12
+ * @static
13
+ * @memberOf _
14
+ * @since 1.1.0
15
+ * @category Array
16
+ * @param {Array} array The array to inspect.
17
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
18
+ * @param {number} [fromIndex=0] The index to search from.
19
+ * @returns {number} Returns the index of the found element, else `-1`.
20
+ * @example
21
+ *
22
+ * var users = [
23
+ * { 'user': 'barney', 'active': false },
24
+ * { 'user': 'fred', 'active': false },
25
+ * { 'user': 'pebbles', 'active': true }
26
+ * ];
27
+ *
28
+ * _.findIndex(users, function(o) { return o.user == 'barney'; });
29
+ * // => 0
30
+ *
31
+ * // The `_.matches` iteratee shorthand.
32
+ * _.findIndex(users, { 'user': 'fred', 'active': false });
33
+ * // => 1
34
+ *
35
+ * // The `_.matchesProperty` iteratee shorthand.
36
+ * _.findIndex(users, ['active', false]);
37
+ * // => 0
38
+ *
39
+ * // The `_.property` iteratee shorthand.
40
+ * _.findIndex(users, 'active');
41
+ * // => 2
42
+ */
43
+ function findIndex(array, predicate, fromIndex) {
44
+ var length = array == null ? 0 : array.length;
45
+ if (!length) {
46
+ return -1;
47
+ }
48
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
49
+ if (index < 0) {
50
+ index = nativeMax(length + index, 0);
51
+ }
52
+ return baseFindIndex(array, baseIteratee(predicate, 3), index);
53
+ }
54
+
55
+ module.exports = findIndex;
node_modules/lodash/findKey.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindKey = require('./_baseFindKey'),
2
+ baseForOwn = require('./_baseForOwn'),
3
+ baseIteratee = require('./_baseIteratee');
4
+
5
+ /**
6
+ * This method is like `_.find` except that it returns the key of the first
7
+ * element `predicate` returns truthy for instead of the element itself.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 1.1.0
12
+ * @category Object
13
+ * @param {Object} object The object to inspect.
14
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
15
+ * @returns {string|undefined} Returns the key of the matched element,
16
+ * else `undefined`.
17
+ * @example
18
+ *
19
+ * var users = {
20
+ * 'barney': { 'age': 36, 'active': true },
21
+ * 'fred': { 'age': 40, 'active': false },
22
+ * 'pebbles': { 'age': 1, 'active': true }
23
+ * };
24
+ *
25
+ * _.findKey(users, function(o) { return o.age < 40; });
26
+ * // => 'barney' (iteration order is not guaranteed)
27
+ *
28
+ * // The `_.matches` iteratee shorthand.
29
+ * _.findKey(users, { 'age': 1, 'active': true });
30
+ * // => 'pebbles'
31
+ *
32
+ * // The `_.matchesProperty` iteratee shorthand.
33
+ * _.findKey(users, ['active', false]);
34
+ * // => 'fred'
35
+ *
36
+ * // The `_.property` iteratee shorthand.
37
+ * _.findKey(users, 'active');
38
+ * // => 'barney'
39
+ */
40
+ function findKey(object, predicate) {
41
+ return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
42
+ }
43
+
44
+ module.exports = findKey;
node_modules/lodash/findLast.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createFind = require('./_createFind'),
2
+ findLastIndex = require('./findLastIndex');
3
+
4
+ /**
5
+ * This method is like `_.find` except that it iterates over elements of
6
+ * `collection` from right to left.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 2.0.0
11
+ * @category Collection
12
+ * @param {Array|Object} collection The collection to inspect.
13
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
14
+ * @param {number} [fromIndex=collection.length-1] The index to search from.
15
+ * @returns {*} Returns the matched element, else `undefined`.
16
+ * @example
17
+ *
18
+ * _.findLast([1, 2, 3, 4], function(n) {
19
+ * return n % 2 == 1;
20
+ * });
21
+ * // => 3
22
+ */
23
+ var findLast = createFind(findLastIndex);
24
+
25
+ module.exports = findLast;
node_modules/lodash/findLastIndex.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindIndex = require('./_baseFindIndex'),
2
+ baseIteratee = require('./_baseIteratee'),
3
+ toInteger = require('./toInteger');
4
+
5
+ /* Built-in method references for those with the same name as other `lodash` methods. */
6
+ var nativeMax = Math.max,
7
+ nativeMin = Math.min;
8
+
9
+ /**
10
+ * This method is like `_.findIndex` except that it iterates over elements
11
+ * of `collection` from right to left.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 2.0.0
16
+ * @category Array
17
+ * @param {Array} array The array to inspect.
18
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
19
+ * @param {number} [fromIndex=array.length-1] The index to search from.
20
+ * @returns {number} Returns the index of the found element, else `-1`.
21
+ * @example
22
+ *
23
+ * var users = [
24
+ * { 'user': 'barney', 'active': true },
25
+ * { 'user': 'fred', 'active': false },
26
+ * { 'user': 'pebbles', 'active': false }
27
+ * ];
28
+ *
29
+ * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
30
+ * // => 2
31
+ *
32
+ * // The `_.matches` iteratee shorthand.
33
+ * _.findLastIndex(users, { 'user': 'barney', 'active': true });
34
+ * // => 0
35
+ *
36
+ * // The `_.matchesProperty` iteratee shorthand.
37
+ * _.findLastIndex(users, ['active', false]);
38
+ * // => 2
39
+ *
40
+ * // The `_.property` iteratee shorthand.
41
+ * _.findLastIndex(users, 'active');
42
+ * // => 0
43
+ */
44
+ function findLastIndex(array, predicate, fromIndex) {
45
+ var length = array == null ? 0 : array.length;
46
+ if (!length) {
47
+ return -1;
48
+ }
49
+ var index = length - 1;
50
+ if (fromIndex !== undefined) {
51
+ index = toInteger(fromIndex);
52
+ index = fromIndex < 0
53
+ ? nativeMax(length + index, 0)
54
+ : nativeMin(index, length - 1);
55
+ }
56
+ return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
57
+ }
58
+
59
+ module.exports = findLastIndex;
node_modules/lodash/findLastKey.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindKey = require('./_baseFindKey'),
2
+ baseForOwnRight = require('./_baseForOwnRight'),
3
+ baseIteratee = require('./_baseIteratee');
4
+
5
+ /**
6
+ * This method is like `_.findKey` except that it iterates over elements of
7
+ * a collection in the opposite order.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 2.0.0
12
+ * @category Object
13
+ * @param {Object} object The object to inspect.
14
+ * @param {Function} [predicate=_.identity] The function invoked per iteration.
15
+ * @returns {string|undefined} Returns the key of the matched element,
16
+ * else `undefined`.
17
+ * @example
18
+ *
19
+ * var users = {
20
+ * 'barney': { 'age': 36, 'active': true },
21
+ * 'fred': { 'age': 40, 'active': false },
22
+ * 'pebbles': { 'age': 1, 'active': true }
23
+ * };
24
+ *
25
+ * _.findLastKey(users, function(o) { return o.age < 40; });
26
+ * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
27
+ *
28
+ * // The `_.matches` iteratee shorthand.
29
+ * _.findLastKey(users, { 'age': 36, 'active': true });
30
+ * // => 'barney'
31
+ *
32
+ * // The `_.matchesProperty` iteratee shorthand.
33
+ * _.findLastKey(users, ['active', false]);
34
+ * // => 'fred'
35
+ *
36
+ * // The `_.property` iteratee shorthand.
37
+ * _.findLastKey(users, 'active');
38
+ * // => 'pebbles'
39
+ */
40
+ function findLastKey(object, predicate) {
41
+ return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);
42
+ }
43
+
44
+ module.exports = findLastKey;
node_modules/lodash/first.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./head');
node_modules/lodash/flatMap.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten'),
2
+ map = require('./map');
3
+
4
+ /**
5
+ * Creates a flattened array of values by running each element in `collection`
6
+ * thru `iteratee` and flattening the mapped results. The iteratee is invoked
7
+ * with three arguments: (value, index|key, collection).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.0.0
12
+ * @category Collection
13
+ * @param {Array|Object} collection The collection to iterate over.
14
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15
+ * @returns {Array} Returns the new flattened array.
16
+ * @example
17
+ *
18
+ * function duplicate(n) {
19
+ * return [n, n];
20
+ * }
21
+ *
22
+ * _.flatMap([1, 2], duplicate);
23
+ * // => [1, 1, 2, 2]
24
+ */
25
+ function flatMap(collection, iteratee) {
26
+ return baseFlatten(map(collection, iteratee), 1);
27
+ }
28
+
29
+ module.exports = flatMap;
node_modules/lodash/flatMapDeep.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten'),
2
+ map = require('./map');
3
+
4
+ /** Used as references for various `Number` constants. */
5
+ var INFINITY = 1 / 0;
6
+
7
+ /**
8
+ * This method is like `_.flatMap` except that it recursively flattens the
9
+ * mapped results.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.7.0
14
+ * @category Collection
15
+ * @param {Array|Object} collection The collection to iterate over.
16
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
17
+ * @returns {Array} Returns the new flattened array.
18
+ * @example
19
+ *
20
+ * function duplicate(n) {
21
+ * return [[[n, n]]];
22
+ * }
23
+ *
24
+ * _.flatMapDeep([1, 2], duplicate);
25
+ * // => [1, 1, 2, 2]
26
+ */
27
+ function flatMapDeep(collection, iteratee) {
28
+ return baseFlatten(map(collection, iteratee), INFINITY);
29
+ }
30
+
31
+ module.exports = flatMapDeep;
node_modules/lodash/flatMapDepth.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten'),
2
+ map = require('./map'),
3
+ toInteger = require('./toInteger');
4
+
5
+ /**
6
+ * This method is like `_.flatMap` except that it recursively flattens the
7
+ * mapped results up to `depth` times.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.7.0
12
+ * @category Collection
13
+ * @param {Array|Object} collection The collection to iterate over.
14
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15
+ * @param {number} [depth=1] The maximum recursion depth.
16
+ * @returns {Array} Returns the new flattened array.
17
+ * @example
18
+ *
19
+ * function duplicate(n) {
20
+ * return [[[n, n]]];
21
+ * }
22
+ *
23
+ * _.flatMapDepth([1, 2], duplicate, 2);
24
+ * // => [[1, 1], [2, 2]]
25
+ */
26
+ function flatMapDepth(collection, iteratee, depth) {
27
+ depth = depth === undefined ? 1 : toInteger(depth);
28
+ return baseFlatten(map(collection, iteratee), depth);
29
+ }
30
+
31
+ module.exports = flatMapDepth;
node_modules/lodash/flatten.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten');
2
+
3
+ /**
4
+ * Flattens `array` a single level deep.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 0.1.0
9
+ * @category Array
10
+ * @param {Array} array The array to flatten.
11
+ * @returns {Array} Returns the new flattened array.
12
+ * @example
13
+ *
14
+ * _.flatten([1, [2, [3, [4]], 5]]);
15
+ * // => [1, 2, [3, [4]], 5]
16
+ */
17
+ function flatten(array) {
18
+ var length = array == null ? 0 : array.length;
19
+ return length ? baseFlatten(array, 1) : [];
20
+ }
21
+
22
+ module.exports = flatten;
node_modules/lodash/flattenDeep.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten');
2
+
3
+ /** Used as references for various `Number` constants. */
4
+ var INFINITY = 1 / 0;
5
+
6
+ /**
7
+ * Recursively flattens `array`.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 3.0.0
12
+ * @category Array
13
+ * @param {Array} array The array to flatten.
14
+ * @returns {Array} Returns the new flattened array.
15
+ * @example
16
+ *
17
+ * _.flattenDeep([1, [2, [3, [4]], 5]]);
18
+ * // => [1, 2, 3, 4, 5]
19
+ */
20
+ function flattenDeep(array) {
21
+ var length = array == null ? 0 : array.length;
22
+ return length ? baseFlatten(array, INFINITY) : [];
23
+ }
24
+
25
+ module.exports = flattenDeep;
node_modules/lodash/flattenDepth.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFlatten = require('./_baseFlatten'),
2
+ toInteger = require('./toInteger');
3
+
4
+ /**
5
+ * Recursively flatten `array` up to `depth` times.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 4.4.0
10
+ * @category Array
11
+ * @param {Array} array The array to flatten.
12
+ * @param {number} [depth=1] The maximum recursion depth.
13
+ * @returns {Array} Returns the new flattened array.
14
+ * @example
15
+ *
16
+ * var array = [1, [2, [3, [4]], 5]];
17
+ *
18
+ * _.flattenDepth(array, 1);
19
+ * // => [1, 2, [3, [4]], 5]
20
+ *
21
+ * _.flattenDepth(array, 2);
22
+ * // => [1, 2, 3, [4], 5]
23
+ */
24
+ function flattenDepth(array, depth) {
25
+ var length = array == null ? 0 : array.length;
26
+ if (!length) {
27
+ return [];
28
+ }
29
+ depth = depth === undefined ? 1 : toInteger(depth);
30
+ return baseFlatten(array, depth);
31
+ }
32
+
33
+ module.exports = flattenDepth;
node_modules/lodash/flip.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createWrap = require('./_createWrap');
2
+
3
+ /** Used to compose bitmasks for function metadata. */
4
+ var WRAP_FLIP_FLAG = 512;
5
+
6
+ /**
7
+ * Creates a function that invokes `func` with arguments reversed.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.0.0
12
+ * @category Function
13
+ * @param {Function} func The function to flip arguments for.
14
+ * @returns {Function} Returns the new flipped function.
15
+ * @example
16
+ *
17
+ * var flipped = _.flip(function() {
18
+ * return _.toArray(arguments);
19
+ * });
20
+ *
21
+ * flipped('a', 'b', 'c', 'd');
22
+ * // => ['d', 'c', 'b', 'a']
23
+ */
24
+ function flip(func) {
25
+ return createWrap(func, WRAP_FLIP_FLAG);
26
+ }
27
+
28
+ module.exports = flip;
node_modules/lodash/floor.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createRound = require('./_createRound');
2
+
3
+ /**
4
+ * Computes `number` rounded down to `precision`.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 3.10.0
9
+ * @category Math
10
+ * @param {number} number The number to round down.
11
+ * @param {number} [precision=0] The precision to round down to.
12
+ * @returns {number} Returns the rounded down number.
13
+ * @example
14
+ *
15
+ * _.floor(4.006);
16
+ * // => 4
17
+ *
18
+ * _.floor(0.046, 2);
19
+ * // => 0.04
20
+ *
21
+ * _.floor(4060, -2);
22
+ * // => 4000
23
+ */
24
+ var floor = createRound('floor');
25
+
26
+ module.exports = floor;
node_modules/lodash/flow.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createFlow = require('./_createFlow');
2
+
3
+ /**
4
+ * Creates a function that returns the result of invoking the given functions
5
+ * with the `this` binding of the created function, where each successive
6
+ * invocation is supplied the return value of the previous.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 3.0.0
11
+ * @category Util
12
+ * @param {...(Function|Function[])} [funcs] The functions to invoke.
13
+ * @returns {Function} Returns the new composite function.
14
+ * @see _.flowRight
15
+ * @example
16
+ *
17
+ * function square(n) {
18
+ * return n * n;
19
+ * }
20
+ *
21
+ * var addSquare = _.flow([_.add, square]);
22
+ * addSquare(1, 2);
23
+ * // => 9
24
+ */
25
+ var flow = createFlow();
26
+
27
+ module.exports = flow;
node_modules/lodash/flowRight.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createFlow = require('./_createFlow');
2
+
3
+ /**
4
+ * This method is like `_.flow` except that it creates a function that
5
+ * invokes the given functions from right to left.
6
+ *
7
+ * @static
8
+ * @since 3.0.0
9
+ * @memberOf _
10
+ * @category Util
11
+ * @param {...(Function|Function[])} [funcs] The functions to invoke.
12
+ * @returns {Function} Returns the new composite function.
13
+ * @see _.flow
14
+ * @example
15
+ *
16
+ * function square(n) {
17
+ * return n * n;
18
+ * }
19
+ *
20
+ * var addSquare = _.flowRight([square, _.add]);
21
+ * addSquare(1, 2);
22
+ * // => 9
23
+ */
24
+ var flowRight = createFlow(true);
25
+
26
+ module.exports = flowRight;
node_modules/lodash/forEach.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayEach = require('./_arrayEach'),
2
+ baseEach = require('./_baseEach'),
3
+ castFunction = require('./_castFunction'),
4
+ isArray = require('./isArray');
5
+
6
+ /**
7
+ * Iterates over elements of `collection` and invokes `iteratee` for each element.
8
+ * The iteratee is invoked with three arguments: (value, index|key, collection).
9
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
10
+ *
11
+ * **Note:** As with other "Collections" methods, objects with a "length"
12
+ * property are iterated like arrays. To avoid this behavior use `_.forIn`
13
+ * or `_.forOwn` for object iteration.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 0.1.0
18
+ * @alias each
19
+ * @category Collection
20
+ * @param {Array|Object} collection The collection to iterate over.
21
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
22
+ * @returns {Array|Object} Returns `collection`.
23
+ * @see _.forEachRight
24
+ * @example
25
+ *
26
+ * _.forEach([1, 2], function(value) {
27
+ * console.log(value);
28
+ * });
29
+ * // => Logs `1` then `2`.
30
+ *
31
+ * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
32
+ * console.log(key);
33
+ * });
34
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
35
+ */
36
+ function forEach(collection, iteratee) {
37
+ var func = isArray(collection) ? arrayEach : baseEach;
38
+ return func(collection, castFunction(iteratee));
39
+ }
40
+
41
+ module.exports = forEach;
node_modules/lodash/forEachRight.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayEachRight = require('./_arrayEachRight'),
2
+ baseEachRight = require('./_baseEachRight'),
3
+ castFunction = require('./_castFunction'),
4
+ isArray = require('./isArray');
5
+
6
+ /**
7
+ * This method is like `_.forEach` except that it iterates over elements of
8
+ * `collection` from right to left.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 2.0.0
13
+ * @alias eachRight
14
+ * @category Collection
15
+ * @param {Array|Object} collection The collection to iterate over.
16
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
17
+ * @returns {Array|Object} Returns `collection`.
18
+ * @see _.forEach
19
+ * @example
20
+ *
21
+ * _.forEachRight([1, 2], function(value) {
22
+ * console.log(value);
23
+ * });
24
+ * // => Logs `2` then `1`.
25
+ */
26
+ function forEachRight(collection, iteratee) {
27
+ var func = isArray(collection) ? arrayEachRight : baseEachRight;
28
+ return func(collection, castFunction(iteratee));
29
+ }
30
+
31
+ module.exports = forEachRight;
node_modules/lodash/forIn.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFor = require('./_baseFor'),
2
+ castFunction = require('./_castFunction'),
3
+ keysIn = require('./keysIn');
4
+
5
+ /**
6
+ * Iterates over own and inherited enumerable string keyed properties of an
7
+ * object and invokes `iteratee` for each property. The iteratee is invoked
8
+ * with three arguments: (value, key, object). Iteratee functions may exit
9
+ * iteration early by explicitly returning `false`.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 0.3.0
14
+ * @category Object
15
+ * @param {Object} object The object to iterate over.
16
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
17
+ * @returns {Object} Returns `object`.
18
+ * @see _.forInRight
19
+ * @example
20
+ *
21
+ * function Foo() {
22
+ * this.a = 1;
23
+ * this.b = 2;
24
+ * }
25
+ *
26
+ * Foo.prototype.c = 3;
27
+ *
28
+ * _.forIn(new Foo, function(value, key) {
29
+ * console.log(key);
30
+ * });
31
+ * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
32
+ */
33
+ function forIn(object, iteratee) {
34
+ return object == null
35
+ ? object
36
+ : baseFor(object, castFunction(iteratee), keysIn);
37
+ }
38
+
39
+ module.exports = forIn;
node_modules/lodash/forInRight.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForRight = require('./_baseForRight'),
2
+ castFunction = require('./_castFunction'),
3
+ keysIn = require('./keysIn');
4
+
5
+ /**
6
+ * This method is like `_.forIn` except that it iterates over properties of
7
+ * `object` in the opposite order.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 2.0.0
12
+ * @category Object
13
+ * @param {Object} object The object to iterate over.
14
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15
+ * @returns {Object} Returns `object`.
16
+ * @see _.forIn
17
+ * @example
18
+ *
19
+ * function Foo() {
20
+ * this.a = 1;
21
+ * this.b = 2;
22
+ * }
23
+ *
24
+ * Foo.prototype.c = 3;
25
+ *
26
+ * _.forInRight(new Foo, function(value, key) {
27
+ * console.log(key);
28
+ * });
29
+ * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
30
+ */
31
+ function forInRight(object, iteratee) {
32
+ return object == null
33
+ ? object
34
+ : baseForRight(object, castFunction(iteratee), keysIn);
35
+ }
36
+
37
+ module.exports = forInRight;
node_modules/lodash/forOwn.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForOwn = require('./_baseForOwn'),
2
+ castFunction = require('./_castFunction');
3
+
4
+ /**
5
+ * Iterates over own enumerable string keyed properties of an object and
6
+ * invokes `iteratee` for each property. The iteratee is invoked with three
7
+ * arguments: (value, key, object). Iteratee functions may exit iteration
8
+ * early by explicitly returning `false`.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 0.3.0
13
+ * @category Object
14
+ * @param {Object} object The object to iterate over.
15
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16
+ * @returns {Object} Returns `object`.
17
+ * @see _.forOwnRight
18
+ * @example
19
+ *
20
+ * function Foo() {
21
+ * this.a = 1;
22
+ * this.b = 2;
23
+ * }
24
+ *
25
+ * Foo.prototype.c = 3;
26
+ *
27
+ * _.forOwn(new Foo, function(value, key) {
28
+ * console.log(key);
29
+ * });
30
+ * // => Logs 'a' then 'b' (iteration order is not guaranteed).
31
+ */
32
+ function forOwn(object, iteratee) {
33
+ return object && baseForOwn(object, castFunction(iteratee));
34
+ }
35
+
36
+ module.exports = forOwn;
node_modules/lodash/forOwnRight.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseForOwnRight = require('./_baseForOwnRight'),
2
+ castFunction = require('./_castFunction');
3
+
4
+ /**
5
+ * This method is like `_.forOwn` except that it iterates over properties of
6
+ * `object` in the opposite order.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 2.0.0
11
+ * @category Object
12
+ * @param {Object} object The object to iterate over.
13
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14
+ * @returns {Object} Returns `object`.
15
+ * @see _.forOwn
16
+ * @example
17
+ *
18
+ * function Foo() {
19
+ * this.a = 1;
20
+ * this.b = 2;
21
+ * }
22
+ *
23
+ * Foo.prototype.c = 3;
24
+ *
25
+ * _.forOwnRight(new Foo, function(value, key) {
26
+ * console.log(key);
27
+ * });
28
+ * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
29
+ */
30
+ function forOwnRight(object, iteratee) {
31
+ return object && baseForOwnRight(object, castFunction(iteratee));
32
+ }
33
+
34
+ module.exports = forOwnRight;
node_modules/lodash/fp.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var _ = require('./lodash.min').runInContext();
2
+ module.exports = require('./fp/_baseConvert')(_, _);
node_modules/lodash/fp/F.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./stubFalse');
node_modules/lodash/fp/T.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./stubTrue');
node_modules/lodash/fp/__.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./placeholder');
node_modules/lodash/fp/_baseConvert.js ADDED
@@ -0,0 +1,569 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var mapping = require('./_mapping'),
2
+ fallbackHolder = require('./placeholder');
3
+
4
+ /** Built-in value reference. */
5
+ var push = Array.prototype.push;
6
+
7
+ /**
8
+ * Creates a function, with an arity of `n`, that invokes `func` with the
9
+ * arguments it receives.
10
+ *
11
+ * @private
12
+ * @param {Function} func The function to wrap.
13
+ * @param {number} n The arity of the new function.
14
+ * @returns {Function} Returns the new function.
15
+ */
16
+ function baseArity(func, n) {
17
+ return n == 2
18
+ ? function(a, b) { return func.apply(undefined, arguments); }
19
+ : function(a) { return func.apply(undefined, arguments); };
20
+ }
21
+
22
+ /**
23
+ * Creates a function that invokes `func`, with up to `n` arguments, ignoring
24
+ * any additional arguments.
25
+ *
26
+ * @private
27
+ * @param {Function} func The function to cap arguments for.
28
+ * @param {number} n The arity cap.
29
+ * @returns {Function} Returns the new function.
30
+ */
31
+ function baseAry(func, n) {
32
+ return n == 2
33
+ ? function(a, b) { return func(a, b); }
34
+ : function(a) { return func(a); };
35
+ }
36
+
37
+ /**
38
+ * Creates a clone of `array`.
39
+ *
40
+ * @private
41
+ * @param {Array} array The array to clone.
42
+ * @returns {Array} Returns the cloned array.
43
+ */
44
+ function cloneArray(array) {
45
+ var length = array ? array.length : 0,
46
+ result = Array(length);
47
+
48
+ while (length--) {
49
+ result[length] = array[length];
50
+ }
51
+ return result;
52
+ }
53
+
54
+ /**
55
+ * Creates a function that clones a given object using the assignment `func`.
56
+ *
57
+ * @private
58
+ * @param {Function} func The assignment function.
59
+ * @returns {Function} Returns the new cloner function.
60
+ */
61
+ function createCloner(func) {
62
+ return function(object) {
63
+ return func({}, object);
64
+ };
65
+ }
66
+
67
+ /**
68
+ * A specialized version of `_.spread` which flattens the spread array into
69
+ * the arguments of the invoked `func`.
70
+ *
71
+ * @private
72
+ * @param {Function} func The function to spread arguments over.
73
+ * @param {number} start The start position of the spread.
74
+ * @returns {Function} Returns the new function.
75
+ */
76
+ function flatSpread(func, start) {
77
+ return function() {
78
+ var length = arguments.length,
79
+ lastIndex = length - 1,
80
+ args = Array(length);
81
+
82
+ while (length--) {
83
+ args[length] = arguments[length];
84
+ }
85
+ var array = args[start],
86
+ otherArgs = args.slice(0, start);
87
+
88
+ if (array) {
89
+ push.apply(otherArgs, array);
90
+ }
91
+ if (start != lastIndex) {
92
+ push.apply(otherArgs, args.slice(start + 1));
93
+ }
94
+ return func.apply(this, otherArgs);
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Creates a function that wraps `func` and uses `cloner` to clone the first
100
+ * argument it receives.
101
+ *
102
+ * @private
103
+ * @param {Function} func The function to wrap.
104
+ * @param {Function} cloner The function to clone arguments.
105
+ * @returns {Function} Returns the new immutable function.
106
+ */
107
+ function wrapImmutable(func, cloner) {
108
+ return function() {
109
+ var length = arguments.length;
110
+ if (!length) {
111
+ return;
112
+ }
113
+ var args = Array(length);
114
+ while (length--) {
115
+ args[length] = arguments[length];
116
+ }
117
+ var result = args[0] = cloner.apply(undefined, args);
118
+ func.apply(undefined, args);
119
+ return result;
120
+ };
121
+ }
122
+
123
+ /**
124
+ * The base implementation of `convert` which accepts a `util` object of methods
125
+ * required to perform conversions.
126
+ *
127
+ * @param {Object} util The util object.
128
+ * @param {string} name The name of the function to convert.
129
+ * @param {Function} func The function to convert.
130
+ * @param {Object} [options] The options object.
131
+ * @param {boolean} [options.cap=true] Specify capping iteratee arguments.
132
+ * @param {boolean} [options.curry=true] Specify currying.
133
+ * @param {boolean} [options.fixed=true] Specify fixed arity.
134
+ * @param {boolean} [options.immutable=true] Specify immutable operations.
135
+ * @param {boolean} [options.rearg=true] Specify rearranging arguments.
136
+ * @returns {Function|Object} Returns the converted function or object.
137
+ */
138
+ function baseConvert(util, name, func, options) {
139
+ var isLib = typeof name == 'function',
140
+ isObj = name === Object(name);
141
+
142
+ if (isObj) {
143
+ options = func;
144
+ func = name;
145
+ name = undefined;
146
+ }
147
+ if (func == null) {
148
+ throw new TypeError;
149
+ }
150
+ options || (options = {});
151
+
152
+ var config = {
153
+ 'cap': 'cap' in options ? options.cap : true,
154
+ 'curry': 'curry' in options ? options.curry : true,
155
+ 'fixed': 'fixed' in options ? options.fixed : true,
156
+ 'immutable': 'immutable' in options ? options.immutable : true,
157
+ 'rearg': 'rearg' in options ? options.rearg : true
158
+ };
159
+
160
+ var defaultHolder = isLib ? func : fallbackHolder,
161
+ forceCurry = ('curry' in options) && options.curry,
162
+ forceFixed = ('fixed' in options) && options.fixed,
163
+ forceRearg = ('rearg' in options) && options.rearg,
164
+ pristine = isLib ? func.runInContext() : undefined;
165
+
166
+ var helpers = isLib ? func : {
167
+ 'ary': util.ary,
168
+ 'assign': util.assign,
169
+ 'clone': util.clone,
170
+ 'curry': util.curry,
171
+ 'forEach': util.forEach,
172
+ 'isArray': util.isArray,
173
+ 'isError': util.isError,
174
+ 'isFunction': util.isFunction,
175
+ 'isWeakMap': util.isWeakMap,
176
+ 'iteratee': util.iteratee,
177
+ 'keys': util.keys,
178
+ 'rearg': util.rearg,
179
+ 'toInteger': util.toInteger,
180
+ 'toPath': util.toPath
181
+ };
182
+
183
+ var ary = helpers.ary,
184
+ assign = helpers.assign,
185
+ clone = helpers.clone,
186
+ curry = helpers.curry,
187
+ each = helpers.forEach,
188
+ isArray = helpers.isArray,
189
+ isError = helpers.isError,
190
+ isFunction = helpers.isFunction,
191
+ isWeakMap = helpers.isWeakMap,
192
+ keys = helpers.keys,
193
+ rearg = helpers.rearg,
194
+ toInteger = helpers.toInteger,
195
+ toPath = helpers.toPath;
196
+
197
+ var aryMethodKeys = keys(mapping.aryMethod);
198
+
199
+ var wrappers = {
200
+ 'castArray': function(castArray) {
201
+ return function() {
202
+ var value = arguments[0];
203
+ return isArray(value)
204
+ ? castArray(cloneArray(value))
205
+ : castArray.apply(undefined, arguments);
206
+ };
207
+ },
208
+ 'iteratee': function(iteratee) {
209
+ return function() {
210
+ var func = arguments[0],
211
+ arity = arguments[1],
212
+ result = iteratee(func, arity),
213
+ length = result.length;
214
+
215
+ if (config.cap && typeof arity == 'number') {
216
+ arity = arity > 2 ? (arity - 2) : 1;
217
+ return (length && length <= arity) ? result : baseAry(result, arity);
218
+ }
219
+ return result;
220
+ };
221
+ },
222
+ 'mixin': function(mixin) {
223
+ return function(source) {
224
+ var func = this;
225
+ if (!isFunction(func)) {
226
+ return mixin(func, Object(source));
227
+ }
228
+ var pairs = [];
229
+ each(keys(source), function(key) {
230
+ if (isFunction(source[key])) {
231
+ pairs.push([key, func.prototype[key]]);
232
+ }
233
+ });
234
+
235
+ mixin(func, Object(source));
236
+
237
+ each(pairs, function(pair) {
238
+ var value = pair[1];
239
+ if (isFunction(value)) {
240
+ func.prototype[pair[0]] = value;
241
+ } else {
242
+ delete func.prototype[pair[0]];
243
+ }
244
+ });
245
+ return func;
246
+ };
247
+ },
248
+ 'nthArg': function(nthArg) {
249
+ return function(n) {
250
+ var arity = n < 0 ? 1 : (toInteger(n) + 1);
251
+ return curry(nthArg(n), arity);
252
+ };
253
+ },
254
+ 'rearg': function(rearg) {
255
+ return function(func, indexes) {
256
+ var arity = indexes ? indexes.length : 0;
257
+ return curry(rearg(func, indexes), arity);
258
+ };
259
+ },
260
+ 'runInContext': function(runInContext) {
261
+ return function(context) {
262
+ return baseConvert(util, runInContext(context), options);
263
+ };
264
+ }
265
+ };
266
+
267
+ /*--------------------------------------------------------------------------*/
268
+
269
+ /**
270
+ * Casts `func` to a function with an arity capped iteratee if needed.
271
+ *
272
+ * @private
273
+ * @param {string} name The name of the function to inspect.
274
+ * @param {Function} func The function to inspect.
275
+ * @returns {Function} Returns the cast function.
276
+ */
277
+ function castCap(name, func) {
278
+ if (config.cap) {
279
+ var indexes = mapping.iterateeRearg[name];
280
+ if (indexes) {
281
+ return iterateeRearg(func, indexes);
282
+ }
283
+ var n = !isLib && mapping.iterateeAry[name];
284
+ if (n) {
285
+ return iterateeAry(func, n);
286
+ }
287
+ }
288
+ return func;
289
+ }
290
+
291
+ /**
292
+ * Casts `func` to a curried function if needed.
293
+ *
294
+ * @private
295
+ * @param {string} name The name of the function to inspect.
296
+ * @param {Function} func The function to inspect.
297
+ * @param {number} n The arity of `func`.
298
+ * @returns {Function} Returns the cast function.
299
+ */
300
+ function castCurry(name, func, n) {
301
+ return (forceCurry || (config.curry && n > 1))
302
+ ? curry(func, n)
303
+ : func;
304
+ }
305
+
306
+ /**
307
+ * Casts `func` to a fixed arity function if needed.
308
+ *
309
+ * @private
310
+ * @param {string} name The name of the function to inspect.
311
+ * @param {Function} func The function to inspect.
312
+ * @param {number} n The arity cap.
313
+ * @returns {Function} Returns the cast function.
314
+ */
315
+ function castFixed(name, func, n) {
316
+ if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
317
+ var data = mapping.methodSpread[name],
318
+ start = data && data.start;
319
+
320
+ return start === undefined ? ary(func, n) : flatSpread(func, start);
321
+ }
322
+ return func;
323
+ }
324
+
325
+ /**
326
+ * Casts `func` to an rearged function if needed.
327
+ *
328
+ * @private
329
+ * @param {string} name The name of the function to inspect.
330
+ * @param {Function} func The function to inspect.
331
+ * @param {number} n The arity of `func`.
332
+ * @returns {Function} Returns the cast function.
333
+ */
334
+ function castRearg(name, func, n) {
335
+ return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
336
+ ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
337
+ : func;
338
+ }
339
+
340
+ /**
341
+ * Creates a clone of `object` by `path`.
342
+ *
343
+ * @private
344
+ * @param {Object} object The object to clone.
345
+ * @param {Array|string} path The path to clone by.
346
+ * @returns {Object} Returns the cloned object.
347
+ */
348
+ function cloneByPath(object, path) {
349
+ path = toPath(path);
350
+
351
+ var index = -1,
352
+ length = path.length,
353
+ lastIndex = length - 1,
354
+ result = clone(Object(object)),
355
+ nested = result;
356
+
357
+ while (nested != null && ++index < length) {
358
+ var key = path[index],
359
+ value = nested[key];
360
+
361
+ if (value != null &&
362
+ !(isFunction(value) || isError(value) || isWeakMap(value))) {
363
+ nested[key] = clone(index == lastIndex ? value : Object(value));
364
+ }
365
+ nested = nested[key];
366
+ }
367
+ return result;
368
+ }
369
+
370
+ /**
371
+ * Converts `lodash` to an immutable auto-curried iteratee-first data-last
372
+ * version with conversion `options` applied.
373
+ *
374
+ * @param {Object} [options] The options object. See `baseConvert` for more details.
375
+ * @returns {Function} Returns the converted `lodash`.
376
+ */
377
+ function convertLib(options) {
378
+ return _.runInContext.convert(options)(undefined);
379
+ }
380
+
381
+ /**
382
+ * Create a converter function for `func` of `name`.
383
+ *
384
+ * @param {string} name The name of the function to convert.
385
+ * @param {Function} func The function to convert.
386
+ * @returns {Function} Returns the new converter function.
387
+ */
388
+ function createConverter(name, func) {
389
+ var realName = mapping.aliasToReal[name] || name,
390
+ methodName = mapping.remap[realName] || realName,
391
+ oldOptions = options;
392
+
393
+ return function(options) {
394
+ var newUtil = isLib ? pristine : helpers,
395
+ newFunc = isLib ? pristine[methodName] : func,
396
+ newOptions = assign(assign({}, oldOptions), options);
397
+
398
+ return baseConvert(newUtil, realName, newFunc, newOptions);
399
+ };
400
+ }
401
+
402
+ /**
403
+ * Creates a function that wraps `func` to invoke its iteratee, with up to `n`
404
+ * arguments, ignoring any additional arguments.
405
+ *
406
+ * @private
407
+ * @param {Function} func The function to cap iteratee arguments for.
408
+ * @param {number} n The arity cap.
409
+ * @returns {Function} Returns the new function.
410
+ */
411
+ function iterateeAry(func, n) {
412
+ return overArg(func, function(func) {
413
+ return typeof func == 'function' ? baseAry(func, n) : func;
414
+ });
415
+ }
416
+
417
+ /**
418
+ * Creates a function that wraps `func` to invoke its iteratee with arguments
419
+ * arranged according to the specified `indexes` where the argument value at
420
+ * the first index is provided as the first argument, the argument value at
421
+ * the second index is provided as the second argument, and so on.
422
+ *
423
+ * @private
424
+ * @param {Function} func The function to rearrange iteratee arguments for.
425
+ * @param {number[]} indexes The arranged argument indexes.
426
+ * @returns {Function} Returns the new function.
427
+ */
428
+ function iterateeRearg(func, indexes) {
429
+ return overArg(func, function(func) {
430
+ var n = indexes.length;
431
+ return baseArity(rearg(baseAry(func, n), indexes), n);
432
+ });
433
+ }
434
+
435
+ /**
436
+ * Creates a function that invokes `func` with its first argument transformed.
437
+ *
438
+ * @private
439
+ * @param {Function} func The function to wrap.
440
+ * @param {Function} transform The argument transform.
441
+ * @returns {Function} Returns the new function.
442
+ */
443
+ function overArg(func, transform) {
444
+ return function() {
445
+ var length = arguments.length;
446
+ if (!length) {
447
+ return func();
448
+ }
449
+ var args = Array(length);
450
+ while (length--) {
451
+ args[length] = arguments[length];
452
+ }
453
+ var index = config.rearg ? 0 : (length - 1);
454
+ args[index] = transform(args[index]);
455
+ return func.apply(undefined, args);
456
+ };
457
+ }
458
+
459
+ /**
460
+ * Creates a function that wraps `func` and applys the conversions
461
+ * rules by `name`.
462
+ *
463
+ * @private
464
+ * @param {string} name The name of the function to wrap.
465
+ * @param {Function} func The function to wrap.
466
+ * @returns {Function} Returns the converted function.
467
+ */
468
+ function wrap(name, func, placeholder) {
469
+ var result,
470
+ realName = mapping.aliasToReal[name] || name,
471
+ wrapped = func,
472
+ wrapper = wrappers[realName];
473
+
474
+ if (wrapper) {
475
+ wrapped = wrapper(func);
476
+ }
477
+ else if (config.immutable) {
478
+ if (mapping.mutate.array[realName]) {
479
+ wrapped = wrapImmutable(func, cloneArray);
480
+ }
481
+ else if (mapping.mutate.object[realName]) {
482
+ wrapped = wrapImmutable(func, createCloner(func));
483
+ }
484
+ else if (mapping.mutate.set[realName]) {
485
+ wrapped = wrapImmutable(func, cloneByPath);
486
+ }
487
+ }
488
+ each(aryMethodKeys, function(aryKey) {
489
+ each(mapping.aryMethod[aryKey], function(otherName) {
490
+ if (realName == otherName) {
491
+ var data = mapping.methodSpread[realName],
492
+ afterRearg = data && data.afterRearg;
493
+
494
+ result = afterRearg
495
+ ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
496
+ : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
497
+
498
+ result = castCap(realName, result);
499
+ result = castCurry(realName, result, aryKey);
500
+ return false;
501
+ }
502
+ });
503
+ return !result;
504
+ });
505
+
506
+ result || (result = wrapped);
507
+ if (result == func) {
508
+ result = forceCurry ? curry(result, 1) : function() {
509
+ return func.apply(this, arguments);
510
+ };
511
+ }
512
+ result.convert = createConverter(realName, func);
513
+ result.placeholder = func.placeholder = placeholder;
514
+
515
+ return result;
516
+ }
517
+
518
+ /*--------------------------------------------------------------------------*/
519
+
520
+ if (!isObj) {
521
+ return wrap(name, func, defaultHolder);
522
+ }
523
+ var _ = func;
524
+
525
+ // Convert methods by ary cap.
526
+ var pairs = [];
527
+ each(aryMethodKeys, function(aryKey) {
528
+ each(mapping.aryMethod[aryKey], function(key) {
529
+ var func = _[mapping.remap[key] || key];
530
+ if (func) {
531
+ pairs.push([key, wrap(key, func, _)]);
532
+ }
533
+ });
534
+ });
535
+
536
+ // Convert remaining methods.
537
+ each(keys(_), function(key) {
538
+ var func = _[key];
539
+ if (typeof func == 'function') {
540
+ var length = pairs.length;
541
+ while (length--) {
542
+ if (pairs[length][0] == key) {
543
+ return;
544
+ }
545
+ }
546
+ func.convert = createConverter(key, func);
547
+ pairs.push([key, func]);
548
+ }
549
+ });
550
+
551
+ // Assign to `_` leaving `_.prototype` unchanged to allow chaining.
552
+ each(pairs, function(pair) {
553
+ _[pair[0]] = pair[1];
554
+ });
555
+
556
+ _.convert = convertLib;
557
+ _.placeholder = _;
558
+
559
+ // Assign aliases.
560
+ each(keys(_), function(key) {
561
+ each(mapping.realToAlias[key] || [], function(alias) {
562
+ _[alias] = _[key];
563
+ });
564
+ });
565
+
566
+ return _;
567
+ }
568
+
569
+ module.exports = baseConvert;
node_modules/lodash/fp/_convertBrowser.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseConvert = require('./_baseConvert');
2
+
3
+ /**
4
+ * Converts `lodash` to an immutable auto-curried iteratee-first data-last
5
+ * version with conversion `options` applied.
6
+ *
7
+ * @param {Function} lodash The lodash function to convert.
8
+ * @param {Object} [options] The options object. See `baseConvert` for more details.
9
+ * @returns {Function} Returns the converted `lodash`.
10
+ */
11
+ function browserConvert(lodash, options) {
12
+ return baseConvert(lodash, lodash, options);
13
+ }
14
+
15
+ if (typeof _ == 'function' && typeof _.runInContext == 'function') {
16
+ _ = browserConvert(_.runInContext());
17
+ }
18
+ module.exports = browserConvert;
node_modules/lodash/fp/_falseOptions.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'cap': false,
3
+ 'curry': false,
4
+ 'fixed': false,
5
+ 'immutable': false,
6
+ 'rearg': false
7
+ };
node_modules/lodash/fp/_mapping.js ADDED
@@ -0,0 +1,358 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used to map aliases to their real names. */
2
+ exports.aliasToReal = {
3
+
4
+ // Lodash aliases.
5
+ 'each': 'forEach',
6
+ 'eachRight': 'forEachRight',
7
+ 'entries': 'toPairs',
8
+ 'entriesIn': 'toPairsIn',
9
+ 'extend': 'assignIn',
10
+ 'extendAll': 'assignInAll',
11
+ 'extendAllWith': 'assignInAllWith',
12
+ 'extendWith': 'assignInWith',
13
+ 'first': 'head',
14
+
15
+ // Methods that are curried variants of others.
16
+ 'conforms': 'conformsTo',
17
+ 'matches': 'isMatch',
18
+ 'property': 'get',
19
+
20
+ // Ramda aliases.
21
+ '__': 'placeholder',
22
+ 'F': 'stubFalse',
23
+ 'T': 'stubTrue',
24
+ 'all': 'every',
25
+ 'allPass': 'overEvery',
26
+ 'always': 'constant',
27
+ 'any': 'some',
28
+ 'anyPass': 'overSome',
29
+ 'apply': 'spread',
30
+ 'assoc': 'set',
31
+ 'assocPath': 'set',
32
+ 'complement': 'negate',
33
+ 'compose': 'flowRight',
34
+ 'contains': 'includes',
35
+ 'dissoc': 'unset',
36
+ 'dissocPath': 'unset',
37
+ 'dropLast': 'dropRight',
38
+ 'dropLastWhile': 'dropRightWhile',
39
+ 'equals': 'isEqual',
40
+ 'identical': 'eq',
41
+ 'indexBy': 'keyBy',
42
+ 'init': 'initial',
43
+ 'invertObj': 'invert',
44
+ 'juxt': 'over',
45
+ 'omitAll': 'omit',
46
+ 'nAry': 'ary',
47
+ 'path': 'get',
48
+ 'pathEq': 'matchesProperty',
49
+ 'pathOr': 'getOr',
50
+ 'paths': 'at',
51
+ 'pickAll': 'pick',
52
+ 'pipe': 'flow',
53
+ 'pluck': 'map',
54
+ 'prop': 'get',
55
+ 'propEq': 'matchesProperty',
56
+ 'propOr': 'getOr',
57
+ 'props': 'at',
58
+ 'symmetricDifference': 'xor',
59
+ 'symmetricDifferenceBy': 'xorBy',
60
+ 'symmetricDifferenceWith': 'xorWith',
61
+ 'takeLast': 'takeRight',
62
+ 'takeLastWhile': 'takeRightWhile',
63
+ 'unapply': 'rest',
64
+ 'unnest': 'flatten',
65
+ 'useWith': 'overArgs',
66
+ 'where': 'conformsTo',
67
+ 'whereEq': 'isMatch',
68
+ 'zipObj': 'zipObject'
69
+ };
70
+
71
+ /** Used to map ary to method names. */
72
+ exports.aryMethod = {
73
+ '1': [
74
+ 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
75
+ 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
76
+ 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
77
+ 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
78
+ 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
79
+ 'uniqueId', 'words', 'zipAll'
80
+ ],
81
+ '2': [
82
+ 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
83
+ 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
84
+ 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
85
+ 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
86
+ 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
87
+ 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
88
+ 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
89
+ 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
90
+ 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
91
+ 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
92
+ 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
93
+ 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
94
+ 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
95
+ 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
96
+ 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
97
+ 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
98
+ 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
99
+ 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',
100
+ 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',
101
+ 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',
102
+ 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
103
+ 'zipObjectDeep'
104
+ ],
105
+ '3': [
106
+ 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
107
+ 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
108
+ 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
109
+ 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
110
+ 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
111
+ 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',
112
+ 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',
113
+ 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',
114
+ 'xorWith', 'zipWith'
115
+ ],
116
+ '4': [
117
+ 'fill', 'setWith', 'updateWith'
118
+ ]
119
+ };
120
+
121
+ /** Used to map ary to rearg configs. */
122
+ exports.aryRearg = {
123
+ '2': [1, 0],
124
+ '3': [2, 0, 1],
125
+ '4': [3, 2, 0, 1]
126
+ };
127
+
128
+ /** Used to map method names to their iteratee ary. */
129
+ exports.iterateeAry = {
130
+ 'dropRightWhile': 1,
131
+ 'dropWhile': 1,
132
+ 'every': 1,
133
+ 'filter': 1,
134
+ 'find': 1,
135
+ 'findFrom': 1,
136
+ 'findIndex': 1,
137
+ 'findIndexFrom': 1,
138
+ 'findKey': 1,
139
+ 'findLast': 1,
140
+ 'findLastFrom': 1,
141
+ 'findLastIndex': 1,
142
+ 'findLastIndexFrom': 1,
143
+ 'findLastKey': 1,
144
+ 'flatMap': 1,
145
+ 'flatMapDeep': 1,
146
+ 'flatMapDepth': 1,
147
+ 'forEach': 1,
148
+ 'forEachRight': 1,
149
+ 'forIn': 1,
150
+ 'forInRight': 1,
151
+ 'forOwn': 1,
152
+ 'forOwnRight': 1,
153
+ 'map': 1,
154
+ 'mapKeys': 1,
155
+ 'mapValues': 1,
156
+ 'partition': 1,
157
+ 'reduce': 2,
158
+ 'reduceRight': 2,
159
+ 'reject': 1,
160
+ 'remove': 1,
161
+ 'some': 1,
162
+ 'takeRightWhile': 1,
163
+ 'takeWhile': 1,
164
+ 'times': 1,
165
+ 'transform': 2
166
+ };
167
+
168
+ /** Used to map method names to iteratee rearg configs. */
169
+ exports.iterateeRearg = {
170
+ 'mapKeys': [1],
171
+ 'reduceRight': [1, 0]
172
+ };
173
+
174
+ /** Used to map method names to rearg configs. */
175
+ exports.methodRearg = {
176
+ 'assignInAllWith': [1, 0],
177
+ 'assignInWith': [1, 2, 0],
178
+ 'assignAllWith': [1, 0],
179
+ 'assignWith': [1, 2, 0],
180
+ 'differenceBy': [1, 2, 0],
181
+ 'differenceWith': [1, 2, 0],
182
+ 'getOr': [2, 1, 0],
183
+ 'intersectionBy': [1, 2, 0],
184
+ 'intersectionWith': [1, 2, 0],
185
+ 'isEqualWith': [1, 2, 0],
186
+ 'isMatchWith': [2, 1, 0],
187
+ 'mergeAllWith': [1, 0],
188
+ 'mergeWith': [1, 2, 0],
189
+ 'padChars': [2, 1, 0],
190
+ 'padCharsEnd': [2, 1, 0],
191
+ 'padCharsStart': [2, 1, 0],
192
+ 'pullAllBy': [2, 1, 0],
193
+ 'pullAllWith': [2, 1, 0],
194
+ 'rangeStep': [1, 2, 0],
195
+ 'rangeStepRight': [1, 2, 0],
196
+ 'setWith': [3, 1, 2, 0],
197
+ 'sortedIndexBy': [2, 1, 0],
198
+ 'sortedLastIndexBy': [2, 1, 0],
199
+ 'unionBy': [1, 2, 0],
200
+ 'unionWith': [1, 2, 0],
201
+ 'updateWith': [3, 1, 2, 0],
202
+ 'xorBy': [1, 2, 0],
203
+ 'xorWith': [1, 2, 0],
204
+ 'zipWith': [1, 2, 0]
205
+ };
206
+
207
+ /** Used to map method names to spread configs. */
208
+ exports.methodSpread = {
209
+ 'assignAll': { 'start': 0 },
210
+ 'assignAllWith': { 'start': 0 },
211
+ 'assignInAll': { 'start': 0 },
212
+ 'assignInAllWith': { 'start': 0 },
213
+ 'defaultsAll': { 'start': 0 },
214
+ 'defaultsDeepAll': { 'start': 0 },
215
+ 'invokeArgs': { 'start': 2 },
216
+ 'invokeArgsMap': { 'start': 2 },
217
+ 'mergeAll': { 'start': 0 },
218
+ 'mergeAllWith': { 'start': 0 },
219
+ 'partial': { 'start': 1 },
220
+ 'partialRight': { 'start': 1 },
221
+ 'without': { 'start': 1 },
222
+ 'zipAll': { 'start': 0 }
223
+ };
224
+
225
+ /** Used to identify methods which mutate arrays or objects. */
226
+ exports.mutate = {
227
+ 'array': {
228
+ 'fill': true,
229
+ 'pull': true,
230
+ 'pullAll': true,
231
+ 'pullAllBy': true,
232
+ 'pullAllWith': true,
233
+ 'pullAt': true,
234
+ 'remove': true,
235
+ 'reverse': true
236
+ },
237
+ 'object': {
238
+ 'assign': true,
239
+ 'assignAll': true,
240
+ 'assignAllWith': true,
241
+ 'assignIn': true,
242
+ 'assignInAll': true,
243
+ 'assignInAllWith': true,
244
+ 'assignInWith': true,
245
+ 'assignWith': true,
246
+ 'defaults': true,
247
+ 'defaultsAll': true,
248
+ 'defaultsDeep': true,
249
+ 'defaultsDeepAll': true,
250
+ 'merge': true,
251
+ 'mergeAll': true,
252
+ 'mergeAllWith': true,
253
+ 'mergeWith': true,
254
+ },
255
+ 'set': {
256
+ 'set': true,
257
+ 'setWith': true,
258
+ 'unset': true,
259
+ 'update': true,
260
+ 'updateWith': true
261
+ }
262
+ };
263
+
264
+ /** Used to map real names to their aliases. */
265
+ exports.realToAlias = (function() {
266
+ var hasOwnProperty = Object.prototype.hasOwnProperty,
267
+ object = exports.aliasToReal,
268
+ result = {};
269
+
270
+ for (var key in object) {
271
+ var value = object[key];
272
+ if (hasOwnProperty.call(result, value)) {
273
+ result[value].push(key);
274
+ } else {
275
+ result[value] = [key];
276
+ }
277
+ }
278
+ return result;
279
+ }());
280
+
281
+ /** Used to map method names to other names. */
282
+ exports.remap = {
283
+ 'assignAll': 'assign',
284
+ 'assignAllWith': 'assignWith',
285
+ 'assignInAll': 'assignIn',
286
+ 'assignInAllWith': 'assignInWith',
287
+ 'curryN': 'curry',
288
+ 'curryRightN': 'curryRight',
289
+ 'defaultsAll': 'defaults',
290
+ 'defaultsDeepAll': 'defaultsDeep',
291
+ 'findFrom': 'find',
292
+ 'findIndexFrom': 'findIndex',
293
+ 'findLastFrom': 'findLast',
294
+ 'findLastIndexFrom': 'findLastIndex',
295
+ 'getOr': 'get',
296
+ 'includesFrom': 'includes',
297
+ 'indexOfFrom': 'indexOf',
298
+ 'invokeArgs': 'invoke',
299
+ 'invokeArgsMap': 'invokeMap',
300
+ 'lastIndexOfFrom': 'lastIndexOf',
301
+ 'mergeAll': 'merge',
302
+ 'mergeAllWith': 'mergeWith',
303
+ 'padChars': 'pad',
304
+ 'padCharsEnd': 'padEnd',
305
+ 'padCharsStart': 'padStart',
306
+ 'propertyOf': 'get',
307
+ 'rangeStep': 'range',
308
+ 'rangeStepRight': 'rangeRight',
309
+ 'restFrom': 'rest',
310
+ 'spreadFrom': 'spread',
311
+ 'trimChars': 'trim',
312
+ 'trimCharsEnd': 'trimEnd',
313
+ 'trimCharsStart': 'trimStart',
314
+ 'zipAll': 'zip'
315
+ };
316
+
317
+ /** Used to track methods that skip fixing their arity. */
318
+ exports.skipFixed = {
319
+ 'castArray': true,
320
+ 'flow': true,
321
+ 'flowRight': true,
322
+ 'iteratee': true,
323
+ 'mixin': true,
324
+ 'rearg': true,
325
+ 'runInContext': true
326
+ };
327
+
328
+ /** Used to track methods that skip rearranging arguments. */
329
+ exports.skipRearg = {
330
+ 'add': true,
331
+ 'assign': true,
332
+ 'assignIn': true,
333
+ 'bind': true,
334
+ 'bindKey': true,
335
+ 'concat': true,
336
+ 'difference': true,
337
+ 'divide': true,
338
+ 'eq': true,
339
+ 'gt': true,
340
+ 'gte': true,
341
+ 'isEqual': true,
342
+ 'lt': true,
343
+ 'lte': true,
344
+ 'matchesProperty': true,
345
+ 'merge': true,
346
+ 'multiply': true,
347
+ 'overArgs': true,
348
+ 'partial': true,
349
+ 'partialRight': true,
350
+ 'propertyOf': true,
351
+ 'random': true,
352
+ 'range': true,
353
+ 'rangeRight': true,
354
+ 'subtract': true,
355
+ 'zip': true,
356
+ 'zipObject': true,
357
+ 'zipObjectDeep': true
358
+ };
node_modules/lodash/fp/_util.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'ary': require('../ary'),
3
+ 'assign': require('../_baseAssign'),
4
+ 'clone': require('../clone'),
5
+ 'curry': require('../curry'),
6
+ 'forEach': require('../_arrayEach'),
7
+ 'isArray': require('../isArray'),
8
+ 'isError': require('../isError'),
9
+ 'isFunction': require('../isFunction'),
10
+ 'isWeakMap': require('../isWeakMap'),
11
+ 'iteratee': require('../iteratee'),
12
+ 'keys': require('../_baseKeys'),
13
+ 'rearg': require('../rearg'),
14
+ 'toInteger': require('../toInteger'),
15
+ 'toPath': require('../toPath')
16
+ };
node_modules/lodash/fp/add.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('add', require('../add'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/after.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('after', require('../after'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/all.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./every');
node_modules/lodash/fp/allPass.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./overEvery');
node_modules/lodash/fp/always.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./constant');
node_modules/lodash/fp/any.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./some');
node_modules/lodash/fp/anyPass.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./overSome');
node_modules/lodash/fp/apply.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./spread');
node_modules/lodash/fp/array.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../array'));
node_modules/lodash/fp/ary.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('ary', require('../ary'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assign.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assign', require('../assign'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignAll', require('../assign'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignAllWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignAllWith', require('../assignWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignIn', require('../assignIn'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignInAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignInAll', require('../assignIn'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignInAllWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignInAllWith', require('../assignInWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignInWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignInWith', require('../assignInWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assignWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('assignWith', require('../assignWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/assoc.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./set');
node_modules/lodash/fp/assocPath.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./set');
node_modules/lodash/fp/at.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('at', require('../at'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/attempt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('attempt', require('../attempt'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/before.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('before', require('../before'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/bind.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('bind', require('../bind'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/bindAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('bindAll', require('../bindAll'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/bindKey.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('bindKey', require('../bindKey'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/camelCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('camelCase', require('../camelCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/capitalize.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('capitalize', require('../capitalize'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/castArray.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('castArray', require('../castArray'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/ceil.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('ceil', require('../ceil'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/chain.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('chain', require('../chain'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/chunk.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('chunk', require('../chunk'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/clamp.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('clamp', require('../clamp'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/clone.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('clone', require('../clone'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/cloneDeep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/cloneDeepWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('cloneDeepWith', require('../cloneDeepWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/cloneWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('cloneWith', require('../cloneWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/collection.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../collection'));
node_modules/lodash/fp/commit.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('commit', require('../commit'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/compact.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('compact', require('../compact'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/complement.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./negate');
node_modules/lodash/fp/compose.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./flowRight');
node_modules/lodash/fp/concat.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('concat', require('../concat'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/cond.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('cond', require('../cond'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/conforms.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./conformsTo');
node_modules/lodash/fp/conformsTo.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('conformsTo', require('../conformsTo'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/constant.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('constant', require('../constant'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/contains.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./includes');
node_modules/lodash/fp/convert.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseConvert = require('./_baseConvert'),
2
+ util = require('./_util');
3
+
4
+ /**
5
+ * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last
6
+ * version with conversion `options` applied. If `name` is an object its methods
7
+ * will be converted.
8
+ *
9
+ * @param {string} name The name of the function to wrap.
10
+ * @param {Function} [func] The function to wrap.
11
+ * @param {Object} [options] The options object. See `baseConvert` for more details.
12
+ * @returns {Function|Object} Returns the converted function or object.
13
+ */
14
+ function convert(name, func, options) {
15
+ return baseConvert(util, name, func, options);
16
+ }
17
+
18
+ module.exports = convert;
node_modules/lodash/fp/countBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('countBy', require('../countBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/create.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('create', require('../create'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/curry.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('curry', require('../curry'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/curryN.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('curryN', require('../curry'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/curryRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('curryRight', require('../curryRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/curryRightN.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('curryRightN', require('../curryRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/date.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../date'));
node_modules/lodash/fp/debounce.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('debounce', require('../debounce'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/deburr.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('deburr', require('../deburr'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defaultTo.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defaultTo', require('../defaultTo'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defaults.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defaults', require('../defaults'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defaultsAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defaultsAll', require('../defaults'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defaultsDeep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defaultsDeep', require('../defaultsDeep'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defaultsDeepAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defaultsDeepAll', require('../defaultsDeep'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/defer.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('defer', require('../defer'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/delay.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('delay', require('../delay'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/difference.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('difference', require('../difference'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/differenceBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('differenceBy', require('../differenceBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/differenceWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('differenceWith', require('../differenceWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/dissoc.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./unset');
node_modules/lodash/fp/dissocPath.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./unset');
node_modules/lodash/fp/divide.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('divide', require('../divide'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/drop.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('drop', require('../drop'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/dropLast.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./dropRight');
node_modules/lodash/fp/dropLastWhile.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./dropRightWhile');
node_modules/lodash/fp/dropRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('dropRight', require('../dropRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/dropRightWhile.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('dropRightWhile', require('../dropRightWhile'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/dropWhile.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('dropWhile', require('../dropWhile'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/each.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./forEach');
node_modules/lodash/fp/eachRight.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./forEachRight');
node_modules/lodash/fp/endsWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('endsWith', require('../endsWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/entries.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./toPairs');
node_modules/lodash/fp/entriesIn.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./toPairsIn');
node_modules/lodash/fp/eq.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('eq', require('../eq'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/equals.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./isEqual');
node_modules/lodash/fp/escape.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('escape', require('../escape'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/escapeRegExp.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/every.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('every', require('../every'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/extend.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignIn');
node_modules/lodash/fp/extendAll.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignInAll');
node_modules/lodash/fp/extendAllWith.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignInAllWith');
node_modules/lodash/fp/extendWith.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./assignInWith');
node_modules/lodash/fp/fill.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('fill', require('../fill'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/filter.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('filter', require('../filter'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/find.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('find', require('../find'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findFrom', require('../find'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findIndex.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findIndex', require('../findIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findIndexFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findIndexFrom', require('../findIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findKey.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findKey', require('../findKey'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findLast.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findLast', require('../findLast'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findLastFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findLastFrom', require('../findLast'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findLastIndex.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findLastIndex', require('../findLastIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findLastIndexFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findLastIndexFrom', require('../findLastIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/findLastKey.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('findLastKey', require('../findLastKey'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/first.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./head');
node_modules/lodash/fp/flatMap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flatMap', require('../flatMap'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flatMapDeep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flatMapDeep', require('../flatMapDeep'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flatMapDepth.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flatMapDepth', require('../flatMapDepth'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flatten.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flatten', require('../flatten'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flattenDeep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flattenDepth.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flattenDepth', require('../flattenDepth'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flip.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flip', require('../flip'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/floor.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('floor', require('../floor'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flow.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flow', require('../flow'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/flowRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('flowRight', require('../flowRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forEach.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forEach', require('../forEach'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forEachRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forEachRight', require('../forEachRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forIn', require('../forIn'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forInRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forInRight', require('../forInRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forOwn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forOwn', require('../forOwn'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/forOwnRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('forOwnRight', require('../forOwnRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/fromPairs.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('fromPairs', require('../fromPairs'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/function.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../function'));
node_modules/lodash/fp/functions.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('functions', require('../functions'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/functionsIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/get.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('get', require('../get'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/getOr.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('getOr', require('../get'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/groupBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('groupBy', require('../groupBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/gt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('gt', require('../gt'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/gte.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('gte', require('../gte'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/has.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('has', require('../has'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/hasIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('hasIn', require('../hasIn'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/head.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('head', require('../head'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/identical.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./eq');
node_modules/lodash/fp/identity.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('identity', require('../identity'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/inRange.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('inRange', require('../inRange'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/includes.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('includes', require('../includes'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/includesFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('includesFrom', require('../includes'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/indexBy.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./keyBy');
node_modules/lodash/fp/indexOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('indexOf', require('../indexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/indexOfFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('indexOfFrom', require('../indexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/init.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./initial');
node_modules/lodash/fp/initial.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('initial', require('../initial'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/intersection.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('intersection', require('../intersection'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/intersectionBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('intersectionBy', require('../intersectionBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/intersectionWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('intersectionWith', require('../intersectionWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invert.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invert', require('../invert'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invertBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invertBy', require('../invertBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invertObj.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./invert');
node_modules/lodash/fp/invoke.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invoke', require('../invoke'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invokeArgs.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invokeArgs', require('../invoke'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invokeArgsMap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invokeArgsMap', require('../invokeMap'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/invokeMap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('invokeMap', require('../invokeMap'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isArguments.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isArguments', require('../isArguments'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isArray.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isArray', require('../isArray'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isArrayBuffer.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isArrayLike.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isArrayLikeObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isBoolean.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isBuffer.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isDate.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isDate', require('../isDate'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isElement.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isElement', require('../isElement'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isEmpty.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isEqual.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isEqual', require('../isEqual'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isEqualWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isEqualWith', require('../isEqualWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isError.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isError', require('../isError'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isFinite.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isFinite', require('../isFinite'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isFunction.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isFunction', require('../isFunction'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isInteger.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isInteger', require('../isInteger'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isLength.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isLength', require('../isLength'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isMap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isMap', require('../isMap'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isMatch.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isMatch', require('../isMatch'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isMatchWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isMatchWith', require('../isMatchWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isNaN.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isNaN', require('../isNaN'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isNative.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isNative', require('../isNative'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isNil.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isNil', require('../isNil'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isNull.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isNull', require('../isNull'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isNumber.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isNumber', require('../isNumber'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isObject', require('../isObject'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isObjectLike.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isPlainObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isRegExp.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isSafeInteger.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isSet.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isSet', require('../isSet'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isString.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isString', require('../isString'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isSymbol.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isTypedArray.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isUndefined.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isWeakMap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/isWeakSet.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/iteratee.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('iteratee', require('../iteratee'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/join.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('join', require('../join'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/juxt.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./over');
node_modules/lodash/fp/kebabCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/keyBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('keyBy', require('../keyBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/keys.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('keys', require('../keys'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/keysIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('keysIn', require('../keysIn'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lang.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../lang'));
node_modules/lodash/fp/last.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('last', require('../last'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lastIndexOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lastIndexOf', require('../lastIndexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lastIndexOfFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lastIndexOfFrom', require('../lastIndexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lowerCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lowerFirst.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lt', require('../lt'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/lte.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('lte', require('../lte'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/map.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('map', require('../map'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mapKeys.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mapKeys', require('../mapKeys'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mapValues.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mapValues', require('../mapValues'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/matches.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./isMatch');
node_modules/lodash/fp/matchesProperty.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('matchesProperty', require('../matchesProperty'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/math.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../math'));
node_modules/lodash/fp/max.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('max', require('../max'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/maxBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('maxBy', require('../maxBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mean.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mean', require('../mean'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/meanBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('meanBy', require('../meanBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/memoize.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('memoize', require('../memoize'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/merge.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('merge', require('../merge'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mergeAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mergeAll', require('../merge'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mergeAllWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mergeAllWith', require('../mergeWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mergeWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mergeWith', require('../mergeWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/method.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('method', require('../method'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/methodOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('methodOf', require('../methodOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/min.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('min', require('../min'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/minBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('minBy', require('../minBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/mixin.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('mixin', require('../mixin'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/multiply.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('multiply', require('../multiply'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/nAry.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./ary');
node_modules/lodash/fp/negate.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('negate', require('../negate'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/next.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('next', require('../next'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/noop.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('noop', require('../noop'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/now.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('now', require('../now'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/nth.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('nth', require('../nth'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/nthArg.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('nthArg', require('../nthArg'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/number.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../number'));
node_modules/lodash/fp/object.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../object'));
node_modules/lodash/fp/omit.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('omit', require('../omit'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/omitAll.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./omit');
node_modules/lodash/fp/omitBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('omitBy', require('../omitBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/once.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('once', require('../once'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/orderBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('orderBy', require('../orderBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/over.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('over', require('../over'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/overArgs.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('overArgs', require('../overArgs'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/overEvery.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('overEvery', require('../overEvery'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/overSome.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('overSome', require('../overSome'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pad.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pad', require('../pad'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/padChars.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('padChars', require('../pad'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/padCharsEnd.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('padCharsEnd', require('../padEnd'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/padCharsStart.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('padCharsStart', require('../padStart'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/padEnd.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('padEnd', require('../padEnd'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/padStart.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('padStart', require('../padStart'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/parseInt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('parseInt', require('../parseInt'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/partial.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('partial', require('../partial'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/partialRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('partialRight', require('../partialRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/partition.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('partition', require('../partition'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/path.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./get');
node_modules/lodash/fp/pathEq.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./matchesProperty');
node_modules/lodash/fp/pathOr.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./getOr');
node_modules/lodash/fp/paths.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./at');
node_modules/lodash/fp/pick.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pick', require('../pick'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pickAll.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./pick');
node_modules/lodash/fp/pickBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pickBy', require('../pickBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pipe.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./flow');
node_modules/lodash/fp/placeholder.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /**
2
+ * The default argument placeholder value for methods.
3
+ *
4
+ * @type {Object}
5
+ */
6
+ module.exports = {};
node_modules/lodash/fp/plant.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('plant', require('../plant'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pluck.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./map');
node_modules/lodash/fp/prop.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./get');
node_modules/lodash/fp/propEq.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./matchesProperty');
node_modules/lodash/fp/propOr.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./getOr');
node_modules/lodash/fp/property.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./get');
node_modules/lodash/fp/propertyOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('propertyOf', require('../get'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/props.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./at');
node_modules/lodash/fp/pull.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pull', require('../pull'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pullAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pullAll', require('../pullAll'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pullAllBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pullAllBy', require('../pullAllBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pullAllWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pullAllWith', require('../pullAllWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/pullAt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('pullAt', require('../pullAt'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/random.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('random', require('../random'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/range.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('range', require('../range'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/rangeRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('rangeRight', require('../rangeRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/rangeStep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('rangeStep', require('../range'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/rangeStepRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('rangeStepRight', require('../rangeRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/rearg.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('rearg', require('../rearg'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/reduce.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('reduce', require('../reduce'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/reduceRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('reduceRight', require('../reduceRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/reject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('reject', require('../reject'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/remove.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('remove', require('../remove'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/repeat.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('repeat', require('../repeat'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/replace.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('replace', require('../replace'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/rest.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('rest', require('../rest'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/restFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('restFrom', require('../rest'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/result.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('result', require('../result'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/reverse.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('reverse', require('../reverse'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/round.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('round', require('../round'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sample.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sample', require('../sample'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sampleSize.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sampleSize', require('../sampleSize'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/seq.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../seq'));
node_modules/lodash/fp/set.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('set', require('../set'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/setWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('setWith', require('../setWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/shuffle.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('shuffle', require('../shuffle'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/size.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('size', require('../size'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/slice.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('slice', require('../slice'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/snakeCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/some.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('some', require('../some'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortBy', require('../sortBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedIndex.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedIndex', require('../sortedIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedIndexBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedIndexBy', require('../sortedIndexBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedIndexOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedIndexOf', require('../sortedIndexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedLastIndex.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedLastIndex', require('../sortedLastIndex'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedLastIndexBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedLastIndexBy', require('../sortedLastIndexBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedLastIndexOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedLastIndexOf', require('../sortedLastIndexOf'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedUniq.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sortedUniqBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sortedUniqBy', require('../sortedUniqBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/split.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('split', require('../split'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/spread.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('spread', require('../spread'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/spreadFrom.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('spreadFrom', require('../spread'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/startCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('startCase', require('../startCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/startsWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('startsWith', require('../startsWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/string.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../string'));
node_modules/lodash/fp/stubArray.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('stubArray', require('../stubArray'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/stubFalse.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/stubObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('stubObject', require('../stubObject'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/stubString.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('stubString', require('../stubString'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/stubTrue.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/subtract.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('subtract', require('../subtract'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sum.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sum', require('../sum'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/sumBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('sumBy', require('../sumBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/symmetricDifference.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./xor');
node_modules/lodash/fp/symmetricDifferenceBy.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./xorBy');
node_modules/lodash/fp/symmetricDifferenceWith.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./xorWith');
node_modules/lodash/fp/tail.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('tail', require('../tail'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/take.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('take', require('../take'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/takeLast.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./takeRight');
node_modules/lodash/fp/takeLastWhile.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./takeRightWhile');
node_modules/lodash/fp/takeRight.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('takeRight', require('../takeRight'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/takeRightWhile.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('takeRightWhile', require('../takeRightWhile'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/takeWhile.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('takeWhile', require('../takeWhile'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/tap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('tap', require('../tap'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/template.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('template', require('../template'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/templateSettings.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/throttle.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('throttle', require('../throttle'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/thru.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('thru', require('../thru'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/times.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('times', require('../times'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toArray.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toArray', require('../toArray'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toFinite.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toFinite', require('../toFinite'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toInteger.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toInteger', require('../toInteger'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toIterator.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toIterator', require('../toIterator'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toJSON.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toJSON', require('../toJSON'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toLength.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toLength', require('../toLength'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toLower.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toLower', require('../toLower'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toNumber.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toNumber', require('../toNumber'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toPairs.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toPairs', require('../toPairs'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toPairsIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toPath.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toPath', require('../toPath'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toPlainObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toSafeInteger.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toString.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toString', require('../toString'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/toUpper.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('toUpper', require('../toUpper'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/transform.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('transform', require('../transform'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trim.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trim', require('../trim'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trimChars.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trimChars', require('../trim'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trimCharsEnd.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trimCharsEnd', require('../trimEnd'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trimCharsStart.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trimCharsStart', require('../trimStart'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trimEnd.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trimEnd', require('../trimEnd'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/trimStart.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('trimStart', require('../trimStart'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/truncate.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('truncate', require('../truncate'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unapply.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./rest');
node_modules/lodash/fp/unary.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unary', require('../unary'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unescape.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unescape', require('../unescape'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/union.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('union', require('../union'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unionBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unionBy', require('../unionBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unionWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unionWith', require('../unionWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/uniq.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('uniq', require('../uniq'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/uniqBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('uniqBy', require('../uniqBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/uniqWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('uniqWith', require('../uniqWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/uniqueId.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('uniqueId', require('../uniqueId'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unnest.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./flatten');
node_modules/lodash/fp/unset.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unset', require('../unset'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unzip.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unzip', require('../unzip'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/unzipWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('unzipWith', require('../unzipWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/update.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('update', require('../update'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/updateWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('updateWith', require('../updateWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/upperCase.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('upperCase', require('../upperCase'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/upperFirst.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/useWith.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./overArgs');
node_modules/lodash/fp/util.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var convert = require('./convert');
2
+ module.exports = convert(require('../util'));
node_modules/lodash/fp/value.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('value', require('../value'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/valueOf.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('valueOf', require('../valueOf'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/values.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('values', require('../values'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/valuesIn.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/where.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./conformsTo');
node_modules/lodash/fp/whereEq.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./isMatch');
node_modules/lodash/fp/without.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('without', require('../without'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/words.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('words', require('../words'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrap.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrap', require('../wrap'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrapperAt.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrapperChain.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrapperLodash.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrapperReverse.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/wrapperValue.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/xor.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('xor', require('../xor'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/xorBy.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('xorBy', require('../xorBy'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/xorWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('xorWith', require('../xorWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/zip.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('zip', require('../zip'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/zipAll.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('zipAll', require('../zip'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/zipObj.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./zipObject');
node_modules/lodash/fp/zipObject.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('zipObject', require('../zipObject'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/zipObjectDeep.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('zipObjectDeep', require('../zipObjectDeep'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fp/zipWith.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var convert = require('./convert'),
2
+ func = convert('zipWith', require('../zipWith'));
3
+
4
+ func.placeholder = require('./placeholder');
5
+ module.exports = func;
node_modules/lodash/fromPairs.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The inverse of `_.toPairs`; this method returns an object composed
3
+ * from key-value `pairs`.
4
+ *
5
+ * @static
6
+ * @memberOf _
7
+ * @since 4.0.0
8
+ * @category Array
9
+ * @param {Array} pairs The key-value pairs.
10
+ * @returns {Object} Returns the new object.
11
+ * @example
12
+ *
13
+ * _.fromPairs([['a', 1], ['b', 2]]);
14
+ * // => { 'a': 1, 'b': 2 }
15
+ */
16
+ function fromPairs(pairs) {
17
+ var index = -1,
18
+ length = pairs == null ? 0 : pairs.length,
19
+ result = {};
20
+
21
+ while (++index < length) {
22
+ var pair = pairs[index];
23
+ result[pair[0]] = pair[1];
24
+ }
25
+ return result;
26
+ }
27
+
28
+ module.exports = fromPairs;
node_modules/lodash/function.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'after': require('./after'),
3
+ 'ary': require('./ary'),
4
+ 'before': require('./before'),
5
+ 'bind': require('./bind'),
6
+ 'bindKey': require('./bindKey'),
7
+ 'curry': require('./curry'),
8
+ 'curryRight': require('./curryRight'),
9
+ 'debounce': require('./debounce'),
10
+ 'defer': require('./defer'),
11
+ 'delay': require('./delay'),
12
+ 'flip': require('./flip'),
13
+ 'memoize': require('./memoize'),
14
+ 'negate': require('./negate'),
15
+ 'once': require('./once'),
16
+ 'overArgs': require('./overArgs'),
17
+ 'partial': require('./partial'),
18
+ 'partialRight': require('./partialRight'),
19
+ 'rearg': require('./rearg'),
20
+ 'rest': require('./rest'),
21
+ 'spread': require('./spread'),
22
+ 'throttle': require('./throttle'),
23
+ 'unary': require('./unary'),
24
+ 'wrap': require('./wrap')
25
+ };
node_modules/lodash/functions.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFunctions = require('./_baseFunctions'),
2
+ keys = require('./keys');
3
+
4
+ /**
5
+ * Creates an array of function property names from own enumerable properties
6
+ * of `object`.
7
+ *
8
+ * @static
9
+ * @since 0.1.0
10
+ * @memberOf _
11
+ * @category Object
12
+ * @param {Object} object The object to inspect.
13
+ * @returns {Array} Returns the function names.
14
+ * @see _.functionsIn
15
+ * @example
16
+ *
17
+ * function Foo() {
18
+ * this.a = _.constant('a');
19
+ * this.b = _.constant('b');
20
+ * }
21
+ *
22
+ * Foo.prototype.c = _.constant('c');
23
+ *
24
+ * _.functions(new Foo);
25
+ * // => ['a', 'b']
26
+ */
27
+ function functions(object) {
28
+ return object == null ? [] : baseFunctions(object, keys(object));
29
+ }
30
+
31
+ module.exports = functions;
node_modules/lodash/functionsIn.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFunctions = require('./_baseFunctions'),
2
+ keysIn = require('./keysIn');
3
+
4
+ /**
5
+ * Creates an array of function property names from own and inherited
6
+ * enumerable properties of `object`.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 4.0.0
11
+ * @category Object
12
+ * @param {Object} object The object to inspect.
13
+ * @returns {Array} Returns the function names.
14
+ * @see _.functions
15
+ * @example
16
+ *
17
+ * function Foo() {
18
+ * this.a = _.constant('a');
19
+ * this.b = _.constant('b');
20
+ * }
21
+ *
22
+ * Foo.prototype.c = _.constant('c');
23
+ *
24
+ * _.functionsIn(new Foo);
25
+ * // => ['a', 'b', 'c']
26
+ */
27
+ function functionsIn(object) {
28
+ return object == null ? [] : baseFunctions(object, keysIn(object));
29
+ }
30
+
31
+ module.exports = functionsIn;
node_modules/lodash/get.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGet = require('./_baseGet');
2
+
3
+ /**
4
+ * Gets the value at `path` of `object`. If the resolved value is
5
+ * `undefined`, the `defaultValue` is returned in its place.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 3.7.0
10
+ * @category Object
11
+ * @param {Object} object The object to query.
12
+ * @param {Array|string} path The path of the property to get.
13
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
14
+ * @returns {*} Returns the resolved value.
15
+ * @example
16
+ *
17
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
18
+ *
19
+ * _.get(object, 'a[0].b.c');
20
+ * // => 3
21
+ *
22
+ * _.get(object, ['a', '0', 'b', 'c']);
23
+ * // => 3
24
+ *
25
+ * _.get(object, 'a.b.c', 'default');
26
+ * // => 'default'
27
+ */
28
+ function get(object, path, defaultValue) {
29
+ var result = object == null ? undefined : baseGet(object, path);
30
+ return result === undefined ? defaultValue : result;
31
+ }
32
+
33
+ module.exports = get;
node_modules/lodash/groupBy.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssignValue = require('./_baseAssignValue'),
2
+ createAggregator = require('./_createAggregator');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /**
11
+ * Creates an object composed of keys generated from the results of running
12
+ * each element of `collection` thru `iteratee`. The order of grouped values
13
+ * is determined by the order they occur in `collection`. The corresponding
14
+ * value of each key is an array of elements responsible for generating the
15
+ * key. The iteratee is invoked with one argument: (value).
16
+ *
17
+ * @static
18
+ * @memberOf _
19
+ * @since 0.1.0
20
+ * @category Collection
21
+ * @param {Array|Object} collection The collection to iterate over.
22
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
23
+ * @returns {Object} Returns the composed aggregate object.
24
+ * @example
25
+ *
26
+ * _.groupBy([6.1, 4.2, 6.3], Math.floor);
27
+ * // => { '4': [4.2], '6': [6.1, 6.3] }
28
+ *
29
+ * // The `_.property` iteratee shorthand.
30
+ * _.groupBy(['one', 'two', 'three'], 'length');
31
+ * // => { '3': ['one', 'two'], '5': ['three'] }
32
+ */
33
+ var groupBy = createAggregator(function(result, value, key) {
34
+ if (hasOwnProperty.call(result, key)) {
35
+ result[key].push(value);
36
+ } else {
37
+ baseAssignValue(result, key, [value]);
38
+ }
39
+ });
40
+
41
+ module.exports = groupBy;
node_modules/lodash/gt.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGt = require('./_baseGt'),
2
+ createRelationalOperation = require('./_createRelationalOperation');
3
+
4
+ /**
5
+ * Checks if `value` is greater than `other`.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 3.9.0
10
+ * @category Lang
11
+ * @param {*} value The value to compare.
12
+ * @param {*} other The other value to compare.
13
+ * @returns {boolean} Returns `true` if `value` is greater than `other`,
14
+ * else `false`.
15
+ * @see _.lt
16
+ * @example
17
+ *
18
+ * _.gt(3, 1);
19
+ * // => true
20
+ *
21
+ * _.gt(3, 3);
22
+ * // => false
23
+ *
24
+ * _.gt(1, 3);
25
+ * // => false
26
+ */
27
+ var gt = createRelationalOperation(baseGt);
28
+
29
+ module.exports = gt;
node_modules/lodash/gte.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createRelationalOperation = require('./_createRelationalOperation');
2
+
3
+ /**
4
+ * Checks if `value` is greater than or equal to `other`.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 3.9.0
9
+ * @category Lang
10
+ * @param {*} value The value to compare.
11
+ * @param {*} other The other value to compare.
12
+ * @returns {boolean} Returns `true` if `value` is greater than or equal to
13
+ * `other`, else `false`.
14
+ * @see _.lte
15
+ * @example
16
+ *
17
+ * _.gte(3, 1);
18
+ * // => true
19
+ *
20
+ * _.gte(3, 3);
21
+ * // => true
22
+ *
23
+ * _.gte(1, 3);
24
+ * // => false
25
+ */
26
+ var gte = createRelationalOperation(function(value, other) {
27
+ return value >= other;
28
+ });
29
+
30
+ module.exports = gte;
node_modules/lodash/has.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseHas = require('./_baseHas'),
2
+ hasPath = require('./_hasPath');
3
+
4
+ /**
5
+ * Checks if `path` is a direct property of `object`.
6
+ *
7
+ * @static
8
+ * @since 0.1.0
9
+ * @memberOf _
10
+ * @category Object
11
+ * @param {Object} object The object to query.
12
+ * @param {Array|string} path The path to check.
13
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
14
+ * @example
15
+ *
16
+ * var object = { 'a': { 'b': 2 } };
17
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
18
+ *
19
+ * _.has(object, 'a');
20
+ * // => true
21
+ *
22
+ * _.has(object, 'a.b');
23
+ * // => true
24
+ *
25
+ * _.has(object, ['a', 'b']);
26
+ * // => true
27
+ *
28
+ * _.has(other, 'a');
29
+ * // => false
30
+ */
31
+ function has(object, path) {
32
+ return object != null && hasPath(object, path, baseHas);
33
+ }
34
+
35
+ module.exports = has;
node_modules/lodash/hasIn.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseHasIn = require('./_baseHasIn'),
2
+ hasPath = require('./_hasPath');
3
+
4
+ /**
5
+ * Checks if `path` is a direct or inherited property of `object`.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 4.0.0
10
+ * @category Object
11
+ * @param {Object} object The object to query.
12
+ * @param {Array|string} path The path to check.
13
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
14
+ * @example
15
+ *
16
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
17
+ *
18
+ * _.hasIn(object, 'a');
19
+ * // => true
20
+ *
21
+ * _.hasIn(object, 'a.b');
22
+ * // => true
23
+ *
24
+ * _.hasIn(object, ['a', 'b']);
25
+ * // => true
26
+ *
27
+ * _.hasIn(object, 'b');
28
+ * // => false
29
+ */
30
+ function hasIn(object, path) {
31
+ return object != null && hasPath(object, path, baseHasIn);
32
+ }
33
+
34
+ module.exports = hasIn;
node_modules/lodash/head.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the first element of `array`.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 0.1.0
7
+ * @alias first
8
+ * @category Array
9
+ * @param {Array} array The array to query.
10
+ * @returns {*} Returns the first element of `array`.
11
+ * @example
12
+ *
13
+ * _.head([1, 2, 3]);
14
+ * // => 1
15
+ *
16
+ * _.head([]);
17
+ * // => undefined
18
+ */
19
+ function head(array) {
20
+ return (array && array.length) ? array[0] : undefined;
21
+ }
22
+
23
+ module.exports = head;
node_modules/lodash/identity.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * This method returns the first argument it receives.
3
+ *
4
+ * @static
5
+ * @since 0.1.0
6
+ * @memberOf _
7
+ * @category Util
8
+ * @param {*} value Any value.
9
+ * @returns {*} Returns `value`.
10
+ * @example
11
+ *
12
+ * var object = { 'a': 1 };
13
+ *
14
+ * console.log(_.identity(object) === object);
15
+ * // => true
16
+ */
17
+ function identity(value) {
18
+ return value;
19
+ }
20
+
21
+ module.exports = identity;
node_modules/lodash/inRange.js ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseInRange = require('./_baseInRange'),
2
+ toFinite = require('./toFinite'),
3
+ toNumber = require('./toNumber');
4
+
5
+ /**
6
+ * Checks if `n` is between `start` and up to, but not including, `end`. If
7
+ * `end` is not specified, it's set to `start` with `start` then set to `0`.
8
+ * If `start` is greater than `end` the params are swapped to support
9
+ * negative ranges.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 3.3.0
14
+ * @category Number
15
+ * @param {number} number The number to check.
16
+ * @param {number} [start=0] The start of the range.
17
+ * @param {number} end The end of the range.
18
+ * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
19
+ * @see _.range, _.rangeRight
20
+ * @example
21
+ *
22
+ * _.inRange(3, 2, 4);
23
+ * // => true
24
+ *
25
+ * _.inRange(4, 8);
26
+ * // => true
27
+ *
28
+ * _.inRange(4, 2);
29
+ * // => false
30
+ *
31
+ * _.inRange(2, 2);
32
+ * // => false
33
+ *
34
+ * _.inRange(1.2, 2);
35
+ * // => true
36
+ *
37
+ * _.inRange(5.2, 4);
38
+ * // => false
39
+ *
40
+ * _.inRange(-3, -2, -6);
41
+ * // => true
42
+ */
43
+ function inRange(number, start, end) {
44
+ start = toFinite(start);
45
+ if (end === undefined) {
46
+ end = start;
47
+ start = 0;
48
+ } else {
49
+ end = toFinite(end);
50
+ }
51
+ number = toNumber(number);
52
+ return baseInRange(number, start, end);
53
+ }
54
+
55
+ module.exports = inRange;
node_modules/lodash/includes.js ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIndexOf = require('./_baseIndexOf'),
2
+ isArrayLike = require('./isArrayLike'),
3
+ isString = require('./isString'),
4
+ toInteger = require('./toInteger'),
5
+ values = require('./values');
6
+
7
+ /* Built-in method references for those with the same name as other `lodash` methods. */
8
+ var nativeMax = Math.max;
9
+
10
+ /**
11
+ * Checks if `value` is in `collection`. If `collection` is a string, it's
12
+ * checked for a substring of `value`, otherwise
13
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14
+ * is used for equality comparisons. If `fromIndex` is negative, it's used as
15
+ * the offset from the end of `collection`.
16
+ *
17
+ * @static
18
+ * @memberOf _
19
+ * @since 0.1.0
20
+ * @category Collection
21
+ * @param {Array|Object|string} collection The collection to inspect.
22
+ * @param {*} value The value to search for.
23
+ * @param {number} [fromIndex=0] The index to search from.
24
+ * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
25
+ * @returns {boolean} Returns `true` if `value` is found, else `false`.
26
+ * @example
27
+ *
28
+ * _.includes([1, 2, 3], 1);
29
+ * // => true
30
+ *
31
+ * _.includes([1, 2, 3], 1, 2);
32
+ * // => false
33
+ *
34
+ * _.includes({ 'a': 1, 'b': 2 }, 1);
35
+ * // => true
36
+ *
37
+ * _.includes('abcd', 'bc');
38
+ * // => true
39
+ */
40
+ function includes(collection, value, fromIndex, guard) {
41
+ collection = isArrayLike(collection) ? collection : values(collection);
42
+ fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
43
+
44
+ var length = collection.length;
45
+ if (fromIndex < 0) {
46
+ fromIndex = nativeMax(length + fromIndex, 0);
47
+ }
48
+ return isString(collection)
49
+ ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
50
+ : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
51
+ }
52
+
53
+ module.exports = includes;
node_modules/lodash/index.js ADDED
@@ -0,0 +1 @@
 
1
+ module.exports = require('./lodash');
node_modules/lodash/indexOf.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIndexOf = require('./_baseIndexOf'),
2
+ toInteger = require('./toInteger');
3
+
4
+ /* Built-in method references for those with the same name as other `lodash` methods. */
5
+ var nativeMax = Math.max;
6
+
7
+ /**
8
+ * Gets the index at which the first occurrence of `value` is found in `array`
9
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
10
+ * for equality comparisons. If `fromIndex` is negative, it's used as the
11
+ * offset from the end of `array`.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 0.1.0
16
+ * @category Array
17
+ * @param {Array} array The array to inspect.
18
+ * @param {*} value The value to search for.
19
+ * @param {number} [fromIndex=0] The index to search from.
20
+ * @returns {number} Returns the index of the matched value, else `-1`.
21
+ * @example
22
+ *
23
+ * _.indexOf([1, 2, 1, 2], 2);
24
+ * // => 1
25
+ *
26
+ * // Search from the `fromIndex`.
27
+ * _.indexOf([1, 2, 1, 2], 2, 2);
28
+ * // => 3
29
+ */
30
+ function indexOf(array, value, fromIndex) {
31
+ var length = array == null ? 0 : array.length;
32
+ if (!length) {
33
+ return -1;
34
+ }
35
+ var index = fromIndex == null ? 0 : toInteger(fromIndex);
36
+ if (index < 0) {
37
+ index = nativeMax(length + index, 0);
38
+ }
39
+ return baseIndexOf(array, value, index);
40
+ }
41
+
42
+ module.exports = indexOf;
node_modules/lodash/initial.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseSlice = require('./_baseSlice');
2
+
3
+ /**
4
+ * Gets all but the last element of `array`.
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 0.1.0
9
+ * @category Array
10
+ * @param {Array} array The array to query.
11
+ * @returns {Array} Returns the slice of `array`.
12
+ * @example
13
+ *
14
+ * _.initial([1, 2, 3]);
15
+ * // => [1, 2]
16
+ */
17
+ function initial(array) {
18
+ var length = array == null ? 0 : array.length;
19
+ return length ? baseSlice(array, 0, -1) : [];
20
+ }
21
+
22
+ module.exports = initial;
node_modules/lodash/intersection.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap'),
2
+ baseIntersection = require('./_baseIntersection'),
3
+ baseRest = require('./_baseRest'),
4
+ castArrayLikeObject = require('./_castArrayLikeObject');
5
+
6
+ /**
7
+ * Creates an array of unique values that are included in all given arrays
8
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
9
+ * for equality comparisons. The order and references of result values are
10
+ * determined by the first array.
11
+ *
12
+ * @static
13
+ * @memberOf _
14
+ * @since 0.1.0
15
+ * @category Array
16
+ * @param {...Array} [arrays] The arrays to inspect.
17
+ * @returns {Array} Returns the new array of intersecting values.
18
+ * @example
19
+ *
20
+ * _.intersection([2, 1], [2, 3]);
21
+ * // => [2]
22
+ */
23
+ var intersection = baseRest(function(arrays) {
24
+ var mapped = arrayMap(arrays, castArrayLikeObject);
25
+ return (mapped.length && mapped[0] === arrays[0])
26
+ ? baseIntersection(mapped)
27
+ : [];
28
+ });
29
+
30
+ module.exports = intersection;
node_modules/lodash/intersectionBy.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap'),
2
+ baseIntersection = require('./_baseIntersection'),
3
+ baseIteratee = require('./_baseIteratee'),
4
+ baseRest = require('./_baseRest'),
5
+ castArrayLikeObject = require('./_castArrayLikeObject'),
6
+ last = require('./last');
7
+
8
+ /**
9
+ * This method is like `_.intersection` except that it accepts `iteratee`
10
+ * which is invoked for each element of each `arrays` to generate the criterion
11
+ * by which they're compared. The order and references of result values are
12
+ * determined by the first array. The iteratee is invoked with one argument:
13
+ * (value).
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 4.0.0
18
+ * @category Array
19
+ * @param {...Array} [arrays] The arrays to inspect.
20
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
21
+ * @returns {Array} Returns the new array of intersecting values.
22
+ * @example
23
+ *
24
+ * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
25
+ * // => [2.1]
26
+ *
27
+ * // The `_.property` iteratee shorthand.
28
+ * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
29
+ * // => [{ 'x': 1 }]
30
+ */
31
+ var intersectionBy = baseRest(function(arrays) {
32
+ var iteratee = last(arrays),
33
+ mapped = arrayMap(arrays, castArrayLikeObject);
34
+
35
+ if (iteratee === last(mapped)) {
36
+ iteratee = undefined;
37
+ } else {
38
+ mapped.pop();
39
+ }
40
+ return (mapped.length && mapped[0] === arrays[0])
41
+ ? baseIntersection(mapped, baseIteratee(iteratee, 2))
42
+ : [];
43
+ });
44
+
45
+ module.exports = intersectionBy;
node_modules/lodash/intersectionWith.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayMap = require('./_arrayMap'),
2
+ baseIntersection = require('./_baseIntersection'),
3
+ baseRest = require('./_baseRest'),
4
+ castArrayLikeObject = require('./_castArrayLikeObject'),
5
+ last = require('./last');
6
+
7
+ /**
8
+ * This method is like `_.intersection` except that it accepts `comparator`
9
+ * which is invoked to compare elements of `arrays`. The order and references
10
+ * of result values are determined by the first array. The comparator is
11
+ * invoked with two arguments: (arrVal, othVal).
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 4.0.0
16
+ * @category Array
17
+ * @param {...Array} [arrays] The arrays to inspect.
18
+ * @param {Function} [comparator] The comparator invoked per element.
19
+ * @returns {Array} Returns the new array of intersecting values.
20
+ * @example
21
+ *
22
+ * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
23
+ * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
24
+ *
25
+ * _.intersectionWith(objects, others, _.isEqual);
26
+ * // => [{ 'x': 1, 'y': 2 }]
27
+ */
28
+ var intersectionWith = baseRest(function(arrays) {
29
+ var comparator = last(arrays),
30
+ mapped = arrayMap(arrays, castArrayLikeObject);
31
+
32
+ comparator = typeof comparator == 'function' ? comparator : undefined;
33
+ if (comparator) {
34
+ mapped.pop();
35
+ }
36
+ return (mapped.length && mapped[0] === arrays[0])
37
+ ? baseIntersection(mapped, undefined, comparator)
38
+ : [];
39
+ });
40
+
41
+ module.exports = intersectionWith;
node_modules/lodash/invert.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var constant = require('./constant'),
2
+ createInverter = require('./_createInverter'),
3
+ identity = require('./identity');
4
+
5
+ /** Used for built-in method references. */
6
+ var objectProto = Object.prototype;
7
+
8
+ /**
9
+ * Used to resolve the
10
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11
+ * of values.
12
+ */
13
+ var nativeObjectToString = objectProto.toString;
14
+
15
+ /**
16
+ * Creates an object composed of the inverted keys and values of `object`.
17
+ * If `object` contains duplicate values, subsequent values overwrite
18
+ * property assignments of previous values.
19
+ *
20
+ * @static
21
+ * @memberOf _
22
+ * @since 0.7.0
23
+ * @category Object
24
+ * @param {Object} object The object to invert.
25
+ * @returns {Object} Returns the new inverted object.
26
+ * @example
27
+ *
28
+ * var object = { 'a': 1, 'b': 2, 'c': 1 };
29
+ *
30
+ * _.invert(object);
31
+ * // => { '1': 'c', '2': 'b' }
32
+ */
33
+ var invert = createInverter(function(result, value, key) {
34
+ if (value != null &&
35
+ typeof value.toString != 'function') {
36
+ value = nativeObjectToString.call(value);
37
+ }
38
+
39
+ result[value] = key;
40
+ }, constant(identity));
41
+
42
+ module.exports = invert;
node_modules/lodash/invertBy.js ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIteratee = require('./_baseIteratee'),
2
+ createInverter = require('./_createInverter');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /**
11
+ * Used to resolve the
12
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
13
+ * of values.
14
+ */
15
+ var nativeObjectToString = objectProto.toString;
16
+
17
+ /**
18
+ * This method is like `_.invert` except that the inverted object is generated
19
+ * from the results of running each element of `object` thru `iteratee`. The
20
+ * corresponding inverted value of each inverted key is an array of keys
21
+ * responsible for generating the inverted value. The iteratee is invoked
22
+ * with one argument: (value).
23
+ *
24
+ * @static
25
+ * @memberOf _
26
+ * @since 4.1.0
27
+ * @category Object
28
+ * @param {Object} object The object to invert.
29
+ * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
30
+ * @returns {Object} Returns the new inverted object.
31
+ * @example
32
+ *
33
+ * var object = { 'a': 1, 'b': 2, 'c': 1 };
34
+ *
35
+ * _.invertBy(object);
36
+ * // => { '1': ['a', 'c'], '2': ['b'] }
37
+ *
38
+ * _.invertBy(object, function(value) {
39
+ * return 'group' + value;
40
+ * });
41
+ * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
42
+ */
43
+ var invertBy = createInverter(function(result, value, key) {
44
+ if (value != null &&
45
+ typeof value.toString != 'function') {
46
+ value = nativeObjectToString.call(value);
47
+ }
48
+
49
+ if (hasOwnProperty.call(result, value)) {
50
+ result[value].push(key);
51
+ } else {
52
+ result[value] = [key];
53
+ }
54
+ }, baseIteratee);
55
+
56
+ module.exports = invertBy;
node_modules/lodash/invoke.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseInvoke = require('./_baseInvoke'),
2
+ baseRest = require('./_baseRest');
3
+
4
+ /**
5
+ * Invokes the method at `path` of `object`.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 4.0.0
10
+ * @category Object
11
+ * @param {Object} object The object to query.
12
+ * @param {Array|string} path The path of the method to invoke.
13
+ * @param {...*} [args] The arguments to invoke the method with.
14
+ * @returns {*} Returns the result of the invoked method.
15
+ * @example
16
+ *
17
+ * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
18
+ *
19
+ * _.invoke(object, 'a[0].b.c.slice', 1, 3);
20
+ * // => [2, 3]
21
+ */
22
+ var invoke = baseRest(baseInvoke);
23
+
24
+ module.exports = invoke;
node_modules/lodash/invokeMap.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var apply = require('./_apply'),
2
+ baseEach = require('./_baseEach'),
3
+ baseInvoke = require('./_baseInvoke'),
4
+ baseRest = require('./_baseRest'),
5
+ isArrayLike = require('./isArrayLike');
6
+
7
+ /**
8
+ * Invokes the method at `path` of each element in `collection`, returning
9
+ * an array of the results of each invoked method. Any additional arguments
10
+ * are provided to each invoked method. If `path` is a function, it's invoked
11
+ * for, and `this` bound to, each element in `collection`.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 4.0.0
16
+ * @category Collection
17
+ * @param {Array|Object} collection The collection to iterate over.
18
+ * @param {Array|Function|string} path The path of the method to invoke or
19
+ * the function invoked per iteration.
20
+ * @param {...*} [args] The arguments to invoke each method with.
21
+ * @returns {Array} Returns the array of results.
22
+ * @example
23
+ *
24
+ * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
25
+ * // => [[1, 5, 7], [1, 2, 3]]
26
+ *
27
+ * _.invokeMap([123, 456], String.prototype.split, '');
28
+ * // => [['1', '2', '3'], ['4', '5', '6']]
29
+ */
30
+ var invokeMap = baseRest(function(collection, path, args) {
31
+ var index = -1,
32
+ isFunc = typeof path == 'function',
33
+ result = isArrayLike(collection) ? Array(collection.length) : [];
34
+
35
+ baseEach(collection, function(value) {
36
+ result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
37
+ });
38
+ return result;
39
+ });
40
+
41
+ module.exports = invokeMap;
node_modules/lodash/isArguments.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsArguments = require('./_baseIsArguments'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** Used for built-in method references. */
5
+ var objectProto = Object.prototype;
6
+
7
+ /** Used to check objects for own properties. */
8
+ var hasOwnProperty = objectProto.hasOwnProperty;
9
+
10
+ /** Built-in value references. */
11
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
12
+
13
+ /**
14
+ * Checks if `value` is likely an `arguments` object.
15
+ *
16
+ * @static
17
+ * @memberOf _
18
+ * @since 0.1.0
19
+ * @category Lang
20
+ * @param {*} value The value to check.
21
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
22
+ * else `false`.
23
+ * @example
24
+ *
25
+ * _.isArguments(function() { return arguments; }());
26
+ * // => true
27
+ *
28
+ * _.isArguments([1, 2, 3]);
29
+ * // => false
30
+ */
31
+ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
32
+ return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
33
+ !propertyIsEnumerable.call(value, 'callee');
34
+ };
35
+
36
+ module.exports = isArguments;
node_modules/lodash/isArray.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is classified as an `Array` object.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 0.1.0
7
+ * @category Lang
8
+ * @param {*} value The value to check.
9
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
10
+ * @example
11
+ *
12
+ * _.isArray([1, 2, 3]);
13
+ * // => true
14
+ *
15
+ * _.isArray(document.body.children);
16
+ * // => false
17
+ *
18
+ * _.isArray('abc');
19
+ * // => false
20
+ *
21
+ * _.isArray(_.noop);
22
+ * // => false
23
+ */
24
+ var isArray = Array.isArray;
25
+
26
+ module.exports = isArray;
node_modules/lodash/isArrayBuffer.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsArrayBuffer = require('./_baseIsArrayBuffer'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;
7
+
8
+ /**
9
+ * Checks if `value` is classified as an `ArrayBuffer` object.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.3.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
17
+ * @example
18
+ *
19
+ * _.isArrayBuffer(new ArrayBuffer(2));
20
+ * // => true
21
+ *
22
+ * _.isArrayBuffer(new Array(2));
23
+ * // => false
24
+ */
25
+ var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
26
+
27
+ module.exports = isArrayBuffer;
node_modules/lodash/isArrayLike.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isFunction = require('./isFunction'),
2
+ isLength = require('./isLength');
3
+
4
+ /**
5
+ * Checks if `value` is array-like. A value is considered array-like if it's
6
+ * not a function and has a `value.length` that's an integer greater than or
7
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.0.0
12
+ * @category Lang
13
+ * @param {*} value The value to check.
14
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
15
+ * @example
16
+ *
17
+ * _.isArrayLike([1, 2, 3]);
18
+ * // => true
19
+ *
20
+ * _.isArrayLike(document.body.children);
21
+ * // => true
22
+ *
23
+ * _.isArrayLike('abc');
24
+ * // => true
25
+ *
26
+ * _.isArrayLike(_.noop);
27
+ * // => false
28
+ */
29
+ function isArrayLike(value) {
30
+ return value != null && isLength(value.length) && !isFunction(value);
31
+ }
32
+
33
+ module.exports = isArrayLike;
node_modules/lodash/isArrayLikeObject.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isArrayLike = require('./isArrayLike'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /**
5
+ * This method is like `_.isArrayLike` except that it also checks if `value`
6
+ * is an object.
7
+ *
8
+ * @static
9
+ * @memberOf _
10
+ * @since 4.0.0
11
+ * @category Lang
12
+ * @param {*} value The value to check.
13
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
14
+ * else `false`.
15
+ * @example
16
+ *
17
+ * _.isArrayLikeObject([1, 2, 3]);
18
+ * // => true
19
+ *
20
+ * _.isArrayLikeObject(document.body.children);
21
+ * // => true
22
+ *
23
+ * _.isArrayLikeObject('abc');
24
+ * // => false
25
+ *
26
+ * _.isArrayLikeObject(_.noop);
27
+ * // => false
28
+ */
29
+ function isArrayLikeObject(value) {
30
+ return isObjectLike(value) && isArrayLike(value);
31
+ }
32
+
33
+ module.exports = isArrayLikeObject;
node_modules/lodash/isBoolean.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var boolTag = '[object Boolean]';
6
+
7
+ /**
8
+ * Checks if `value` is classified as a boolean primitive or object.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 0.1.0
13
+ * @category Lang
14
+ * @param {*} value The value to check.
15
+ * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
16
+ * @example
17
+ *
18
+ * _.isBoolean(false);
19
+ * // => true
20
+ *
21
+ * _.isBoolean(null);
22
+ * // => false
23
+ */
24
+ function isBoolean(value) {
25
+ return value === true || value === false ||
26
+ (isObjectLike(value) && baseGetTag(value) == boolTag);
27
+ }
28
+
29
+ module.exports = isBoolean;
node_modules/lodash/isBuffer.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var root = require('./_root'),
2
+ stubFalse = require('./stubFalse');
3
+
4
+ /** Detect free variable `exports`. */
5
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
6
+
7
+ /** Detect free variable `module`. */
8
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
9
+
10
+ /** Detect the popular CommonJS extension `module.exports`. */
11
+ var moduleExports = freeModule && freeModule.exports === freeExports;
12
+
13
+ /** Built-in value references. */
14
+ var Buffer = moduleExports ? root.Buffer : undefined;
15
+
16
+ /* Built-in method references for those with the same name as other `lodash` methods. */
17
+ var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
18
+
19
+ /**
20
+ * Checks if `value` is a buffer.
21
+ *
22
+ * @static
23
+ * @memberOf _
24
+ * @since 4.3.0
25
+ * @category Lang
26
+ * @param {*} value The value to check.
27
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
28
+ * @example
29
+ *
30
+ * _.isBuffer(new Buffer(2));
31
+ * // => true
32
+ *
33
+ * _.isBuffer(new Uint8Array(2));
34
+ * // => false
35
+ */
36
+ var isBuffer = nativeIsBuffer || stubFalse;
37
+
38
+ module.exports = isBuffer;
node_modules/lodash/isDate.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsDate = require('./_baseIsDate'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsDate = nodeUtil && nodeUtil.isDate;
7
+
8
+ /**
9
+ * Checks if `value` is classified as a `Date` object.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 0.1.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
17
+ * @example
18
+ *
19
+ * _.isDate(new Date);
20
+ * // => true
21
+ *
22
+ * _.isDate('Mon April 23 2012');
23
+ * // => false
24
+ */
25
+ var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
26
+
27
+ module.exports = isDate;
node_modules/lodash/isElement.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isObjectLike = require('./isObjectLike'),
2
+ isPlainObject = require('./isPlainObject');
3
+
4
+ /**
5
+ * Checks if `value` is likely a DOM element.
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 0.1.0
10
+ * @category Lang
11
+ * @param {*} value The value to check.
12
+ * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
13
+ * @example
14
+ *
15
+ * _.isElement(document.body);
16
+ * // => true
17
+ *
18
+ * _.isElement('<body>');
19
+ * // => false
20
+ */
21
+ function isElement(value) {
22
+ return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
23
+ }
24
+
25
+ module.exports = isElement;
node_modules/lodash/isEmpty.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseKeys = require('./_baseKeys'),
2
+ getTag = require('./_getTag'),
3
+ isArguments = require('./isArguments'),
4
+ isArray = require('./isArray'),
5
+ isArrayLike = require('./isArrayLike'),
6
+ isBuffer = require('./isBuffer'),
7
+ isPrototype = require('./_isPrototype'),
8
+ isTypedArray = require('./isTypedArray');
9
+
10
+ /** `Object#toString` result references. */
11
+ var mapTag = '[object Map]',
12
+ setTag = '[object Set]';
13
+
14
+ /** Used for built-in method references. */
15
+ var objectProto = Object.prototype;
16
+
17
+ /** Used to check objects for own properties. */
18
+ var hasOwnProperty = objectProto.hasOwnProperty;
19
+
20
+ /**
21
+ * Checks if `value` is an empty object, collection, map, or set.
22
+ *
23
+ * Objects are considered empty if they have no own enumerable string keyed
24
+ * properties.
25
+ *
26
+ * Array-like values such as `arguments` objects, arrays, buffers, strings, or
27
+ * jQuery-like collections are considered empty if they have a `length` of `0`.
28
+ * Similarly, maps and sets are considered empty if they have a `size` of `0`.
29
+ *
30
+ * @static
31
+ * @memberOf _
32
+ * @since 0.1.0
33
+ * @category Lang
34
+ * @param {*} value The value to check.
35
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
36
+ * @example
37
+ *
38
+ * _.isEmpty(null);
39
+ * // => true
40
+ *
41
+ * _.isEmpty(true);
42
+ * // => true
43
+ *
44
+ * _.isEmpty(1);
45
+ * // => true
46
+ *
47
+ * _.isEmpty([1, 2, 3]);
48
+ * // => false
49
+ *
50
+ * _.isEmpty({ 'a': 1 });
51
+ * // => false
52
+ */
53
+ function isEmpty(value) {
54
+ if (value == null) {
55
+ return true;
56
+ }
57
+ if (isArrayLike(value) &&
58
+ (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
59
+ isBuffer(value) || isTypedArray(value) || isArguments(value))) {
60
+ return !value.length;
61
+ }
62
+ var tag = getTag(value);
63
+ if (tag == mapTag || tag == setTag) {
64
+ return !value.size;
65
+ }
66
+ if (isPrototype(value)) {
67
+ return !baseKeys(value).length;
68
+ }
69
+ for (var key in value) {
70
+ if (hasOwnProperty.call(value, key)) {
71
+ return false;
72
+ }
73
+ }
74
+ return true;
75
+ }
76
+
77
+ module.exports = isEmpty;
node_modules/lodash/isEqual.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsEqual = require('./_baseIsEqual');
2
+
3
+ /**
4
+ * Performs a deep comparison between two values to determine if they are
5
+ * equivalent.
6
+ *
7
+ * **Note:** This method supports comparing arrays, array buffers, booleans,
8
+ * date objects, error objects, maps, numbers, `Object` objects, regexes,
9
+ * sets, strings, symbols, and typed arrays. `Object` objects are compared
10
+ * by their own, not inherited, enumerable properties. Functions and DOM
11
+ * nodes are compared by strict equality, i.e. `===`.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 0.1.0
16
+ * @category Lang
17
+ * @param {*} value The value to compare.
18
+ * @param {*} other The other value to compare.
19
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
20
+ * @example
21
+ *
22
+ * var object = { 'a': 1 };
23
+ * var other = { 'a': 1 };
24
+ *
25
+ * _.isEqual(object, other);
26
+ * // => true
27
+ *
28
+ * object === other;
29
+ * // => false
30
+ */
31
+ function isEqual(value, other) {
32
+ return baseIsEqual(value, other);
33
+ }
34
+
35
+ module.exports = isEqual;
node_modules/lodash/isEqualWith.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsEqual = require('./_baseIsEqual');
2
+
3
+ /**
4
+ * This method is like `_.isEqual` except that it accepts `customizer` which
5
+ * is invoked to compare values. If `customizer` returns `undefined`, comparisons
6
+ * are handled by the method instead. The `customizer` is invoked with up to
7
+ * six arguments: (objValue, othValue [, index|key, object, other, stack]).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.0.0
12
+ * @category Lang
13
+ * @param {*} value The value to compare.
14
+ * @param {*} other The other value to compare.
15
+ * @param {Function} [customizer] The function to customize comparisons.
16
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17
+ * @example
18
+ *
19
+ * function isGreeting(value) {
20
+ * return /^h(?:i|ello)$/.test(value);
21
+ * }
22
+ *
23
+ * function customizer(objValue, othValue) {
24
+ * if (isGreeting(objValue) && isGreeting(othValue)) {
25
+ * return true;
26
+ * }
27
+ * }
28
+ *
29
+ * var array = ['hello', 'goodbye'];
30
+ * var other = ['hi', 'goodbye'];
31
+ *
32
+ * _.isEqualWith(array, other, customizer);
33
+ * // => true
34
+ */
35
+ function isEqualWith(value, other, customizer) {
36
+ customizer = typeof customizer == 'function' ? customizer : undefined;
37
+ var result = customizer ? customizer(value, other) : undefined;
38
+ return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
39
+ }
40
+
41
+ module.exports = isEqualWith;
node_modules/lodash/isError.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike'),
3
+ isPlainObject = require('./isPlainObject');
4
+
5
+ /** `Object#toString` result references. */
6
+ var domExcTag = '[object DOMException]',
7
+ errorTag = '[object Error]';
8
+
9
+ /**
10
+ * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
11
+ * `SyntaxError`, `TypeError`, or `URIError` object.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 3.0.0
16
+ * @category Lang
17
+ * @param {*} value The value to check.
18
+ * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
19
+ * @example
20
+ *
21
+ * _.isError(new Error);
22
+ * // => true
23
+ *
24
+ * _.isError(Error);
25
+ * // => false
26
+ */
27
+ function isError(value) {
28
+ if (!isObjectLike(value)) {
29
+ return false;
30
+ }
31
+ var tag = baseGetTag(value);
32
+ return tag == errorTag || tag == domExcTag ||
33
+ (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
34
+ }
35
+
36
+ module.exports = isError;
node_modules/lodash/isFinite.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var root = require('./_root');
2
+
3
+ /* Built-in method references for those with the same name as other `lodash` methods. */
4
+ var nativeIsFinite = root.isFinite;
5
+
6
+ /**
7
+ * Checks if `value` is a finite primitive number.
8
+ *
9
+ * **Note:** This method is based on
10
+ * [`Number.isFinite`](https://mdn.io/Number/isFinite).
11
+ *
12
+ * @static
13
+ * @memberOf _
14
+ * @since 0.1.0
15
+ * @category Lang
16
+ * @param {*} value The value to check.
17
+ * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
18
+ * @example
19
+ *
20
+ * _.isFinite(3);
21
+ * // => true
22
+ *
23
+ * _.isFinite(Number.MIN_VALUE);
24
+ * // => true
25
+ *
26
+ * _.isFinite(Infinity);
27
+ * // => false
28
+ *
29
+ * _.isFinite('3');
30
+ * // => false
31
+ */
32
+ function isFinite(value) {
33
+ return typeof value == 'number' && nativeIsFinite(value);
34
+ }
35
+
36
+ module.exports = isFinite;
node_modules/lodash/isFunction.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObject = require('./isObject');
3
+
4
+ /** `Object#toString` result references. */
5
+ var asyncTag = '[object AsyncFunction]',
6
+ funcTag = '[object Function]',
7
+ genTag = '[object GeneratorFunction]',
8
+ proxyTag = '[object Proxy]';
9
+
10
+ /**
11
+ * Checks if `value` is classified as a `Function` object.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 0.1.0
16
+ * @category Lang
17
+ * @param {*} value The value to check.
18
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
19
+ * @example
20
+ *
21
+ * _.isFunction(_);
22
+ * // => true
23
+ *
24
+ * _.isFunction(/abc/);
25
+ * // => false
26
+ */
27
+ function isFunction(value) {
28
+ if (!isObject(value)) {
29
+ return false;
30
+ }
31
+ // The use of `Object#toString` avoids issues with the `typeof` operator
32
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
33
+ var tag = baseGetTag(value);
34
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
35
+ }
36
+
37
+ module.exports = isFunction;
node_modules/lodash/isInteger.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var toInteger = require('./toInteger');
2
+
3
+ /**
4
+ * Checks if `value` is an integer.
5
+ *
6
+ * **Note:** This method is based on
7
+ * [`Number.isInteger`](https://mdn.io/Number/isInteger).
8
+ *
9
+ * @static
10
+ * @memberOf _
11
+ * @since 4.0.0
12
+ * @category Lang
13
+ * @param {*} value The value to check.
14
+ * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
15
+ * @example
16
+ *
17
+ * _.isInteger(3);
18
+ * // => true
19
+ *
20
+ * _.isInteger(Number.MIN_VALUE);
21
+ * // => false
22
+ *
23
+ * _.isInteger(Infinity);
24
+ * // => false
25
+ *
26
+ * _.isInteger('3');
27
+ * // => false
28
+ */
29
+ function isInteger(value) {
30
+ return typeof value == 'number' && value == toInteger(value);
31
+ }
32
+
33
+ module.exports = isInteger;
node_modules/lodash/isLength.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used as references for various `Number` constants. */
2
+ var MAX_SAFE_INTEGER = 9007199254740991;
3
+
4
+ /**
5
+ * Checks if `value` is a valid array-like length.
6
+ *
7
+ * **Note:** This method is loosely based on
8
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Lang
14
+ * @param {*} value The value to check.
15
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
16
+ * @example
17
+ *
18
+ * _.isLength(3);
19
+ * // => true
20
+ *
21
+ * _.isLength(Number.MIN_VALUE);
22
+ * // => false
23
+ *
24
+ * _.isLength(Infinity);
25
+ * // => false
26
+ *
27
+ * _.isLength('3');
28
+ * // => false
29
+ */
30
+ function isLength(value) {
31
+ return typeof value == 'number' &&
32
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
33
+ }
34
+
35
+ module.exports = isLength;
node_modules/lodash/isMap.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsMap = require('./_baseIsMap'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsMap = nodeUtil && nodeUtil.isMap;
7
+
8
+ /**
9
+ * Checks if `value` is classified as a `Map` object.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.3.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
17
+ * @example
18
+ *
19
+ * _.isMap(new Map);
20
+ * // => true
21
+ *
22
+ * _.isMap(new WeakMap);
23
+ * // => false
24
+ */
25
+ var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
26
+
27
+ module.exports = isMap;
node_modules/lodash/isMatch.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsMatch = require('./_baseIsMatch'),
2
+ getMatchData = require('./_getMatchData');
3
+
4
+ /**
5
+ * Performs a partial deep comparison between `object` and `source` to
6
+ * determine if `object` contains equivalent property values.
7
+ *
8
+ * **Note:** This method is equivalent to `_.matches` when `source` is
9
+ * partially applied.
10
+ *
11
+ * Partial comparisons will match empty array and empty object `source`
12
+ * values against any array or object value, respectively. See `_.isEqual`
13
+ * for a list of supported value comparisons.
14
+ *
15
+ * @static
16
+ * @memberOf _
17
+ * @since 3.0.0
18
+ * @category Lang
19
+ * @param {Object} object The object to inspect.
20
+ * @param {Object} source The object of property values to match.
21
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
22
+ * @example
23
+ *
24
+ * var object = { 'a': 1, 'b': 2 };
25
+ *
26
+ * _.isMatch(object, { 'b': 2 });
27
+ * // => true
28
+ *
29
+ * _.isMatch(object, { 'b': 1 });
30
+ * // => false
31
+ */
32
+ function isMatch(object, source) {
33
+ return object === source || baseIsMatch(object, source, getMatchData(source));
34
+ }
35
+
36
+ module.exports = isMatch;
node_modules/lodash/isMatchWith.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsMatch = require('./_baseIsMatch'),
2
+ getMatchData = require('./_getMatchData');
3
+
4
+ /**
5
+ * This method is like `_.isMatch` except that it accepts `customizer` which
6
+ * is invoked to compare values. If `customizer` returns `undefined`, comparisons
7
+ * are handled by the method instead. The `customizer` is invoked with five
8
+ * arguments: (objValue, srcValue, index|key, object, source).
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Lang
14
+ * @param {Object} object The object to inspect.
15
+ * @param {Object} source The object of property values to match.
16
+ * @param {Function} [customizer] The function to customize comparisons.
17
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
18
+ * @example
19
+ *
20
+ * function isGreeting(value) {
21
+ * return /^h(?:i|ello)$/.test(value);
22
+ * }
23
+ *
24
+ * function customizer(objValue, srcValue) {
25
+ * if (isGreeting(objValue) && isGreeting(srcValue)) {
26
+ * return true;
27
+ * }
28
+ * }
29
+ *
30
+ * var object = { 'greeting': 'hello' };
31
+ * var source = { 'greeting': 'hi' };
32
+ *
33
+ * _.isMatchWith(object, source, customizer);
34
+ * // => true
35
+ */
36
+ function isMatchWith(object, source, customizer) {
37
+ customizer = typeof customizer == 'function' ? customizer : undefined;
38
+ return baseIsMatch(object, source, getMatchData(source), customizer);
39
+ }
40
+
41
+ module.exports = isMatchWith;
node_modules/lodash/isNaN.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isNumber = require('./isNumber');
2
+
3
+ /**
4
+ * Checks if `value` is `NaN`.
5
+ *
6
+ * **Note:** This method is based on
7
+ * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
8
+ * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
9
+ * `undefined` and other non-number values.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 0.1.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
17
+ * @example
18
+ *
19
+ * _.isNaN(NaN);
20
+ * // => true
21
+ *
22
+ * _.isNaN(new Number(NaN));
23
+ * // => true
24
+ *
25
+ * isNaN(undefined);
26
+ * // => true
27
+ *
28
+ * _.isNaN(undefined);
29
+ * // => false
30
+ */
31
+ function isNaN(value) {
32
+ // An `NaN` primitive is the only value that is not equal to itself.
33
+ // Perform the `toStringTag` check first to avoid errors with some
34
+ // ActiveX objects in IE.
35
+ return isNumber(value) && value != +value;
36
+ }
37
+
38
+ module.exports = isNaN;
node_modules/lodash/isNative.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsNative = require('./_baseIsNative'),
2
+ isMaskable = require('./_isMaskable');
3
+
4
+ /** Error message constants. */
5
+ var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';
6
+
7
+ /**
8
+ * Checks if `value` is a pristine native function.
9
+ *
10
+ * **Note:** This method can't reliably detect native functions in the presence
11
+ * of the core-js package because core-js circumvents this kind of detection.
12
+ * Despite multiple requests, the core-js maintainer has made it clear: any
13
+ * attempt to fix the detection will be obstructed. As a result, we're left
14
+ * with little choice but to throw an error. Unfortunately, this also affects
15
+ * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
16
+ * which rely on core-js.
17
+ *
18
+ * @static
19
+ * @memberOf _
20
+ * @since 3.0.0
21
+ * @category Lang
22
+ * @param {*} value The value to check.
23
+ * @returns {boolean} Returns `true` if `value` is a native function,
24
+ * else `false`.
25
+ * @example
26
+ *
27
+ * _.isNative(Array.prototype.push);
28
+ * // => true
29
+ *
30
+ * _.isNative(_);
31
+ * // => false
32
+ */
33
+ function isNative(value) {
34
+ if (isMaskable(value)) {
35
+ throw new Error(CORE_ERROR_TEXT);
36
+ }
37
+ return baseIsNative(value);
38
+ }
39
+
40
+ module.exports = isNative;
node_modules/lodash/isNil.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is `null` or `undefined`.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 4.0.0
7
+ * @category Lang
8
+ * @param {*} value The value to check.
9
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
10
+ * @example
11
+ *
12
+ * _.isNil(null);
13
+ * // => true
14
+ *
15
+ * _.isNil(void 0);
16
+ * // => true
17
+ *
18
+ * _.isNil(NaN);
19
+ * // => false
20
+ */
21
+ function isNil(value) {
22
+ return value == null;
23
+ }
24
+
25
+ module.exports = isNil;
node_modules/lodash/isNull.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is `null`.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 0.1.0
7
+ * @category Lang
8
+ * @param {*} value The value to check.
9
+ * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
10
+ * @example
11
+ *
12
+ * _.isNull(null);
13
+ * // => true
14
+ *
15
+ * _.isNull(void 0);
16
+ * // => false
17
+ */
18
+ function isNull(value) {
19
+ return value === null;
20
+ }
21
+
22
+ module.exports = isNull;
node_modules/lodash/isNumber.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var numberTag = '[object Number]';
6
+
7
+ /**
8
+ * Checks if `value` is classified as a `Number` primitive or object.
9
+ *
10
+ * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
11
+ * classified as numbers, use the `_.isFinite` method.
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 0.1.0
16
+ * @category Lang
17
+ * @param {*} value The value to check.
18
+ * @returns {boolean} Returns `true` if `value` is a number, else `false`.
19
+ * @example
20
+ *
21
+ * _.isNumber(3);
22
+ * // => true
23
+ *
24
+ * _.isNumber(Number.MIN_VALUE);
25
+ * // => true
26
+ *
27
+ * _.isNumber(Infinity);
28
+ * // => true
29
+ *
30
+ * _.isNumber('3');
31
+ * // => false
32
+ */
33
+ function isNumber(value) {
34
+ return typeof value == 'number' ||
35
+ (isObjectLike(value) && baseGetTag(value) == numberTag);
36
+ }
37
+
38
+ module.exports = isNumber;
node_modules/lodash/isObject.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is the
3
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
4
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
5
+ *
6
+ * @static
7
+ * @memberOf _
8
+ * @since 0.1.0
9
+ * @category Lang
10
+ * @param {*} value The value to check.
11
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
12
+ * @example
13
+ *
14
+ * _.isObject({});
15
+ * // => true
16
+ *
17
+ * _.isObject([1, 2, 3]);
18
+ * // => true
19
+ *
20
+ * _.isObject(_.noop);
21
+ * // => true
22
+ *
23
+ * _.isObject(null);
24
+ * // => false
25
+ */
26
+ function isObject(value) {
27
+ var type = typeof value;
28
+ return value != null && (type == 'object' || type == 'function');
29
+ }
30
+
31
+ module.exports = isObject;
node_modules/lodash/isObjectLike.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
3
+ * and has a `typeof` result of "object".
4
+ *
5
+ * @static
6
+ * @memberOf _
7
+ * @since 4.0.0
8
+ * @category Lang
9
+ * @param {*} value The value to check.
10
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
11
+ * @example
12
+ *
13
+ * _.isObjectLike({});
14
+ * // => true
15
+ *
16
+ * _.isObjectLike([1, 2, 3]);
17
+ * // => true
18
+ *
19
+ * _.isObjectLike(_.noop);
20
+ * // => false
21
+ *
22
+ * _.isObjectLike(null);
23
+ * // => false
24
+ */
25
+ function isObjectLike(value) {
26
+ return value != null && typeof value == 'object';
27
+ }
28
+
29
+ module.exports = isObjectLike;
node_modules/lodash/isPlainObject.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ getPrototype = require('./_getPrototype'),
3
+ isObjectLike = require('./isObjectLike');
4
+
5
+ /** `Object#toString` result references. */
6
+ var objectTag = '[object Object]';
7
+
8
+ /** Used for built-in method references. */
9
+ var funcProto = Function.prototype,
10
+ objectProto = Object.prototype;
11
+
12
+ /** Used to resolve the decompiled source of functions. */
13
+ var funcToString = funcProto.toString;
14
+
15
+ /** Used to check objects for own properties. */
16
+ var hasOwnProperty = objectProto.hasOwnProperty;
17
+
18
+ /** Used to infer the `Object` constructor. */
19
+ var objectCtorString = funcToString.call(Object);
20
+
21
+ /**
22
+ * Checks if `value` is a plain object, that is, an object created by the
23
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
24
+ *
25
+ * @static
26
+ * @memberOf _
27
+ * @since 0.8.0
28
+ * @category Lang
29
+ * @param {*} value The value to check.
30
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
31
+ * @example
32
+ *
33
+ * function Foo() {
34
+ * this.a = 1;
35
+ * }
36
+ *
37
+ * _.isPlainObject(new Foo);
38
+ * // => false
39
+ *
40
+ * _.isPlainObject([1, 2, 3]);
41
+ * // => false
42
+ *
43
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
44
+ * // => true
45
+ *
46
+ * _.isPlainObject(Object.create(null));
47
+ * // => true
48
+ */
49
+ function isPlainObject(value) {
50
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
51
+ return false;
52
+ }
53
+ var proto = getPrototype(value);
54
+ if (proto === null) {
55
+ return true;
56
+ }
57
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
58
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
59
+ funcToString.call(Ctor) == objectCtorString;
60
+ }
61
+
62
+ module.exports = isPlainObject;
node_modules/lodash/isRegExp.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsRegExp = require('./_baseIsRegExp'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
7
+
8
+ /**
9
+ * Checks if `value` is classified as a `RegExp` object.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 0.1.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
17
+ * @example
18
+ *
19
+ * _.isRegExp(/abc/);
20
+ * // => true
21
+ *
22
+ * _.isRegExp('/abc/');
23
+ * // => false
24
+ */
25
+ var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
26
+
27
+ module.exports = isRegExp;
node_modules/lodash/isSafeInteger.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var isInteger = require('./isInteger');
2
+
3
+ /** Used as references for various `Number` constants. */
4
+ var MAX_SAFE_INTEGER = 9007199254740991;
5
+
6
+ /**
7
+ * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
8
+ * double precision number which isn't the result of a rounded unsafe integer.
9
+ *
10
+ * **Note:** This method is based on
11
+ * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
12
+ *
13
+ * @static
14
+ * @memberOf _
15
+ * @since 4.0.0
16
+ * @category Lang
17
+ * @param {*} value The value to check.
18
+ * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
19
+ * @example
20
+ *
21
+ * _.isSafeInteger(3);
22
+ * // => true
23
+ *
24
+ * _.isSafeInteger(Number.MIN_VALUE);
25
+ * // => false
26
+ *
27
+ * _.isSafeInteger(Infinity);
28
+ * // => false
29
+ *
30
+ * _.isSafeInteger('3');
31
+ * // => false
32
+ */
33
+ function isSafeInteger(value) {
34
+ return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
35
+ }
36
+
37
+ module.exports = isSafeInteger;
node_modules/lodash/isSet.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsSet = require('./_baseIsSet'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsSet = nodeUtil && nodeUtil.isSet;
7
+
8
+ /**
9
+ * Checks if `value` is classified as a `Set` object.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 4.3.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
17
+ * @example
18
+ *
19
+ * _.isSet(new Set);
20
+ * // => true
21
+ *
22
+ * _.isSet(new WeakSet);
23
+ * // => false
24
+ */
25
+ var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
26
+
27
+ module.exports = isSet;
node_modules/lodash/isString.js ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isArray = require('./isArray'),
3
+ isObjectLike = require('./isObjectLike');
4
+
5
+ /** `Object#toString` result references. */
6
+ var stringTag = '[object String]';
7
+
8
+ /**
9
+ * Checks if `value` is classified as a `String` primitive or object.
10
+ *
11
+ * @static
12
+ * @since 0.1.0
13
+ * @memberOf _
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
17
+ * @example
18
+ *
19
+ * _.isString('abc');
20
+ * // => true
21
+ *
22
+ * _.isString(1);
23
+ * // => false
24
+ */
25
+ function isString(value) {
26
+ return typeof value == 'string' ||
27
+ (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
28
+ }
29
+
30
+ module.exports = isString;
node_modules/lodash/isSymbol.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var symbolTag = '[object Symbol]';
6
+
7
+ /**
8
+ * Checks if `value` is classified as a `Symbol` primitive or object.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Lang
14
+ * @param {*} value The value to check.
15
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
16
+ * @example
17
+ *
18
+ * _.isSymbol(Symbol.iterator);
19
+ * // => true
20
+ *
21
+ * _.isSymbol('abc');
22
+ * // => false
23
+ */
24
+ function isSymbol(value) {
25
+ return typeof value == 'symbol' ||
26
+ (isObjectLike(value) && baseGetTag(value) == symbolTag);
27
+ }
28
+
29
+ module.exports = isSymbol;
node_modules/lodash/isTypedArray.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseIsTypedArray = require('./_baseIsTypedArray'),
2
+ baseUnary = require('./_baseUnary'),
3
+ nodeUtil = require('./_nodeUtil');
4
+
5
+ /* Node.js helper references. */
6
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
7
+
8
+ /**
9
+ * Checks if `value` is classified as a typed array.
10
+ *
11
+ * @static
12
+ * @memberOf _
13
+ * @since 3.0.0
14
+ * @category Lang
15
+ * @param {*} value The value to check.
16
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
17
+ * @example
18
+ *
19
+ * _.isTypedArray(new Uint8Array);
20
+ * // => true
21
+ *
22
+ * _.isTypedArray([]);
23
+ * // => false
24
+ */
25
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
26
+
27
+ module.exports = isTypedArray;
node_modules/lodash/isUndefined.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Checks if `value` is `undefined`.
3
+ *
4
+ * @static
5
+ * @since 0.1.0
6
+ * @memberOf _
7
+ * @category Lang
8
+ * @param {*} value The value to check.
9
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
10
+ * @example
11
+ *
12
+ * _.isUndefined(void 0);
13
+ * // => true
14
+ *
15
+ * _.isUndefined(null);
16
+ * // => false
17
+ */
18
+ function isUndefined(value) {
19
+ return value === undefined;
20
+ }
21
+
22
+ module.exports = isUndefined;
node_modules/lodash/isWeakMap.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var getTag = require('./_getTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var weakMapTag = '[object WeakMap]';
6
+
7
+ /**
8
+ * Checks if `value` is classified as a `WeakMap` object.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.3.0
13
+ * @category Lang
14
+ * @param {*} value The value to check.
15
+ * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
16
+ * @example
17
+ *
18
+ * _.isWeakMap(new WeakMap);
19
+ * // => true
20
+ *
21
+ * _.isWeakMap(new Map);
22
+ * // => false
23
+ */
24
+ function isWeakMap(value) {
25
+ return isObjectLike(value) && getTag(value) == weakMapTag;
26
+ }
27
+
28
+ module.exports = isWeakMap;
node_modules/lodash/isWeakSet.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseGetTag = require('./_baseGetTag'),
2
+ isObjectLike = require('./isObjectLike');
3
+
4
+ /** `Object#toString` result references. */
5
+ var weakSetTag = '[object WeakSet]';
6
+
7
+ /**
8
+ * Checks if `value` is classified as a `WeakSet` object.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.3.0
13
+ * @category Lang
14
+ * @param {*} value The value to check.
15
+ * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
16
+ * @example
17
+ *
18
+ * _.isWeakSet(new WeakSet);
19
+ * // => true
20
+ *
21
+ * _.isWeakSet(new Set);
22
+ * // => false
23
+ */
24
+ function isWeakSet(value) {
25
+ return isObjectLike(value) && baseGetTag(value) == weakSetTag;
26
+ }
27
+
28
+ module.exports = isWeakSet;
node_modules/lodash/iteratee.js ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseClone = require('./_baseClone'),
2
+ baseIteratee = require('./_baseIteratee');
3
+
4
+ /** Used to compose bitmasks for cloning. */
5
+ var CLONE_DEEP_FLAG = 1;
6
+
7
+ /**
8
+ * Creates a function that invokes `func` with the arguments of the created
9
+ * function. If `func` is a property name, the created function returns the
10
+ * property value for a given element. If `func` is an array or object, the
11
+ * created function returns `true` for elements that contain the equivalent
12
+ * source properties, otherwise it returns `false`.
13
+ *
14
+ * @static
15
+ * @since 4.0.0
16
+ * @memberOf _
17
+ * @category Util
18
+ * @param {*} [func=_.identity] The value to convert to a callback.
19
+ * @returns {Function} Returns the callback.
20
+ * @example
21
+ *
22
+ * var users = [
23
+ * { 'user': 'barney', 'age': 36, 'active': true },
24
+ * { 'user': 'fred', 'age': 40, 'active': false }
25
+ * ];
26
+ *
27
+ * // The `_.matches` iteratee shorthand.
28
+ * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
29
+ * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
30
+ *
31
+ * // The `_.matchesProperty` iteratee shorthand.
32
+ * _.filter(users, _.iteratee(['user', 'fred']));
33
+ * // => [{ 'user': 'fred', 'age': 40 }]
34
+ *
35
+ * // The `_.property` iteratee shorthand.
36
+ * _.map(users, _.iteratee('user'));
37
+ * // => ['barney', 'fred']
38
+ *
39
+ * // Create custom iteratee shorthands.
40
+ * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
41
+ * return !_.isRegExp(func) ? iteratee(func) : function(string) {
42
+ * return func.test(string);
43
+ * };
44
+ * });
45
+ *
46
+ * _.filter(['abc', 'def'], /ef/);
47
+ * // => ['def']
48
+ */
49
+ function iteratee(func) {
50
+ return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
51
+ }
52
+
53
+ module.exports = iteratee;
node_modules/lodash/join.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Used for built-in method references. */
2
+ var arrayProto = Array.prototype;
3
+
4
+ /* Built-in method references for those with the same name as other `lodash` methods. */
5
+ var nativeJoin = arrayProto.join;
6
+
7
+ /**
8
+ * Converts all elements in `array` into a string separated by `separator`.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Array
14
+ * @param {Array} array The array to convert.
15
+ * @param {string} [separator=','] The element separator.
16
+ * @returns {string} Returns the joined string.
17
+ * @example
18
+ *
19
+ * _.join(['a', 'b', 'c'], '~');
20
+ * // => 'a~b~c'
21
+ */
22
+ function join(array, separator) {
23
+ return array == null ? '' : nativeJoin.call(array, separator);
24
+ }
25
+
26
+ module.exports = join;
node_modules/lodash/kebabCase.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var createCompounder = require('./_createCompounder');
2
+
3
+ /**
4
+ * Converts `string` to
5
+ * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
6
+ *
7
+ * @static
8
+ * @memberOf _
9
+ * @since 3.0.0
10
+ * @category String
11
+ * @param {string} [string=''] The string to convert.
12
+ * @returns {string} Returns the kebab cased string.
13
+ * @example
14
+ *
15
+ * _.kebabCase('Foo Bar');
16
+ * // => 'foo-bar'
17
+ *
18
+ * _.kebabCase('fooBar');
19
+ * // => 'foo-bar'
20
+ *
21
+ * _.kebabCase('__FOO_BAR__');
22
+ * // => 'foo-bar'
23
+ */
24
+ var kebabCase = createCompounder(function(result, word, index) {
25
+ return result + (index ? '-' : '') + word.toLowerCase();
26
+ });
27
+
28
+ module.exports = kebabCase;
node_modules/lodash/keyBy.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseAssignValue = require('./_baseAssignValue'),
2
+ createAggregator = require('./_createAggregator');
3
+
4
+ /**
5
+ * Creates an object composed of keys generated from the results of running
6
+ * each element of `collection` thru `iteratee`. The corresponding value of
7
+ * each key is the last element responsible for generating the key. The
8
+ * iteratee is invoked with one argument: (value).
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 4.0.0
13
+ * @category Collection
14
+ * @param {Array|Object} collection The collection to iterate over.
15
+ * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
16
+ * @returns {Object} Returns the composed aggregate object.
17
+ * @example
18
+ *
19
+ * var array = [
20
+ * { 'dir': 'left', 'code': 97 },
21
+ * { 'dir': 'right', 'code': 100 }
22
+ * ];
23
+ *
24
+ * _.keyBy(array, function(o) {
25
+ * return String.fromCharCode(o.code);
26
+ * });
27
+ * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
28
+ *
29
+ * _.keyBy(array, 'dir');
30
+ * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
31
+ */
32
+ var keyBy = createAggregator(function(result, value, key) {
33
+ baseAssignValue(result, key, value);
34
+ });
35
+
36
+ module.exports = keyBy;
node_modules/lodash/keys.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayLikeKeys = require('./_arrayLikeKeys'),
2
+ baseKeys = require('./_baseKeys'),
3
+ isArrayLike = require('./isArrayLike');
4
+
5
+ /**
6
+ * Creates an array of the own enumerable property names of `object`.
7
+ *
8
+ * **Note:** Non-object values are coerced to objects. See the
9
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
10
+ * for more details.
11
+ *
12
+ * @static
13
+ * @since 0.1.0
14
+ * @memberOf _
15
+ * @category Object
16
+ * @param {Object} object The object to query.
17
+ * @returns {Array} Returns the array of property names.
18
+ * @example
19
+ *
20
+ * function Foo() {
21
+ * this.a = 1;
22
+ * this.b = 2;
23
+ * }
24
+ *
25
+ * Foo.prototype.c = 3;
26
+ *
27
+ * _.keys(new Foo);
28
+ * // => ['a', 'b'] (iteration order is not guaranteed)
29
+ *
30
+ * _.keys('hi');
31
+ * // => ['0', '1']
32
+ */
33
+ function keys(object) {
34
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
35
+ }
36
+
37
+ module.exports = keys;
node_modules/lodash/keysIn.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var arrayLikeKeys = require('./_arrayLikeKeys'),
2
+ baseKeysIn = require('./_baseKeysIn'),
3
+ isArrayLike = require('./isArrayLike');
4
+
5
+ /**
6
+ * Creates an array of the own and inherited enumerable property names of `object`.
7
+ *
8
+ * **Note:** Non-object values are coerced to objects.
9
+ *
10
+ * @static
11
+ * @memberOf _
12
+ * @since 3.0.0
13
+ * @category Object
14
+ * @param {Object} object The object to query.
15
+ * @returns {Array} Returns the array of property names.
16
+ * @example
17
+ *
18
+ * function Foo() {
19
+ * this.a = 1;
20
+ * this.b = 2;
21
+ * }
22
+ *
23
+ * Foo.prototype.c = 3;
24
+ *
25
+ * _.keysIn(new Foo);
26
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
27
+ */
28
+ function keysIn(object) {
29
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
30
+ }
31
+
32
+ module.exports = keysIn;
node_modules/lodash/lang.js ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ 'castArray': require('./castArray'),
3
+ 'clone': require('./clone'),
4
+ 'cloneDeep': require('./cloneDeep'),
5
+ 'cloneDeepWith': require('./cloneDeepWith'),
6
+ 'cloneWith': require('./cloneWith'),
7
+ 'conformsTo': require('./conformsTo'),
8
+ 'eq': require('./eq'),
9
+ 'gt': require('./gt'),
10
+ 'gte': require('./gte'),
11
+ 'isArguments': require('./isArguments'),
12
+ 'isArray': require('./isArray'),
13
+ 'isArrayBuffer': require('./isArrayBuffer'),
14
+ 'isArrayLike': require('./isArrayLike'),
15
+ 'isArrayLikeObject': require('./isArrayLikeObject'),
16
+ 'isBoolean': require('./isBoolean'),
17
+ 'isBuffer': require('./isBuffer'),
18
+ 'isDate': require('./isDate'),
19
+ 'isElement': require('./isElement'),
20
+ 'isEmpty': require('./isEmpty'),
21
+ 'isEqual': require('./isEqual'),
22
+ 'isEqualWith': require('./isEqualWith'),
23
+ 'isError': require('./isError'),
24
+ 'isFinite': require('./isFinite'),
25
+ 'isFunction': require('./isFunction'),
26
+ 'isInteger': require('./isInteger'),
27
+ 'isLength': require('./isLength'),
28
+ 'isMap': require('./isMap'),
29
+ 'isMatch': require('./isMatch'),
30
+ 'isMatchWith': require('./isMatchWith'),
31
+ 'isNaN': require('./isNaN'),
32
+ 'isNative': require('./isNative'),
33
+ 'isNil': require('./isNil'),
34
+ 'isNull': require('./isNull'),
35
+ 'isNumber': require('./isNumber'),
36
+ 'isObject': require('./isObject'),
37
+ 'isObjectLike': require('./isObjectLike'),
38
+ 'isPlainObject': require('./isPlainObject'),
39
+ 'isRegExp': require('./isRegExp'),
40
+ 'isSafeInteger': require('./isSafeInteger'),
41
+ 'isSet': require('./isSet'),
42
+ 'isString': require('./isString'),
43
+ 'isSymbol': require('./isSymbol'),
44
+ 'isTypedArray': require('./isTypedArray'),
45
+ 'isUndefined': require('./isUndefined'),
46
+ 'isWeakMap': require('./isWeakMap'),
47
+ 'isWeakSet': require('./isWeakSet'),
48
+ 'lt': require('./lt'),
49
+ 'lte': require('./lte'),
50
+ 'toArray': require('./toArray'),
51
+ 'toFinite': require('./toFinite'),
52
+ 'toInteger': require('./toInteger'),
53
+ 'toLength': require('./toLength'),
54
+ 'toNumber': require('./toNumber'),
55
+ 'toPlainObject': require('./toPlainObject'),
56
+ 'toSafeInteger': require('./toSafeInteger'),
57
+ 'toString': require('./toString')
58
+ };
node_modules/lodash/last.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Gets the last element of `array`.
3
+ *
4
+ * @static
5
+ * @memberOf _
6
+ * @since 0.1.0
7
+ * @category Array
8
+ * @param {Array} array The array to query.
9
+ * @returns {*} Returns the last element of `array`.
10
+ * @example
11
+ *
12
+ * _.last([1, 2, 3]);
13
+ * // => 3
14
+ */
15
+ function last(array) {
16
+ var length = array == null ? 0 : array.length;
17
+ return length ? array[length - 1] : undefined;
18
+ }
19
+
20
+ module.exports = last;
node_modules/lodash/lastIndexOf.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var baseFindIndex = require('./_baseFindIndex'),
2
+ baseIsNaN = require('./_baseIsNaN'),
3
+ strictLastIndexOf = require('./_strictLastIndexOf'),
4
+ toInteger = require('./toInteger');
5
+
6
+ /* Built-in method references for those with the same name as other `lodash` methods. */
7
+ var nativeMax = Math.max,
8
+ nativeMin = Math.min;
9
+
10
+ /**
11
+ * This method is like `_.indexOf` except that it iterates over elements of
12
+ * `array` from right to left.
13
+ *
14
+ * @static
15
+ * @memberOf _
16
+ * @since 0.1.0
17
+ * @category Array
18
+ * @param {Array} array The array to inspect.
19
+ * @param {*} value The value to search for.
20
+ * @param {number} [fromIndex=array.length-1] The index to search from.
21
+ * @returns {number} Returns the index of the matched value, else `-1`.
22
+ * @example
23
+ *
24
+ * _.lastIndexOf([1, 2, 1, 2], 2);
25
+ * // => 3
26
+ *
27
+ * // Search from the `fromIndex`.
28
+ * _.lastIndexOf([1, 2, 1, 2], 2, 2);
29
+ * // => 1
30
+ */
31
+ function lastIndexOf(array, value, fromIndex) {
32
+ var length = array == null ? 0 : array.length;
33
+ if (!length) {
34
+ return -1;
35
+ }
36
+ var index = length;
37
+ if (fromIndex !== undefined) {
38
+ index = toInteger(fromIndex);
39
+ index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
40
+ }
41
+ return value === value
42
+ ? strictLastIndexOf(array, value, index)
43
+ : baseFindIndex(array, baseIsNaN, index, true);
44
+ }
45
+
46
+ module.exports = lastIndexOf;
node_modules/lodash/lodash.js ADDED
@@ -0,0 +1,17161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * Lodash <https://lodash.com/>
4
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
5
+ * Released under MIT license <https://lodash.com/license>
6
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
7
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
8
+ */
9
+ ;(function() {
10
+
11
+ /** Used as a safe reference for `undefined` in pre-ES5 environments. */
12
+ var undefined;
13
+
14
+ /** Used as the semantic version number. */
15
+ var VERSION = '4.17.20';
16
+
17
+ /** Used as the size to enable large array optimizations. */
18
+ var LARGE_ARRAY_SIZE = 200;
19
+
20
+ /** Error message constants. */
21
+ var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
22
+ FUNC_ERROR_TEXT = 'Expected a function';
23
+
24
+ /** Used to stand-in for `undefined` hash values. */
25
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
26
+
27
+ /** Used as the maximum memoize cache size. */
28
+ var MAX_MEMOIZE_SIZE = 500;
29
+
30
+ /** Used as the internal argument placeholder. */
31
+ var PLACEHOLDER = '__lodash_placeholder__';
32
+
33
+ /** Used to compose bitmasks for cloning. */
34
+ var CLONE_DEEP_FLAG = 1,
35
+ CLONE_FLAT_FLAG = 2,
36
+ CLONE_SYMBOLS_FLAG = 4;
37
+
38
+ /** Used to compose bitmasks for value comparisons. */
39
+ var COMPARE_PARTIAL_FLAG = 1,
40
+ COMPARE_UNORDERED_FLAG = 2;
41
+
42
+ /** Used to compose bitmasks for function metadata. */
43
+ var WRAP_BIND_FLAG = 1,
44
+ WRAP_BIND_KEY_FLAG = 2,
45
+ WRAP_CURRY_BOUND_FLAG = 4,
46
+ WRAP_CURRY_FLAG = 8,
47
+ WRAP_CURRY_RIGHT_FLAG = 16,
48
+ WRAP_PARTIAL_FLAG = 32,
49
+ WRAP_PARTIAL_RIGHT_FLAG = 64,
50
+ WRAP_ARY_FLAG = 128,
51
+ WRAP_REARG_FLAG = 256,
52
+ WRAP_FLIP_FLAG = 512;
53
+
54
+ /** Used as default options for `_.truncate`. */
55
+ var DEFAULT_TRUNC_LENGTH = 30,
56
+ DEFAULT_TRUNC_OMISSION = '...';
57
+
58
+ /** Used to detect hot functions by number of calls within a span of milliseconds. */
59
+ var HOT_COUNT = 800,
60
+ HOT_SPAN = 16;
61
+
62
+ /** Used to indicate the type of lazy iteratees. */
63
+ var LAZY_FILTER_FLAG = 1,
64
+ LAZY_MAP_FLAG = 2,
65
+ LAZY_WHILE_FLAG = 3;
66
+
67
+ /** Used as references for various `Number` constants. */
68
+ var INFINITY = 1 / 0,
69
+ MAX_SAFE_INTEGER = 9007199254740991,
70
+ MAX_INTEGER = 1.7976931348623157e+308,
71
+ NAN = 0 / 0;
72
+
73
+ /** Used as references for the maximum length and index of an array. */
74
+ var MAX_ARRAY_LENGTH = 4294967295,
75
+ MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
76
+ HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
77
+
78
+ /** Used to associate wrap methods with their bit flags. */
79
+ var wrapFlags = [
80
+ ['ary', WRAP_ARY_FLAG],
81
+ ['bind', WRAP_BIND_FLAG],
82
+ ['bindKey', WRAP_BIND_KEY_FLAG],
83
+ ['curry', WRAP_CURRY_FLAG],
84
+ ['curryRight', WRAP_CURRY_RIGHT_FLAG],
85
+ ['flip', WRAP_FLIP_FLAG],
86
+ ['partial', WRAP_PARTIAL_FLAG],
87
+ ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
88
+ ['rearg', WRAP_REARG_FLAG]
89
+ ];
90
+
91
+ /** `Object#toString` result references. */
92
+ var argsTag = '[object Arguments]',
93
+ arrayTag = '[object Array]',
94
+ asyncTag = '[object AsyncFunction]',
95
+ boolTag = '[object Boolean]',
96
+ dateTag = '[object Date]',
97
+ domExcTag = '[object DOMException]',
98
+ errorTag = '[object Error]',
99
+ funcTag = '[object Function]',
100
+ genTag = '[object GeneratorFunction]',
101
+ mapTag = '[object Map]',
102
+ numberTag = '[object Number]',
103
+ nullTag = '[object Null]',
104
+ objectTag = '[object Object]',
105
+ promiseTag = '[object Promise]',
106
+ proxyTag = '[object Proxy]',
107
+ regexpTag = '[object RegExp]',
108
+ setTag = '[object Set]',
109
+ stringTag = '[object String]',
110
+ symbolTag = '[object Symbol]',
111
+ undefinedTag = '[object Undefined]',
112
+ weakMapTag = '[object WeakMap]',
113
+ weakSetTag = '[object WeakSet]';
114
+
115
+ var arrayBufferTag = '[object ArrayBuffer]',
116
+ dataViewTag = '[object DataView]',
117
+ float32Tag = '[object Float32Array]',
118
+ float64Tag = '[object Float64Array]',
119
+ int8Tag = '[object Int8Array]',
120
+ int16Tag = '[object Int16Array]',
121
+ int32Tag = '[object Int32Array]',
122
+ uint8Tag = '[object Uint8Array]',
123
+ uint8ClampedTag = '[object Uint8ClampedArray]',
124
+ uint16Tag = '[object Uint16Array]',
125
+ uint32Tag = '[object Uint32Array]';
126
+
127
+ /** Used to match empty string literals in compiled template source. */
128
+ var reEmptyStringLeading = /\b__p \+= '';/g,
129
+ reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
130
+ reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
131
+
132
+ /** Used to match HTML entities and HTML characters. */
133
+ var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
134
+ reUnescapedHtml = /[&<>"']/g,
135
+ reHasEscapedHtml = RegExp(reEscapedHtml.source),
136
+ reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
137
+
138
+ /** Used to match template delimiters. */
139
+ var reEscape = /<%-([\s\S]+?)%>/g,
140
+ reEvaluate = /<%([\s\S]+?)%>/g,
141
+ reInterpolate = /<%=([\s\S]+?)%>/g;
142
+
143
+ /** Used to match property names within property paths. */
144
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
145
+ reIsPlainProp = /^\w*$/,
146
+ rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
147
+
148
+ /**
149
+ * Used to match `RegExp`
150
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
151
+ */
152
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
153
+ reHasRegExpChar = RegExp(reRegExpChar.source);
154
+
155
+ /** Used to match leading and trailing whitespace. */
156
+ var reTrim = /^\s+|\s+$/g,
157
+ reTrimStart = /^\s+/,
158
+ reTrimEnd = /\s+$/;
159
+
160
+ /** Used to match wrap detail comments. */
161
+ var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
162
+ reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
163
+ reSplitDetails = /,? & /;
164
+
165
+ /** Used to match words composed of alphanumeric characters. */
166
+ var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
167
+
168
+ /** Used to match backslashes in property paths. */
169
+ var reEscapeChar = /\\(\\)?/g;
170
+
171
+ /**
172
+ * Used to match
173
+ * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
174
+ */
175
+ var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
176
+
177
+ /** Used to match `RegExp` flags from their coerced string values. */
178
+ var reFlags = /\w*$/;
179
+
180
+ /** Used to detect bad signed hexadecimal string values. */
181
+ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
182
+
183
+ /** Used to detect binary string values. */
184
+ var reIsBinary = /^0b[01]+$/i;
185
+
186
+ /** Used to detect host constructors (Safari). */
187
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
188
+
189
+ /** Used to detect octal string values. */
190
+ var reIsOctal = /^0o[0-7]+$/i;
191
+
192
+ /** Used to detect unsigned integer values. */
193
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
194
+
195
+ /** Used to match Latin Unicode letters (excluding mathematical operators). */
196
+ var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
197
+
198
+ /** Used to ensure capturing order of template delimiters. */
199
+ var reNoMatch = /($^)/;
200
+
201
+ /** Used to match unescaped characters in compiled string literals. */
202
+ var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
203
+
204
+ /** Used to compose unicode character classes. */
205
+ var rsAstralRange = '\\ud800-\\udfff',
206
+ rsComboMarksRange = '\\u0300-\\u036f',
207
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
208
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
209
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
210
+ rsDingbatRange = '\\u2700-\\u27bf',
211
+ rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
212
+ rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
213
+ rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
214
+ rsPunctuationRange = '\\u2000-\\u206f',
215
+ 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',
216
+ rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
217
+ rsVarRange = '\\ufe0e\\ufe0f',
218
+ rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
219
+
220
+ /** Used to compose unicode capture groups. */
221
+ var rsApos = "['\u2019]",
222
+ rsAstral = '[' + rsAstralRange + ']',
223
+ rsBreak = '[' + rsBreakRange + ']',
224
+ rsCombo = '[' + rsComboRange + ']',
225
+ rsDigits = '\\d+',
226
+ rsDingbat = '[' + rsDingbatRange + ']',
227
+ rsLower = '[' + rsLowerRange + ']',
228
+ rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
229
+ rsFitz = '\\ud83c[\\udffb-\\udfff]',
230
+ rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
231
+ rsNonAstral = '[^' + rsAstralRange + ']',
232
+ rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
233
+ rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
234
+ rsUpper = '[' + rsUpperRange + ']',
235
+ rsZWJ = '\\u200d';
236
+
237
+ /** Used to compose unicode regexes. */
238
+ var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
239
+ rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
240
+ rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
241
+ rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
242
+ reOptMod = rsModifier + '?',
243
+ rsOptVar = '[' + rsVarRange + ']?',
244
+ rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
245
+ rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
246
+ rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
247
+ rsSeq = rsOptVar + reOptMod + rsOptJoin,
248
+ rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
249
+ rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
250
+
251
+ /** Used to match apostrophes. */
252
+ var reApos = RegExp(rsApos, 'g');
253
+
254
+ /**
255
+ * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
256
+ * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
257
+ */
258
+ var reComboMark = RegExp(rsCombo, 'g');
259
+
260
+ /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
261
+ var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
262
+
263
+ /** Used to match complex or compound words. */
264
+ var reUnicodeWord = RegExp([
265
+ rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
266
+ rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
267
+ rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
268
+ rsUpper + '+' + rsOptContrUpper,
269
+ rsOrdUpper,
270
+ rsOrdLower,
271
+ rsDigits,
272
+ rsEmoji
273
+ ].join('|'), 'g');
274
+
275
+ /** 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/). */
276
+ var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
277
+
278
+ /** Used to detect strings that need a more robust regexp to match words. */
279
+ 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 ]/;
280
+
281
+ /** Used to assign default `context` object properties. */
282
+ var contextProps = [
283
+ 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
284
+ 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
285
+ 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
286
+ 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
287
+ '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
288
+ ];
289
+
290
+ /** Used to make template sourceURLs easier to identify. */
291
+ var templateCounter = -1;
292
+
293
+ /** Used to identify `toStringTag` values of typed arrays. */
294
+ var typedArrayTags = {};
295
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
296
+ typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
297
+ typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
298
+ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
299
+ typedArrayTags[uint32Tag] = true;
300
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
301
+ typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
302
+ typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
303
+ typedArrayTags[errorTag] = typedArrayTags[funcTag] =
304
+ typedArrayTags[mapTag] = typedArrayTags[numberTag] =
305
+ typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
306
+ typedArrayTags[setTag] = typedArrayTags[stringTag] =
307
+ typedArrayTags[weakMapTag] = false;
308
+
309
+ /** Used to identify `toStringTag` values supported by `_.clone`. */
310
+ var cloneableTags = {};
311
+ cloneableTags[argsTag] = cloneableTags[arrayTag] =
312
+ cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
313
+ cloneableTags[boolTag] = cloneableTags[dateTag] =
314
+ cloneableTags[float32Tag] = cloneableTags[float64Tag] =
315
+ cloneableTags[int8Tag] = cloneableTags[int16Tag] =
316
+ cloneableTags[int32Tag] = cloneableTags[mapTag] =
317
+ cloneableTags[numberTag] = cloneableTags[objectTag] =
318
+ cloneableTags[regexpTag] = cloneableTags[setTag] =
319
+ cloneableTags[stringTag] = cloneableTags[symbolTag] =
320
+ cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
321
+ cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
322
+ cloneableTags[errorTag] = cloneableTags[funcTag] =
323
+ cloneableTags[weakMapTag] = false;
324
+
325
+ /** Used to map Latin Unicode letters to basic Latin letters. */
326
+ var deburredLetters = {
327
+ // Latin-1 Supplement block.
328
+ '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
329
+ '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
330
+ '\xc7': 'C', '\xe7': 'c',
331
+ '\xd0': 'D', '\xf0': 'd',
332
+ '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
333
+ '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
334
+ '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
335
+ '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
336
+ '\xd1': 'N', '\xf1': 'n',
337
+ '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
338
+ '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
339
+ '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
340
+ '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
341
+ '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
342
+ '\xc6': 'Ae', '\xe6': 'ae',
343
+ '\xde': 'Th', '\xfe': 'th',
344
+ '\xdf': 'ss',
345
+ // Latin Extended-A block.
346
+ '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
347
+ '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
348
+ '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
349
+ '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
350
+ '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
351
+ '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
352
+ '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
353
+ '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
354
+ '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
355
+ '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
356
+ '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
357
+ '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
358
+ '\u0134': 'J', '\u0135': 'j',
359
+ '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
360
+ '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
361
+ '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
362
+ '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
363
+ '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
364
+ '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
365
+ '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
366
+ '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
367
+ '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
368
+ '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
369
+ '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
370
+ '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
371
+ '\u0163': 't', '\u0165': 't', '\u0167': 't',
372
+ '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
373
+ '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
374
+ '\u0174': 'W', '\u0175': 'w',
375
+ '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
376
+ '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
377
+ '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
378
+ '\u0132': 'IJ', '\u0133': 'ij',
379
+ '\u0152': 'Oe', '\u0153': 'oe',
380
+ '\u0149': "'n", '\u017f': 's'
381
+ };
382
+
383
+ /** Used to map characters to HTML entities. */
384
+ var htmlEscapes = {
385
+ '&': '&amp;',
386
+ '<': '&lt;',
387
+ '>': '&gt;',
388
+ '"': '&quot;',
389
+ "'": '&#39;'
390
+ };
391
+
392
+ /** Used to map HTML entities to characters. */
393
+ var htmlUnescapes = {
394
+ '&amp;': '&',
395
+ '&lt;': '<',
396
+ '&gt;': '>',
397
+ '&quot;': '"',
398
+ '&#39;': "'"
399
+ };
400
+
401
+ /** Used to escape characters for inclusion in compiled string literals. */
402
+ var stringEscapes = {
403
+ '\\': '\\',
404
+ "'": "'",
405
+ '\n': 'n',
406
+ '\r': 'r',
407
+ '\u2028': 'u2028',
408
+ '\u2029': 'u2029'
409
+ };
410
+
411
+ /** Built-in method references without a dependency on `root`. */
412
+ var freeParseFloat = parseFloat,
413
+ freeParseInt = parseInt;
414
+
415
+ /** Detect free variable `global` from Node.js. */
416
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
417
+
418
+ /** Detect free variable `self`. */
419
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
420
+
421
+ /** Used as a reference to the global object. */
422
+ var root = freeGlobal || freeSelf || Function('return this')();
423
+
424
+ /** Detect free variable `exports`. */
425
+ var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
426
+
427
+ /** Detect free variable `module`. */
428
+ var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
429
+
430
+ /** Detect the popular CommonJS extension `module.exports`. */
431
+ var moduleExports = freeModule && freeModule.exports === freeExports;
432
+
433
+ /** Detect free variable `process` from Node.js. */
434
+ var freeProcess = moduleExports && freeGlobal.process;
435
+
436
+ /** Used to access faster Node.js helpers. */
437
+ var nodeUtil = (function() {
438
+ try {
439
+ // Use `util.types` for Node.js 10+.
440
+ var types = freeModule && freeModule.require && freeModule.require('util').types;
441
+
442
+ if (types) {
443
+ return types;
444
+ }
445
+
446
+ // Legacy `process.binding('util')` for Node.js < 10.
447
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
448
+ } catch (e) {}
449
+ }());
450
+
451
+ /* Node.js helper references. */
452
+ var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
453
+ nodeIsDate = nodeUtil && nodeUtil.isDate,
454
+ nodeIsMap = nodeUtil && nodeUtil.isMap,
455
+ nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
456
+ nodeIsSet = nodeUtil && nodeUtil.isSet,
457
+ nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
458
+
459
+ /*--------------------------------------------------------------------------*/
460
+
461
+ /**
462
+ * A faster alternative to `Function#apply`, this function invokes `func`
463
+ * with the `this` binding of `thisArg` and the arguments of `args`.
464
+ *
465
+ * @private
466
+ * @param {Function} func The function to invoke.
467
+ * @param {*} thisArg The `this` binding of `func`.
468
+ * @param {Array} args The arguments to invoke `func` with.
469
+ * @returns {*} Returns the result of `func`.
470
+ */
471
+ function apply(func, thisArg, args) {
472
+ switch (args.length) {
473
+ case 0: return func.call(thisArg);
474
+ case 1: return func.call(thisArg, args[0]);
475
+ case 2: return func.call(thisArg, args[0], args[1]);
476
+ case 3: return func.call(thisArg, args[0], args[1], args[2]);
477
+ }
478
+ return func.apply(thisArg, args);
479
+ }
480
+
481
+ /**
482
+ * A specialized version of `baseAggregator` for arrays.
483
+ *
484
+ * @private
485
+ * @param {Array} [array] The array to iterate over.
486
+ * @param {Function} setter The function to set `accumulator` values.
487
+ * @param {Function} iteratee The iteratee to transform keys.
488
+ * @param {Object} accumulator The initial aggregated object.
489
+ * @returns {Function} Returns `accumulator`.
490
+ */
491
+ function arrayAggregator(array, setter, iteratee, accumulator) {
492
+ var index = -1,
493
+ length = array == null ? 0 : array.length;
494
+
495
+ while (++index < length) {
496
+ var value = array[index];
497
+ setter(accumulator, value, iteratee(value), array);
498
+ }
499
+ return accumulator;
500
+ }
501
+
502
+ /**
503
+ * A specialized version of `_.forEach` for arrays without support for
504
+ * iteratee shorthands.
505
+ *
506
+ * @private
507
+ * @param {Array} [array] The array to iterate over.
508
+ * @param {Function} iteratee The function invoked per iteration.
509
+ * @returns {Array} Returns `array`.
510
+ */
511
+ function arrayEach(array, iteratee) {
512
+ var index = -1,
513
+ length = array == null ? 0 : array.length;
514
+
515
+ while (++index < length) {
516
+ if (iteratee(array[index], index, array) === false) {
517
+ break;
518
+ }
519
+ }
520
+ return array;
521
+ }
522
+
523
+ /**
524
+ * A specialized version of `_.forEachRight` for arrays without support for
525
+ * iteratee shorthands.
526
+ *
527
+ * @private
528
+ * @param {Array} [array] The array to iterate over.
529
+ * @param {Function} iteratee The function invoked per iteration.
530
+ * @returns {Array} Returns `array`.
531
+ */
532
+ function arrayEachRight(array, iteratee) {
533
+ var length = array == null ? 0 : array.length;
534
+
535
+ while (length--) {
536
+ if (iteratee(array[length], length, array) === false) {
537
+ break;
538
+ }
539
+ }
540
+ return array;
541
+ }
542
+
543
+ /**
544
+ * A specialized version of `_.every` for arrays without support for
545
+ * iteratee shorthands.
546
+ *
547
+ * @private
548
+ * @param {Array} [array] The array to iterate over.
549
+ * @param {Function} predicate The function invoked per iteration.
550
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
551
+ * else `false`.
552
+ */
553
+ function arrayEvery(array, predicate) {
554
+ var index = -1,
555
+ length = array == null ? 0 : array.length;
556
+
557
+ while (++index < length) {
558
+ if (!predicate(array[index], index, array)) {
559
+ return false;
560
+ }
561
+ }
562
+ return true;
563
+ }
564
+
565
+ /**
566
+ * A specialized version of `_.filter` for arrays without support for
567
+ * iteratee shorthands.
568
+ *
569
+ * @private
570
+ * @param {Array} [array] The array to iterate over.
571
+ * @param {Function} predicate The function invoked per iteration.
572
+ * @returns {Array} Returns the new filtered array.
573
+ */
574
+ function arrayFilter(array, predicate) {
575
+ var index = -1,
576
+ length = array == null ? 0 : array.length,
577
+ resIndex = 0,
578
+ result = [];
579
+
580
+ while (++index < length) {
581
+ var value = array[index];
582
+ if (predicate(value, index, array)) {
583
+ result[resIndex++] = value;
584
+ }
585
+ }
586
+ return result;
587
+ }
588
+
589
+ /**
590
+ * A specialized version of `_.includes` for arrays without support for
591
+ * specifying an index to search from.
592
+ *
593
+ * @private
594
+ * @param {Array} [array] The array to inspect.
595
+ * @param {*} target The value to search for.
596
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
597
+ */
598
+ function arrayIncludes(array, value) {
599
+ var length = array == null ? 0 : array.length;
600
+ return !!length && baseIndexOf(array, value, 0) > -1;
601
+ }
602
+
603
+ /**
604
+ * This function is like `arrayIncludes` except that it accepts a comparator.
605
+ *
606
+ * @private
607
+ * @param {Array} [array] The array to inspect.
608
+ * @param {*} target The value to search for.
609
+ * @param {Function} comparator The comparator invoked per element.
610
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
611
+ */
612
+ function arrayIncludesWith(array, value, comparator) {
613
+ var index = -1,
614
+ length = array == null ? 0 : array.length;
615
+
616
+ while (++index < length) {
617
+ if (comparator(value, array[index])) {
618
+ return true;
619
+ }
620
+ }
621
+ return false;
622
+ }
623
+
624
+ /**
625
+ * A specialized version of `_.map` for arrays without support for iteratee
626
+ * shorthands.
627
+ *
628
+ * @private
629
+ * @param {Array} [array] The array to iterate over.
630
+ * @param {Function} iteratee The function invoked per iteration.
631
+ * @returns {Array} Returns the new mapped array.
632
+ */
633
+ function arrayMap(array, iteratee) {
634
+ var index = -1,
635
+ length = array == null ? 0 : array.length,
636
+ result = Array(length);
637
+
638
+ while (++index < length) {
639
+ result[index] = iteratee(array[index], index, array);
640
+ }
641
+ return result;
642
+ }
643
+
644
+ /**
645
+ * Appends the elements of `values` to `array`.
646
+ *
647
+ * @private
648
+ * @param {Array} array The array to modify.
649
+ * @param {Array} values The values to append.
650
+ * @returns {Array} Returns `array`.
651
+ */
652
+ function arrayPush(array, values) {
653
+ var index = -1,
654
+ length = values.length,
655
+ offset = array.length;
656
+
657
+ while (++index < length) {
658
+ array[offset + index] = values[index];
659
+ }
660
+ return array;
661
+ }
662
+
663
+ /**
664
+ * A specialized version of `_.reduce` for arrays without support for
665
+ * iteratee shorthands.
666
+ *
667
+ * @private
668
+ * @param {Array} [array] The array to iterate over.
669
+ * @param {Function} iteratee The function invoked per iteration.
670
+ * @param {*} [accumulator] The initial value.
671
+ * @param {boolean} [initAccum] Specify using the first element of `array` as
672
+ * the initial value.
673
+ * @returns {*} Returns the accumulated value.
674
+ */
675
+ function arrayReduce(array, iteratee, accumulator, initAccum) {
676
+ var index = -1,
677
+ length = array == null ? 0 : array.length;
678
+
679
+ if (initAccum && length) {
680
+ accumulator = array[++index];
681
+ }
682
+ while (++index < length) {
683
+ accumulator = iteratee(accumulator, array[index], index, array);
684
+ }
685
+ return accumulator;
686
+ }
687
+
688
+ /**
689
+ * A specialized version of `_.reduceRight` for arrays without support for
690
+ * iteratee shorthands.
691
+ *
692
+ * @private
693
+ * @param {Array} [array] The array to iterate over.
694
+ * @param {Function} iteratee The function invoked per iteration.
695
+ * @param {*} [accumulator] The initial value.
696
+ * @param {boolean} [initAccum] Specify using the last element of `array` as
697
+ * the initial value.
698
+ * @returns {*} Returns the accumulated value.
699
+ */
700
+ function arrayReduceRight(array, iteratee, accumulator, initAccum) {
701
+ var length = array == null ? 0 : array.length;
702
+ if (initAccum && length) {
703
+ accumulator = array[--length];
704
+ }
705
+ while (length--) {
706
+ accumulator = iteratee(accumulator, array[length], length, array);
707
+ }
708
+ return accumulator;
709
+ }
710
+
711
+ /**
712
+ * A specialized version of `_.some` for arrays without support for iteratee
713
+ * shorthands.
714
+ *
715
+ * @private
716
+ * @param {Array} [array] The array to iterate over.
717
+ * @param {Function} predicate The function invoked per iteration.
718
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
719
+ * else `false`.
720
+ */
721
+ function arraySome(array, predicate) {
722
+ var index = -1,
723
+ length = array == null ? 0 : array.length;
724
+
725
+ while (++index < length) {
726
+ if (predicate(array[index], index, array)) {
727
+ return true;
728
+ }
729
+ }
730
+ return false;
731
+ }
732
+
733
+ /**
734
+ * Gets the size of an ASCII `string`.
735
+ *
736
+ * @private
737
+ * @param {string} string The string inspect.
738
+ * @returns {number} Returns the string size.
739
+ */
740
+ var asciiSize = baseProperty('length');
741
+
742
+ /**
743
+ * Converts an ASCII `string` to an array.
744
+ *
745
+ * @private
746
+ * @param {string} string The string to convert.
747
+ * @returns {Array} Returns the converted array.
748
+ */
749
+ function asciiToArray(string) {
750
+ return string.split('');
751
+ }
752
+
753
+ /**
754
+ * Splits an ASCII `string` into an array of its words.
755
+ *
756
+ * @private
757
+ * @param {string} The string to inspect.
758
+ * @returns {Array} Returns the words of `string`.
759
+ */
760
+ function asciiWords(string) {
761
+ return string.match(reAsciiWord) || [];
762
+ }
763
+
764
+ /**
765
+ * The base implementation of methods like `_.findKey` and `_.findLastKey`,
766
+ * without support for iteratee shorthands, which iterates over `collection`
767
+ * using `eachFunc`.
768
+ *
769
+ * @private
770
+ * @param {Array|Object} collection The collection to inspect.
771
+ * @param {Function} predicate The function invoked per iteration.
772
+ * @param {Function} eachFunc The function to iterate over `collection`.
773
+ * @returns {*} Returns the found element or its key, else `undefined`.
774
+ */
775
+ function baseFindKey(collection, predicate, eachFunc) {
776
+ var result;
777
+ eachFunc(collection, function(value, key, collection) {
778
+ if (predicate(value, key, collection)) {
779
+ result = key;
780
+ return false;
781
+ }
782
+ });
783
+ return result;
784
+ }
785
+
786
+ /**
787
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
788
+ * support for iteratee shorthands.
789
+ *
790
+ * @private
791
+ * @param {Array} array The array to inspect.
792
+ * @param {Function} predicate The function invoked per iteration.
793
+ * @param {number} fromIndex The index to search from.
794
+ * @param {boolean} [fromRight] Specify iterating from right to left.
795
+ * @returns {number} Returns the index of the matched value, else `-1`.
796
+ */
797
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
798
+ var length = array.length,
799
+ index = fromIndex + (fromRight ? 1 : -1);
800
+
801
+ while ((fromRight ? index-- : ++index < length)) {
802
+ if (predicate(array[index], index, array)) {
803
+ return index;
804
+ }
805
+ }
806
+ return -1;
807
+ }
808
+
809
+ /**
810
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
811
+ *
812
+ * @private
813
+ * @param {Array} array The array to inspect.
814
+ * @param {*} value The value to search for.
815
+ * @param {number} fromIndex The index to search from.
816
+ * @returns {number} Returns the index of the matched value, else `-1`.
817
+ */
818
+ function baseIndexOf(array, value, fromIndex) {
819
+ return value === value
820
+ ? strictIndexOf(array, value, fromIndex)
821
+ : baseFindIndex(array, baseIsNaN, fromIndex);
822
+ }
823
+
824
+ /**
825
+ * This function is like `baseIndexOf` except that it accepts a comparator.
826
+ *
827
+ * @private
828
+ * @param {Array} array The array to inspect.
829
+ * @param {*} value The value to search for.
830
+ * @param {number} fromIndex The index to search from.
831
+ * @param {Function} comparator The comparator invoked per element.
832
+ * @returns {number} Returns the index of the matched value, else `-1`.
833
+ */
834
+ function baseIndexOfWith(array, value, fromIndex, comparator) {
835
+ var index = fromIndex - 1,
836
+ length = array.length;
837
+
838
+ while (++index < length) {
839
+ if (comparator(array[index], value)) {
840
+ return index;
841
+ }
842
+ }
843
+ return -1;
844
+ }
845
+
846
+ /**
847
+ * The base implementation of `_.isNaN` without support for number objects.
848
+ *
849
+ * @private
850
+ * @param {*} value The value to check.
851
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
852
+ */
853
+ function baseIsNaN(value) {
854
+ return value !== value;
855
+ }
856
+
857
+ /**
858
+ * The base implementation of `_.mean` and `_.meanBy` without support for
859
+ * iteratee shorthands.
860
+ *
861
+ * @private
862
+ * @param {Array} array The array to iterate over.
863
+ * @param {Function} iteratee The function invoked per iteration.
864
+ * @returns {number} Returns the mean.
865
+ */
866
+ function baseMean(array, iteratee) {
867
+ var length = array == null ? 0 : array.length;
868
+ return length ? (baseSum(array, iteratee) / length) : NAN;
869
+ }
870
+
871
+ /**
872
+ * The base implementation of `_.property` without support for deep paths.
873
+ *
874
+ * @private
875
+ * @param {string} key The key of the property to get.
876
+ * @returns {Function} Returns the new accessor function.
877
+ */
878
+ function baseProperty(key) {
879
+ return function(object) {
880
+ return object == null ? undefined : object[key];
881
+ };
882
+ }
883
+
884
+ /**
885
+ * The base implementation of `_.propertyOf` without support for deep paths.
886
+ *
887
+ * @private
888
+ * @param {Object} object The object to query.
889
+ * @returns {Function} Returns the new accessor function.
890
+ */
891
+ function basePropertyOf(object) {
892
+ return function(key) {
893
+ return object == null ? undefined : object[key];
894
+ };
895
+ }
896
+
897
+ /**
898
+ * The base implementation of `_.reduce` and `_.reduceRight`, without support
899
+ * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
900
+ *
901
+ * @private
902
+ * @param {Array|Object} collection The collection to iterate over.
903
+ * @param {Function} iteratee The function invoked per iteration.
904
+ * @param {*} accumulator The initial value.
905
+ * @param {boolean} initAccum Specify using the first or last element of
906
+ * `collection` as the initial value.
907
+ * @param {Function} eachFunc The function to iterate over `collection`.
908
+ * @returns {*} Returns the accumulated value.
909
+ */
910
+ function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
911
+ eachFunc(collection, function(value, index, collection) {
912
+ accumulator = initAccum
913
+ ? (initAccum = false, value)
914
+ : iteratee(accumulator, value, index, collection);
915
+ });
916
+ return accumulator;
917
+ }
918
+
919
+ /**
920
+ * The base implementation of `_.sortBy` which uses `comparer` to define the
921
+ * sort order of `array` and replaces criteria objects with their corresponding
922
+ * values.
923
+ *
924
+ * @private
925
+ * @param {Array} array The array to sort.
926
+ * @param {Function} comparer The function to define sort order.
927
+ * @returns {Array} Returns `array`.
928
+ */
929
+ function baseSortBy(array, comparer) {
930
+ var length = array.length;
931
+
932
+ array.sort(comparer);
933
+ while (length--) {
934
+ array[length] = array[length].value;
935
+ }
936
+ return array;
937
+ }
938
+
939
+ /**
940
+ * The base implementation of `_.sum` and `_.sumBy` without support for
941
+ * iteratee shorthands.
942
+ *
943
+ * @private
944
+ * @param {Array} array The array to iterate over.
945
+ * @param {Function} iteratee The function invoked per iteration.
946
+ * @returns {number} Returns the sum.
947
+ */
948
+ function baseSum(array, iteratee) {
949
+ var result,
950
+ index = -1,
951
+ length = array.length;
952
+
953
+ while (++index < length) {
954
+ var current = iteratee(array[index]);
955
+ if (current !== undefined) {
956
+ result = result === undefined ? current : (result + current);
957
+ }
958
+ }
959
+ return result;
960
+ }
961
+
962
+ /**
963
+ * The base implementation of `_.times` without support for iteratee shorthands
964
+ * or max array length checks.
965
+ *
966
+ * @private
967
+ * @param {number} n The number of times to invoke `iteratee`.
968
+ * @param {Function} iteratee The function invoked per iteration.
969
+ * @returns {Array} Returns the array of results.
970
+ */
971
+ function baseTimes(n, iteratee) {
972
+ var index = -1,
973
+ result = Array(n);
974
+
975
+ while (++index < n) {
976
+ result[index] = iteratee(index);
977
+ }
978
+ return result;
979
+ }
980
+
981
+ /**
982
+ * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
983
+ * of key-value pairs for `object` corresponding to the property names of `props`.
984
+ *
985
+ * @private
986
+ * @param {Object} object The object to query.
987
+ * @param {Array} props The property names to get values for.
988
+ * @returns {Object} Returns the key-value pairs.
989
+ */
990
+ function baseToPairs(object, props) {
991
+ return arrayMap(props, function(key) {
992
+ return [key, object[key]];
993
+ });
994
+ }
995
+
996
+ /**
997
+ * The base implementation of `_.unary` without support for storing metadata.
998
+ *
999
+ * @private
1000
+ * @param {Function} func The function to cap arguments for.
1001
+ * @returns {Function} Returns the new capped function.
1002
+ */
1003
+ function baseUnary(func) {
1004
+ return function(value) {
1005
+ return func(value);
1006
+ };
1007
+ }
1008
+
1009
+ /**
1010
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
1011
+ * array of `object` property values corresponding to the property names
1012
+ * of `props`.
1013
+ *
1014
+ * @private
1015
+ * @param {Object} object The object to query.
1016
+ * @param {Array} props The property names to get values for.
1017
+ * @returns {Object} Returns the array of property values.
1018
+ */
1019
+ function baseValues(object, props) {
1020
+ return arrayMap(props, function(key) {
1021
+ return object[key];
1022
+ });
1023
+ }
1024
+
1025
+ /**
1026
+ * Checks if a `cache` value for `key` exists.
1027
+ *
1028
+ * @private
1029
+ * @param {Object} cache The cache to query.
1030
+ * @param {string} key The key of the entry to check.
1031
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1032
+ */
1033
+ function cacheHas(cache, key) {
1034
+ return cache.has(key);
1035
+ }
1036
+
1037
+ /**
1038
+ * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
1039
+ * that is not found in the character symbols.
1040
+ *
1041
+ * @private
1042
+ * @param {Array} strSymbols The string symbols to inspect.
1043
+ * @param {Array} chrSymbols The character symbols to find.
1044
+ * @returns {number} Returns the index of the first unmatched string symbol.
1045
+ */
1046
+ function charsStartIndex(strSymbols, chrSymbols) {
1047
+ var index = -1,
1048
+ length = strSymbols.length;
1049
+
1050
+ while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
1051
+ return index;
1052
+ }
1053
+
1054
+ /**
1055
+ * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
1056
+ * that is not found in the character symbols.
1057
+ *
1058
+ * @private
1059
+ * @param {Array} strSymbols The string symbols to inspect.
1060
+ * @param {Array} chrSymbols The character symbols to find.
1061
+ * @returns {number} Returns the index of the last unmatched string symbol.
1062
+ */
1063
+ function charsEndIndex(strSymbols, chrSymbols) {
1064
+ var index = strSymbols.length;
1065
+
1066
+ while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
1067
+ return index;
1068
+ }
1069
+
1070
+ /**
1071
+ * Gets the number of `placeholder` occurrences in `array`.
1072
+ *
1073
+ * @private
1074
+ * @param {Array} array The array to inspect.
1075
+ * @param {*} placeholder The placeholder to search for.
1076
+ * @returns {number} Returns the placeholder count.
1077
+ */
1078
+ function countHolders(array, placeholder) {
1079
+ var length = array.length,
1080
+ result = 0;
1081
+
1082
+ while (length--) {
1083
+ if (array[length] === placeholder) {
1084
+ ++result;
1085
+ }
1086
+ }
1087
+ return result;
1088
+ }
1089
+
1090
+ /**
1091
+ * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
1092
+ * letters to basic Latin letters.
1093
+ *
1094
+ * @private
1095
+ * @param {string} letter The matched letter to deburr.
1096
+ * @returns {string} Returns the deburred letter.
1097
+ */
1098
+ var deburrLetter = basePropertyOf(deburredLetters);
1099
+
1100
+ /**
1101
+ * Used by `_.escape` to convert characters to HTML entities.
1102
+ *
1103
+ * @private
1104
+ * @param {string} chr The matched character to escape.
1105
+ * @returns {string} Returns the escaped character.
1106
+ */
1107
+ var escapeHtmlChar = basePropertyOf(htmlEscapes);
1108
+
1109
+ /**
1110
+ * Used by `_.template` to escape characters for inclusion in compiled string literals.
1111
+ *
1112
+ * @private
1113
+ * @param {string} chr The matched character to escape.
1114
+ * @returns {string} Returns the escaped character.
1115
+ */
1116
+ function escapeStringChar(chr) {
1117
+ return '\\' + stringEscapes[chr];
1118
+ }
1119
+
1120
+ /**
1121
+ * Gets the value at `key` of `object`.
1122
+ *
1123
+ * @private
1124
+ * @param {Object} [object] The object to query.
1125
+ * @param {string} key The key of the property to get.
1126
+ * @returns {*} Returns the property value.
1127
+ */
1128
+ function getValue(object, key) {
1129
+ return object == null ? undefined : object[key];
1130
+ }
1131
+
1132
+ /**
1133
+ * Checks if `string` contains Unicode symbols.
1134
+ *
1135
+ * @private
1136
+ * @param {string} string The string to inspect.
1137
+ * @returns {boolean} Returns `true` if a symbol is found, else `false`.
1138
+ */
1139
+ function hasUnicode(string) {
1140
+ return reHasUnicode.test(string);
1141
+ }
1142
+
1143
+ /**
1144
+ * Checks if `string` contains a word composed of Unicode symbols.
1145
+ *
1146
+ * @private
1147
+ * @param {string} string The string to inspect.
1148
+ * @returns {boolean} Returns `true` if a word is found, else `false`.
1149
+ */
1150
+ function hasUnicodeWord(string) {
1151
+ return reHasUnicodeWord.test(string);
1152
+ }
1153
+
1154
+ /**
1155
+ * Converts `iterator` to an array.
1156
+ *
1157
+ * @private
1158
+ * @param {Object} iterator The iterator to convert.
1159
+ * @returns {Array} Returns the converted array.
1160
+ */
1161
+ function iteratorToArray(iterator) {
1162
+ var data,
1163
+ result = [];
1164
+
1165
+ while (!(data = iterator.next()).done) {
1166
+ result.push(data.value);
1167
+ }
1168
+ return result;
1169
+ }
1170
+
1171
+ /**
1172
+ * Converts `map` to its key-value pairs.
1173
+ *
1174
+ * @private
1175
+ * @param {Object} map The map to convert.
1176
+ * @returns {Array} Returns the key-value pairs.
1177
+ */
1178
+ function mapToArray(map) {
1179
+ var index = -1,
1180
+ result = Array(map.size);
1181
+
1182
+ map.forEach(function(value, key) {
1183
+ result[++index] = [key, value];
1184
+ });
1185
+ return result;
1186
+ }
1187
+
1188
+ /**
1189
+ * Creates a unary function that invokes `func` with its argument transformed.
1190
+ *
1191
+ * @private
1192
+ * @param {Function} func The function to wrap.
1193
+ * @param {Function} transform The argument transform.
1194
+ * @returns {Function} Returns the new function.
1195
+ */
1196
+ function overArg(func, transform) {
1197
+ return function(arg) {
1198
+ return func(transform(arg));
1199
+ };
1200
+ }
1201
+
1202
+ /**
1203
+ * Replaces all `placeholder` elements in `array` with an internal placeholder
1204
+ * and returns an array of their indexes.
1205
+ *
1206
+ * @private
1207
+ * @param {Array} array The array to modify.
1208
+ * @param {*} placeholder The placeholder to replace.
1209
+ * @returns {Array} Returns the new array of placeholder indexes.
1210
+ */
1211
+ function replaceHolders(array, placeholder) {
1212
+ var index = -1,
1213
+ length = array.length,
1214
+ resIndex = 0,
1215
+ result = [];
1216
+
1217
+ while (++index < length) {
1218
+ var value = array[index];
1219
+ if (value === placeholder || value === PLACEHOLDER) {
1220
+ array[index] = PLACEHOLDER;
1221
+ result[resIndex++] = index;
1222
+ }
1223
+ }
1224
+ return result;
1225
+ }
1226
+
1227
+ /**
1228
+ * Converts `set` to an array of its values.
1229
+ *
1230
+ * @private
1231
+ * @param {Object} set The set to convert.
1232
+ * @returns {Array} Returns the values.
1233
+ */
1234
+ function setToArray(set) {
1235
+ var index = -1,
1236
+ result = Array(set.size);
1237
+
1238
+ set.forEach(function(value) {
1239
+ result[++index] = value;
1240
+ });
1241
+ return result;
1242
+ }
1243
+
1244
+ /**
1245
+ * Converts `set` to its value-value pairs.
1246
+ *
1247
+ * @private
1248
+ * @param {Object} set The set to convert.
1249
+ * @returns {Array} Returns the value-value pairs.
1250
+ */
1251
+ function setToPairs(set) {
1252
+ var index = -1,
1253
+ result = Array(set.size);
1254
+
1255
+ set.forEach(function(value) {
1256
+ result[++index] = [value, value];
1257
+ });
1258
+ return result;
1259
+ }
1260
+
1261
+ /**
1262
+ * A specialized version of `_.indexOf` which performs strict equality
1263
+ * comparisons of values, i.e. `===`.
1264
+ *
1265
+ * @private
1266
+ * @param {Array} array The array to inspect.
1267
+ * @param {*} value The value to search for.
1268
+ * @param {number} fromIndex The index to search from.
1269
+ * @returns {number} Returns the index of the matched value, else `-1`.
1270
+ */
1271
+ function strictIndexOf(array, value, fromIndex) {
1272
+ var index = fromIndex - 1,
1273
+ length = array.length;
1274
+
1275
+ while (++index < length) {
1276
+ if (array[index] === value) {
1277
+ return index;
1278
+ }
1279
+ }
1280
+ return -1;
1281
+ }
1282
+
1283
+ /**
1284
+ * A specialized version of `_.lastIndexOf` which performs strict equality
1285
+ * comparisons of values, i.e. `===`.
1286
+ *
1287
+ * @private
1288
+ * @param {Array} array The array to inspect.
1289
+ * @param {*} value The value to search for.
1290
+ * @param {number} fromIndex The index to search from.
1291
+ * @returns {number} Returns the index of the matched value, else `-1`.
1292
+ */
1293
+ function strictLastIndexOf(array, value, fromIndex) {
1294
+ var index = fromIndex + 1;
1295
+ while (index--) {
1296
+ if (array[index] === value) {
1297
+ return index;
1298
+ }
1299
+ }
1300
+ return index;
1301
+ }
1302
+
1303
+ /**
1304
+ * Gets the number of symbols in `string`.
1305
+ *
1306
+ * @private
1307
+ * @param {string} string The string to inspect.
1308
+ * @returns {number} Returns the string size.
1309
+ */
1310
+ function stringSize(string) {
1311
+ return hasUnicode(string)
1312
+ ? unicodeSize(string)
1313
+ : asciiSize(string);
1314
+ }
1315
+
1316
+ /**
1317
+ * Converts `string` to an array.
1318
+ *
1319
+ * @private
1320
+ * @param {string} string The string to convert.
1321
+ * @returns {Array} Returns the converted array.
1322
+ */
1323
+ function stringToArray(string) {
1324
+ return hasUnicode(string)
1325
+ ? unicodeToArray(string)
1326
+ : asciiToArray(string);
1327
+ }
1328
+
1329
+ /**
1330
+ * Used by `_.unescape` to convert HTML entities to characters.
1331
+ *
1332
+ * @private
1333
+ * @param {string} chr The matched character to unescape.
1334
+ * @returns {string} Returns the unescaped character.
1335
+ */
1336
+ var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
1337
+
1338
+ /**
1339
+ * Gets the size of a Unicode `string`.
1340
+ *
1341
+ * @private
1342
+ * @param {string} string The string inspect.
1343
+ * @returns {number} Returns the string size.
1344
+ */
1345
+ function unicodeSize(string) {
1346
+ var result = reUnicode.lastIndex = 0;
1347
+ while (reUnicode.test(string)) {
1348
+ ++result;
1349
+ }
1350
+ return result;
1351
+ }
1352
+
1353
+ /**
1354
+ * Converts a Unicode `string` to an array.
1355
+ *
1356
+ * @private
1357
+ * @param {string} string The string to convert.
1358
+ * @returns {Array} Returns the converted array.
1359
+ */
1360
+ function unicodeToArray(string) {
1361
+ return string.match(reUnicode) || [];
1362
+ }
1363
+
1364
+ /**
1365
+ * Splits a Unicode `string` into an array of its words.
1366
+ *
1367
+ * @private
1368
+ * @param {string} The string to inspect.
1369
+ * @returns {Array} Returns the words of `string`.
1370
+ */
1371
+ function unicodeWords(string) {
1372
+ return string.match(reUnicodeWord) || [];
1373
+ }
1374
+
1375
+ /*--------------------------------------------------------------------------*/
1376
+
1377
+ /**
1378
+ * Create a new pristine `lodash` function using the `context` object.
1379
+ *
1380
+ * @static
1381
+ * @memberOf _
1382
+ * @since 1.1.0
1383
+ * @category Util
1384
+ * @param {Object} [context=root] The context object.
1385
+ * @returns {Function} Returns a new `lodash` function.
1386
+ * @example
1387
+ *
1388
+ * _.mixin({ 'foo': _.constant('foo') });
1389
+ *
1390
+ * var lodash = _.runInContext();
1391
+ * lodash.mixin({ 'bar': lodash.constant('bar') });
1392
+ *
1393
+ * _.isFunction(_.foo);
1394
+ * // => true
1395
+ * _.isFunction(_.bar);
1396
+ * // => false
1397
+ *
1398
+ * lodash.isFunction(lodash.foo);
1399
+ * // => false
1400
+ * lodash.isFunction(lodash.bar);
1401
+ * // => true
1402
+ *
1403
+ * // Create a suped-up `defer` in Node.js.
1404
+ * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
1405
+ */
1406
+ var runInContext = (function runInContext(context) {
1407
+ context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
1408
+
1409
+ /** Built-in constructor references. */
1410
+ var Array = context.Array,
1411
+ Date = context.Date,
1412
+ Error = context.Error,
1413
+ Function = context.Function,
1414
+ Math = context.Math,
1415
+ Object = context.Object,
1416
+ RegExp = context.RegExp,
1417
+ String = context.String,
1418
+ TypeError = context.TypeError;
1419
+
1420
+ /** Used for built-in method references. */
1421
+ var arrayProto = Array.prototype,
1422
+ funcProto = Function.prototype,
1423
+ objectProto = Object.prototype;
1424
+
1425
+ /** Used to detect overreaching core-js shims. */
1426
+ var coreJsData = context['__core-js_shared__'];
1427
+
1428
+ /** Used to resolve the decompiled source of functions. */
1429
+ var funcToString = funcProto.toString;
1430
+
1431
+ /** Used to check objects for own properties. */
1432
+ var hasOwnProperty = objectProto.hasOwnProperty;
1433
+
1434
+ /** Used to generate unique IDs. */
1435
+ var idCounter = 0;
1436
+
1437
+ /** Used to detect methods masquerading as native. */
1438
+ var maskSrcKey = (function() {
1439
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
1440
+ return uid ? ('Symbol(src)_1.' + uid) : '';
1441
+ }());
1442
+
1443
+ /**
1444
+ * Used to resolve the
1445
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1446
+ * of values.
1447
+ */
1448
+ var nativeObjectToString = objectProto.toString;
1449
+
1450
+ /** Used to infer the `Object` constructor. */
1451
+ var objectCtorString = funcToString.call(Object);
1452
+
1453
+ /** Used to restore the original `_` reference in `_.noConflict`. */
1454
+ var oldDash = root._;
1455
+
1456
+ /** Used to detect if a method is native. */
1457
+ var reIsNative = RegExp('^' +
1458
+ funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
1459
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
1460
+ );
1461
+
1462
+ /** Built-in value references. */
1463
+ var Buffer = moduleExports ? context.Buffer : undefined,
1464
+ Symbol = context.Symbol,
1465
+ Uint8Array = context.Uint8Array,
1466
+ allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
1467
+ getPrototype = overArg(Object.getPrototypeOf, Object),
1468
+ objectCreate = Object.create,
1469
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
1470
+ splice = arrayProto.splice,
1471
+ spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
1472
+ symIterator = Symbol ? Symbol.iterator : undefined,
1473
+ symToStringTag = Symbol ? Symbol.toStringTag : undefined;
1474
+
1475
+ var defineProperty = (function() {
1476
+ try {
1477
+ var func = getNative(Object, 'defineProperty');
1478
+ func({}, '', {});
1479
+ return func;
1480
+ } catch (e) {}
1481
+ }());
1482
+
1483
+ /** Mocked built-ins. */
1484
+ var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
1485
+ ctxNow = Date && Date.now !== root.Date.now && Date.now,
1486
+ ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
1487
+
1488
+ /* Built-in method references for those with the same name as other `lodash` methods. */
1489
+ var nativeCeil = Math.ceil,
1490
+ nativeFloor = Math.floor,
1491
+ nativeGetSymbols = Object.getOwnPropertySymbols,
1492
+ nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
1493
+ nativeIsFinite = context.isFinite,
1494
+ nativeJoin = arrayProto.join,
1495
+ nativeKeys = overArg(Object.keys, Object),
1496
+ nativeMax = Math.max,
1497
+ nativeMin = Math.min,
1498
+ nativeNow = Date.now,
1499
+ nativeParseInt = context.parseInt,
1500
+ nativeRandom = Math.random,
1501
+ nativeReverse = arrayProto.reverse;
1502
+
1503
+ /* Built-in method references that are verified to be native. */
1504
+ var DataView = getNative(context, 'DataView'),
1505
+ Map = getNative(context, 'Map'),
1506
+ Promise = getNative(context, 'Promise'),
1507
+ Set = getNative(context, 'Set'),
1508
+ WeakMap = getNative(context, 'WeakMap'),
1509
+ nativeCreate = getNative(Object, 'create');
1510
+
1511
+ /** Used to store function metadata. */
1512
+ var metaMap = WeakMap && new WeakMap;
1513
+
1514
+ /** Used to lookup unminified function names. */
1515
+ var realNames = {};
1516
+
1517
+ /** Used to detect maps, sets, and weakmaps. */
1518
+ var dataViewCtorString = toSource(DataView),
1519
+ mapCtorString = toSource(Map),
1520
+ promiseCtorString = toSource(Promise),
1521
+ setCtorString = toSource(Set),
1522
+ weakMapCtorString = toSource(WeakMap);
1523
+
1524
+ /** Used to convert symbols to primitives and strings. */
1525
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
1526
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
1527
+ symbolToString = symbolProto ? symbolProto.toString : undefined;
1528
+
1529
+ /*------------------------------------------------------------------------*/
1530
+
1531
+ /**
1532
+ * Creates a `lodash` object which wraps `value` to enable implicit method
1533
+ * chain sequences. Methods that operate on and return arrays, collections,
1534
+ * and functions can be chained together. Methods that retrieve a single value
1535
+ * or may return a primitive value will automatically end the chain sequence
1536
+ * and return the unwrapped value. Otherwise, the value must be unwrapped
1537
+ * with `_#value`.
1538
+ *
1539
+ * Explicit chain sequences, which must be unwrapped with `_#value`, may be
1540
+ * enabled using `_.chain`.
1541
+ *
1542
+ * The execution of chained methods is lazy, that is, it's deferred until
1543
+ * `_#value` is implicitly or explicitly called.
1544
+ *
1545
+ * Lazy evaluation allows several methods to support shortcut fusion.
1546
+ * Shortcut fusion is an optimization to merge iteratee calls; this avoids
1547
+ * the creation of intermediate arrays and can greatly reduce the number of
1548
+ * iteratee executions. Sections of a chain sequence qualify for shortcut
1549
+ * fusion if the section is applied to an array and iteratees accept only
1550
+ * one argument. The heuristic for whether a section qualifies for shortcut
1551
+ * fusion is subject to change.
1552
+ *
1553
+ * Chaining is supported in custom builds as long as the `_#value` method is
1554
+ * directly or indirectly included in the build.
1555
+ *
1556
+ * In addition to lodash methods, wrappers have `Array` and `String` methods.
1557
+ *
1558
+ * The wrapper `Array` methods are:
1559
+ * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
1560
+ *
1561
+ * The wrapper `String` methods are:
1562
+ * `replace` and `split`
1563
+ *
1564
+ * The wrapper methods that support shortcut fusion are:
1565
+ * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
1566
+ * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
1567
+ * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
1568
+ *
1569
+ * The chainable wrapper methods are:
1570
+ * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
1571
+ * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
1572
+ * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
1573
+ * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
1574
+ * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
1575
+ * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
1576
+ * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
1577
+ * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
1578
+ * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
1579
+ * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
1580
+ * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
1581
+ * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
1582
+ * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
1583
+ * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
1584
+ * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
1585
+ * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
1586
+ * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
1587
+ * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
1588
+ * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
1589
+ * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
1590
+ * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
1591
+ * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
1592
+ * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
1593
+ * `zipObject`, `zipObjectDeep`, and `zipWith`
1594
+ *
1595
+ * The wrapper methods that are **not** chainable by default are:
1596
+ * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
1597
+ * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
1598
+ * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
1599
+ * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
1600
+ * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
1601
+ * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
1602
+ * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
1603
+ * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
1604
+ * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
1605
+ * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
1606
+ * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
1607
+ * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
1608
+ * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
1609
+ * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
1610
+ * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
1611
+ * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
1612
+ * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
1613
+ * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
1614
+ * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
1615
+ * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
1616
+ * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
1617
+ * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
1618
+ * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
1619
+ * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
1620
+ * `upperFirst`, `value`, and `words`
1621
+ *
1622
+ * @name _
1623
+ * @constructor
1624
+ * @category Seq
1625
+ * @param {*} value The value to wrap in a `lodash` instance.
1626
+ * @returns {Object} Returns the new `lodash` wrapper instance.
1627
+ * @example
1628
+ *
1629
+ * function square(n) {
1630
+ * return n * n;
1631
+ * }
1632
+ *
1633
+ * var wrapped = _([1, 2, 3]);
1634
+ *
1635
+ * // Returns an unwrapped value.
1636
+ * wrapped.reduce(_.add);
1637
+ * // => 6
1638
+ *
1639
+ * // Returns a wrapped value.
1640
+ * var squares = wrapped.map(square);
1641
+ *
1642
+ * _.isArray(squares);
1643
+ * // => false
1644
+ *
1645
+ * _.isArray(squares.value());
1646
+ * // => true
1647
+ */
1648
+ function lodash(value) {
1649
+ if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
1650
+ if (value instanceof LodashWrapper) {
1651
+ return value;
1652
+ }
1653
+ if (hasOwnProperty.call(value, '__wrapped__')) {
1654
+ return wrapperClone(value);
1655
+ }
1656
+ }
1657
+ return new LodashWrapper(value);
1658
+ }
1659
+
1660
+ /**
1661
+ * The base implementation of `_.create` without support for assigning
1662
+ * properties to the created object.
1663
+ *
1664
+ * @private
1665
+ * @param {Object} proto The object to inherit from.
1666
+ * @returns {Object} Returns the new object.
1667
+ */
1668
+ var baseCreate = (function() {
1669
+ function object() {}
1670
+ return function(proto) {
1671
+ if (!isObject(proto)) {
1672
+ return {};
1673
+ }
1674
+ if (objectCreate) {
1675
+ return objectCreate(proto);
1676
+ }
1677
+ object.prototype = proto;
1678
+ var result = new object;
1679
+ object.prototype = undefined;
1680
+ return result;
1681
+ };
1682
+ }());
1683
+
1684
+ /**
1685
+ * The function whose prototype chain sequence wrappers inherit from.
1686
+ *
1687
+ * @private
1688
+ */
1689
+ function baseLodash() {
1690
+ // No operation performed.
1691
+ }
1692
+
1693
+ /**
1694
+ * The base constructor for creating `lodash` wrapper objects.
1695
+ *
1696
+ * @private
1697
+ * @param {*} value The value to wrap.
1698
+ * @param {boolean} [chainAll] Enable explicit method chain sequences.
1699
+ */
1700
+ function LodashWrapper(value, chainAll) {
1701
+ this.__wrapped__ = value;
1702
+ this.__actions__ = [];
1703
+ this.__chain__ = !!chainAll;
1704
+ this.__index__ = 0;
1705
+ this.__values__ = undefined;
1706
+ }
1707
+
1708
+ /**
1709
+ * By default, the template delimiters used by lodash are like those in
1710
+ * embedded Ruby (ERB) as well as ES2015 template strings. Change the
1711
+ * following template settings to use alternative delimiters.
1712
+ *
1713
+ * @static
1714
+ * @memberOf _
1715
+ * @type {Object}
1716
+ */
1717
+ lodash.templateSettings = {
1718
+
1719
+ /**
1720
+ * Used to detect `data` property values to be HTML-escaped.
1721
+ *
1722
+ * @memberOf _.templateSettings
1723
+ * @type {RegExp}
1724
+ */
1725
+ 'escape': reEscape,
1726
+
1727
+ /**
1728
+ * Used to detect code to be evaluated.
1729
+ *
1730
+ * @memberOf _.templateSettings
1731
+ * @type {RegExp}
1732
+ */
1733
+ 'evaluate': reEvaluate,
1734
+
1735
+ /**
1736
+ * Used to detect `data` property values to inject.
1737
+ *
1738
+ * @memberOf _.templateSettings
1739
+ * @type {RegExp}
1740
+ */
1741
+ 'interpolate': reInterpolate,
1742
+
1743
+ /**
1744
+ * Used to reference the data object in the template text.
1745
+ *
1746
+ * @memberOf _.templateSettings
1747
+ * @type {string}
1748
+ */
1749
+ 'variable': '',
1750
+
1751
+ /**
1752
+ * Used to import variables into the compiled template.
1753
+ *
1754
+ * @memberOf _.templateSettings
1755
+ * @type {Object}
1756
+ */
1757
+ 'imports': {
1758
+
1759
+ /**
1760
+ * A reference to the `lodash` function.
1761
+ *
1762
+ * @memberOf _.templateSettings.imports
1763
+ * @type {Function}
1764
+ */
1765
+ '_': lodash
1766
+ }
1767
+ };
1768
+
1769
+ // Ensure wrappers are instances of `baseLodash`.
1770
+ lodash.prototype = baseLodash.prototype;
1771
+ lodash.prototype.constructor = lodash;
1772
+
1773
+ LodashWrapper.prototype = baseCreate(baseLodash.prototype);
1774
+ LodashWrapper.prototype.constructor = LodashWrapper;
1775
+
1776
+ /*------------------------------------------------------------------------*/
1777
+
1778
+ /**
1779
+ * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
1780
+ *
1781
+ * @private
1782
+ * @constructor
1783
+ * @param {*} value The value to wrap.
1784
+ */
1785
+ function LazyWrapper(value) {
1786
+ this.__wrapped__ = value;
1787
+ this.__actions__ = [];
1788
+ this.__dir__ = 1;
1789
+ this.__filtered__ = false;
1790
+ this.__iteratees__ = [];
1791
+ this.__takeCount__ = MAX_ARRAY_LENGTH;
1792
+ this.__views__ = [];
1793
+ }
1794
+
1795
+ /**
1796
+ * Creates a clone of the lazy wrapper object.
1797
+ *
1798
+ * @private
1799
+ * @name clone
1800
+ * @memberOf LazyWrapper
1801
+ * @returns {Object} Returns the cloned `LazyWrapper` object.
1802
+ */
1803
+ function lazyClone() {
1804
+ var result = new LazyWrapper(this.__wrapped__);
1805
+ result.__actions__ = copyArray(this.__actions__);
1806
+ result.__dir__ = this.__dir__;
1807
+ result.__filtered__ = this.__filtered__;
1808
+ result.__iteratees__ = copyArray(this.__iteratees__);
1809
+ result.__takeCount__ = this.__takeCount__;
1810
+ result.__views__ = copyArray(this.__views__);
1811
+ return result;
1812
+ }
1813
+
1814
+ /**
1815
+ * Reverses the direction of lazy iteration.
1816
+ *
1817
+ * @private
1818
+ * @name reverse
1819
+ * @memberOf LazyWrapper
1820
+ * @returns {Object} Returns the new reversed `LazyWrapper` object.
1821
+ */
1822
+ function lazyReverse() {
1823
+ if (this.__filtered__) {
1824
+ var result = new LazyWrapper(this);
1825
+ result.__dir__ = -1;
1826
+ result.__filtered__ = true;
1827
+ } else {
1828
+ result = this.clone();
1829
+ result.__dir__ *= -1;
1830
+ }
1831
+ return result;
1832
+ }
1833
+
1834
+ /**
1835
+ * Extracts the unwrapped value from its lazy wrapper.
1836
+ *
1837
+ * @private
1838
+ * @name value
1839
+ * @memberOf LazyWrapper
1840
+ * @returns {*} Returns the unwrapped value.
1841
+ */
1842
+ function lazyValue() {
1843
+ var array = this.__wrapped__.value(),
1844
+ dir = this.__dir__,
1845
+ isArr = isArray(array),
1846
+ isRight = dir < 0,
1847
+ arrLength = isArr ? array.length : 0,
1848
+ view = getView(0, arrLength, this.__views__),
1849
+ start = view.start,
1850
+ end = view.end,
1851
+ length = end - start,
1852
+ index = isRight ? end : (start - 1),
1853
+ iteratees = this.__iteratees__,
1854
+ iterLength = iteratees.length,
1855
+ resIndex = 0,
1856
+ takeCount = nativeMin(length, this.__takeCount__);
1857
+
1858
+ if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
1859
+ return baseWrapperValue(array, this.__actions__);
1860
+ }
1861
+ var result = [];
1862
+
1863
+ outer:
1864
+ while (length-- && resIndex < takeCount) {
1865
+ index += dir;
1866
+
1867
+ var iterIndex = -1,
1868
+ value = array[index];
1869
+
1870
+ while (++iterIndex < iterLength) {
1871
+ var data = iteratees[iterIndex],
1872
+ iteratee = data.iteratee,
1873
+ type = data.type,
1874
+ computed = iteratee(value);
1875
+
1876
+ if (type == LAZY_MAP_FLAG) {
1877
+ value = computed;
1878
+ } else if (!computed) {
1879
+ if (type == LAZY_FILTER_FLAG) {
1880
+ continue outer;
1881
+ } else {
1882
+ break outer;
1883
+ }
1884
+ }
1885
+ }
1886
+ result[resIndex++] = value;
1887
+ }
1888
+ return result;
1889
+ }
1890
+
1891
+ // Ensure `LazyWrapper` is an instance of `baseLodash`.
1892
+ LazyWrapper.prototype = baseCreate(baseLodash.prototype);
1893
+ LazyWrapper.prototype.constructor = LazyWrapper;
1894
+
1895
+ /*------------------------------------------------------------------------*/
1896
+
1897
+ /**
1898
+ * Creates a hash object.
1899
+ *
1900
+ * @private
1901
+ * @constructor
1902
+ * @param {Array} [entries] The key-value pairs to cache.
1903
+ */
1904
+ function Hash(entries) {
1905
+ var index = -1,
1906
+ length = entries == null ? 0 : entries.length;
1907
+
1908
+ this.clear();
1909
+ while (++index < length) {
1910
+ var entry = entries[index];
1911
+ this.set(entry[0], entry[1]);
1912
+ }
1913
+ }
1914
+
1915
+ /**
1916
+ * Removes all key-value entries from the hash.
1917
+ *
1918
+ * @private
1919
+ * @name clear
1920
+ * @memberOf Hash
1921
+ */
1922
+ function hashClear() {
1923
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
1924
+ this.size = 0;
1925
+ }
1926
+
1927
+ /**
1928
+ * Removes `key` and its value from the hash.
1929
+ *
1930
+ * @private
1931
+ * @name delete
1932
+ * @memberOf Hash
1933
+ * @param {Object} hash The hash to modify.
1934
+ * @param {string} key The key of the value to remove.
1935
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
1936
+ */
1937
+ function hashDelete(key) {
1938
+ var result = this.has(key) && delete this.__data__[key];
1939
+ this.size -= result ? 1 : 0;
1940
+ return result;
1941
+ }
1942
+
1943
+ /**
1944
+ * Gets the hash value for `key`.
1945
+ *
1946
+ * @private
1947
+ * @name get
1948
+ * @memberOf Hash
1949
+ * @param {string} key The key of the value to get.
1950
+ * @returns {*} Returns the entry value.
1951
+ */
1952
+ function hashGet(key) {
1953
+ var data = this.__data__;
1954
+ if (nativeCreate) {
1955
+ var result = data[key];
1956
+ return result === HASH_UNDEFINED ? undefined : result;
1957
+ }
1958
+ return hasOwnProperty.call(data, key) ? data[key] : undefined;
1959
+ }
1960
+
1961
+ /**
1962
+ * Checks if a hash value for `key` exists.
1963
+ *
1964
+ * @private
1965
+ * @name has
1966
+ * @memberOf Hash
1967
+ * @param {string} key The key of the entry to check.
1968
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
1969
+ */
1970
+ function hashHas(key) {
1971
+ var data = this.__data__;
1972
+ return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
1973
+ }
1974
+
1975
+ /**
1976
+ * Sets the hash `key` to `value`.
1977
+ *
1978
+ * @private
1979
+ * @name set
1980
+ * @memberOf Hash
1981
+ * @param {string} key The key of the value to set.
1982
+ * @param {*} value The value to set.
1983
+ * @returns {Object} Returns the hash instance.
1984
+ */
1985
+ function hashSet(key, value) {
1986
+ var data = this.__data__;
1987
+ this.size += this.has(key) ? 0 : 1;
1988
+ data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
1989
+ return this;
1990
+ }
1991
+
1992
+ // Add methods to `Hash`.
1993
+ Hash.prototype.clear = hashClear;
1994
+ Hash.prototype['delete'] = hashDelete;
1995
+ Hash.prototype.get = hashGet;
1996
+ Hash.prototype.has = hashHas;
1997
+ Hash.prototype.set = hashSet;
1998
+
1999
+ /*------------------------------------------------------------------------*/
2000
+
2001
+ /**
2002
+ * Creates an list cache object.
2003
+ *
2004
+ * @private
2005
+ * @constructor
2006
+ * @param {Array} [entries] The key-value pairs to cache.
2007
+ */
2008
+ function ListCache(entries) {
2009
+ var index = -1,
2010
+ length = entries == null ? 0 : entries.length;
2011
+
2012
+ this.clear();
2013
+ while (++index < length) {
2014
+ var entry = entries[index];
2015
+ this.set(entry[0], entry[1]);
2016
+ }
2017
+ }
2018
+
2019
+ /**
2020
+ * Removes all key-value entries from the list cache.
2021
+ *
2022
+ * @private
2023
+ * @name clear
2024
+ * @memberOf ListCache
2025
+ */
2026
+ function listCacheClear() {
2027
+ this.__data__ = [];
2028
+ this.size = 0;
2029
+ }
2030
+
2031
+ /**
2032
+ * Removes `key` and its value from the list cache.
2033
+ *
2034
+ * @private
2035
+ * @name delete
2036
+ * @memberOf ListCache
2037
+ * @param {string} key The key of the value to remove.
2038
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
2039
+ */
2040
+ function listCacheDelete(key) {
2041
+ var data = this.__data__,
2042
+ index = assocIndexOf(data, key);
2043
+
2044
+ if (index < 0) {
2045
+ return false;
2046
+ }
2047
+ var lastIndex = data.length - 1;
2048
+ if (index == lastIndex) {
2049
+ data.pop();
2050
+ } else {
2051
+ splice.call(data, index, 1);
2052
+ }
2053
+ --this.size;
2054
+ return true;
2055
+ }
2056
+
2057
+ /**
2058
+ * Gets the list cache value for `key`.
2059
+ *
2060
+ * @private
2061
+ * @name get
2062
+ * @memberOf ListCache
2063
+ * @param {string} key The key of the value to get.
2064
+ * @returns {*} Returns the entry value.
2065
+ */
2066
+ function listCacheGet(key) {
2067
+ var data = this.__data__,
2068
+ index = assocIndexOf(data, key);
2069
+
2070
+ return index < 0 ? undefined : data[index][1];
2071
+ }
2072
+
2073
+ /**
2074
+ * Checks if a list cache value for `key` exists.
2075
+ *
2076
+ * @private
2077
+ * @name has
2078
+ * @memberOf ListCache
2079
+ * @param {string} key The key of the entry to check.
2080
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
2081
+ */
2082
+ function listCacheHas(key) {
2083
+ return assocIndexOf(this.__data__, key) > -1;
2084
+ }
2085
+
2086
+ /**
2087
+ * Sets the list cache `key` to `value`.
2088
+ *
2089
+ * @private
2090
+ * @name set
2091
+ * @memberOf ListCache
2092
+ * @param {string} key The key of the value to set.
2093
+ * @param {*} value The value to set.
2094
+ * @returns {Object} Returns the list cache instance.
2095
+ */
2096
+ function listCacheSet(key, value) {
2097
+ var data = this.__data__,
2098
+ index = assocIndexOf(data, key);
2099
+
2100
+ if (index < 0) {
2101
+ ++this.size;
2102
+ data.push([key, value]);
2103
+ } else {
2104
+ data[index][1] = value;
2105
+ }
2106
+ return this;
2107
+ }
2108
+
2109
+ // Add methods to `ListCache`.
2110
+ ListCache.prototype.clear = listCacheClear;
2111
+ ListCache.prototype['delete'] = listCacheDelete;
2112
+ ListCache.prototype.get = listCacheGet;
2113
+ ListCache.prototype.has = listCacheHas;
2114
+ ListCache.prototype.set = listCacheSet;
2115
+
2116
+ /*------------------------------------------------------------------------*/
2117
+
2118
+ /**
2119
+ * Creates a map cache object to store key-value pairs.
2120
+ *
2121
+ * @private
2122
+ * @constructor
2123
+ * @param {Array} [entries] The key-value pairs to cache.
2124
+ */
2125
+ function MapCache(entries) {
2126
+ var index = -1,
2127
+ length = entries == null ? 0 : entries.length;
2128
+
2129
+ this.clear();
2130
+ while (++index < length) {
2131
+ var entry = entries[index];
2132
+ this.set(entry[0], entry[1]);
2133
+ }
2134
+ }
2135
+
2136
+ /**
2137
+ * Removes all key-value entries from the map.
2138
+ *
2139
+ * @private
2140
+ * @name clear
2141
+ * @memberOf MapCache
2142
+ */
2143
+ function mapCacheClear() {
2144
+ this.size = 0;
2145
+ this.__data__ = {
2146
+ 'hash': new Hash,
2147
+ 'map': new (Map || ListCache),
2148
+ 'string': new Hash
2149
+ };
2150
+ }
2151
+
2152
+ /**
2153
+ * Removes `key` and its value from the map.
2154
+ *
2155
+ * @private
2156
+ * @name delete
2157
+ * @memberOf MapCache
2158
+ * @param {string} key The key of the value to remove.
2159
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
2160
+ */
2161
+ function mapCacheDelete(key) {
2162
+ var result = getMapData(this, key)['delete'](key);
2163
+ this.size -= result ? 1 : 0;
2164
+ return result;
2165
+ }
2166
+
2167
+ /**
2168
+ * Gets the map value for `key`.
2169
+ *
2170
+ * @private
2171
+ * @name get
2172
+ * @memberOf MapCache
2173
+ * @param {string} key The key of the value to get.
2174
+ * @returns {*} Returns the entry value.
2175
+ */
2176
+ function mapCacheGet(key) {
2177
+ return getMapData(this, key).get(key);
2178
+ }
2179
+
2180
+ /**
2181
+ * Checks if a map value for `key` exists.
2182
+ *
2183
+ * @private
2184
+ * @name has
2185
+ * @memberOf MapCache
2186
+ * @param {string} key The key of the entry to check.
2187
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
2188
+ */
2189
+ function mapCacheHas(key) {
2190
+ return getMapData(this, key).has(key);
2191
+ }
2192
+
2193
+ /**
2194
+ * Sets the map `key` to `value`.
2195
+ *
2196
+ * @private
2197
+ * @name set
2198
+ * @memberOf MapCache
2199
+ * @param {string} key The key of the value to set.
2200
+ * @param {*} value The value to set.
2201
+ * @returns {Object} Returns the map cache instance.
2202
+ */
2203
+ function mapCacheSet(key, value) {
2204
+ var data = getMapData(this, key),
2205
+ size = data.size;
2206
+
2207
+ data.set(key, value);
2208
+ this.size += data.size == size ? 0 : 1;
2209
+ return this;
2210
+ }
2211
+
2212
+ // Add methods to `MapCache`.
2213
+ MapCache.prototype.clear = mapCacheClear;
2214
+ MapCache.prototype['delete'] = mapCacheDelete;
2215
+ MapCache.prototype.get = mapCacheGet;
2216
+ MapCache.prototype.has = mapCacheHas;
2217
+ MapCache.prototype.set = mapCacheSet;
2218
+
2219
+ /*------------------------------------------------------------------------*/
2220
+
2221
+ /**
2222
+ *
2223
+ * Creates an array cache object to store unique values.
2224
+ *
2225
+ * @private
2226
+ * @constructor
2227
+ * @param {Array} [values] The values to cache.
2228
+ */
2229
+ function SetCache(values) {
2230
+ var index = -1,
2231
+ length = values == null ? 0 : values.length;
2232
+
2233
+ this.__data__ = new MapCache;
2234
+ while (++index < length) {
2235
+ this.add(values[index]);
2236
+ }
2237
+ }
2238
+
2239
+ /**
2240
+ * Adds `value` to the array cache.
2241
+ *
2242
+ * @private
2243
+ * @name add
2244
+ * @memberOf SetCache
2245
+ * @alias push
2246
+ * @param {*} value The value to cache.
2247
+ * @returns {Object} Returns the cache instance.
2248
+ */
2249
+ function setCacheAdd(value) {
2250
+ this.__data__.set(value, HASH_UNDEFINED);
2251
+ return this;
2252
+ }
2253
+
2254
+ /**
2255
+ * Checks if `value` is in the array cache.
2256
+ *
2257
+ * @private
2258
+ * @name has
2259
+ * @memberOf SetCache
2260
+ * @param {*} value The value to search for.
2261
+ * @returns {number} Returns `true` if `value` is found, else `false`.
2262
+ */
2263
+ function setCacheHas(value) {
2264
+ return this.__data__.has(value);
2265
+ }
2266
+
2267
+ // Add methods to `SetCache`.
2268
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
2269
+ SetCache.prototype.has = setCacheHas;
2270
+
2271
+ /*------------------------------------------------------------------------*/
2272
+
2273
+ /**
2274
+ * Creates a stack cache object to store key-value pairs.
2275
+ *
2276
+ * @private
2277
+ * @constructor
2278
+ * @param {Array} [entries] The key-value pairs to cache.
2279
+ */
2280
+ function Stack(entries) {
2281
+ var data = this.__data__ = new ListCache(entries);
2282
+ this.size = data.size;
2283
+ }
2284
+
2285
+ /**
2286
+ * Removes all key-value entries from the stack.
2287
+ *
2288
+ * @private
2289
+ * @name clear
2290
+ * @memberOf Stack
2291
+ */
2292
+ function stackClear() {
2293
+ this.__data__ = new ListCache;
2294
+ this.size = 0;
2295
+ }
2296
+
2297
+ /**
2298
+ * Removes `key` and its value from the stack.
2299
+ *
2300
+ * @private
2301
+ * @name delete
2302
+ * @memberOf Stack
2303
+ * @param {string} key The key of the value to remove.
2304
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
2305
+ */
2306
+ function stackDelete(key) {
2307
+ var data = this.__data__,
2308
+ result = data['delete'](key);
2309
+
2310
+ this.size = data.size;
2311
+ return result;
2312
+ }
2313
+
2314
+ /**
2315
+ * Gets the stack value for `key`.
2316
+ *
2317
+ * @private
2318
+ * @name get
2319
+ * @memberOf Stack
2320
+ * @param {string} key The key of the value to get.
2321
+ * @returns {*} Returns the entry value.
2322
+ */
2323
+ function stackGet(key) {
2324
+ return this.__data__.get(key);
2325
+ }
2326
+
2327
+ /**
2328
+ * Checks if a stack value for `key` exists.
2329
+ *
2330
+ * @private
2331
+ * @name has
2332
+ * @memberOf Stack
2333
+ * @param {string} key The key of the entry to check.
2334
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
2335
+ */
2336
+ function stackHas(key) {
2337
+ return this.__data__.has(key);
2338
+ }
2339
+
2340
+ /**
2341
+ * Sets the stack `key` to `value`.
2342
+ *
2343
+ * @private
2344
+ * @name set
2345
+ * @memberOf Stack
2346
+ * @param {string} key The key of the value to set.
2347
+ * @param {*} value The value to set.
2348
+ * @returns {Object} Returns the stack cache instance.
2349
+ */
2350
+ function stackSet(key, value) {
2351
+ var data = this.__data__;
2352
+ if (data instanceof ListCache) {
2353
+ var pairs = data.__data__;
2354
+ if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
2355
+ pairs.push([key, value]);
2356
+ this.size = ++data.size;
2357
+ return this;
2358
+ }
2359
+ data = this.__data__ = new MapCache(pairs);
2360
+ }
2361
+ data.set(key, value);
2362
+ this.size = data.size;
2363
+ return this;
2364
+ }
2365
+
2366
+ // Add methods to `Stack`.
2367
+ Stack.prototype.clear = stackClear;
2368
+ Stack.prototype['delete'] = stackDelete;
2369
+ Stack.prototype.get = stackGet;
2370
+ Stack.prototype.has = stackHas;
2371
+ Stack.prototype.set = stackSet;
2372
+
2373
+ /*------------------------------------------------------------------------*/
2374
+
2375
+ /**
2376
+ * Creates an array of the enumerable property names of the array-like `value`.
2377
+ *
2378
+ * @private
2379
+ * @param {*} value The value to query.
2380
+ * @param {boolean} inherited Specify returning inherited property names.
2381
+ * @returns {Array} Returns the array of property names.
2382
+ */
2383
+ function arrayLikeKeys(value, inherited) {
2384
+ var isArr = isArray(value),
2385
+ isArg = !isArr && isArguments(value),
2386
+ isBuff = !isArr && !isArg && isBuffer(value),
2387
+ isType = !isArr && !isArg && !isBuff && isTypedArray(value),
2388
+ skipIndexes = isArr || isArg || isBuff || isType,
2389
+ result = skipIndexes ? baseTimes(value.length, String) : [],
2390
+ length = result.length;
2391
+
2392
+ for (var key in value) {
2393
+ if ((inherited || hasOwnProperty.call(value, key)) &&
2394
+ !(skipIndexes && (
2395
+ // Safari 9 has enumerable `arguments.length` in strict mode.
2396
+ key == 'length' ||
2397
+ // Node.js 0.10 has enumerable non-index properties on buffers.
2398
+ (isBuff && (key == 'offset' || key == 'parent')) ||
2399
+ // PhantomJS 2 has enumerable non-index properties on typed arrays.
2400
+ (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
2401
+ // Skip index properties.
2402
+ isIndex(key, length)
2403
+ ))) {
2404
+ result.push(key);
2405
+ }
2406
+ }
2407
+ return result;
2408
+ }
2409
+
2410
+ /**
2411
+ * A specialized version of `_.sample` for arrays.
2412
+ *
2413
+ * @private
2414
+ * @param {Array} array The array to sample.
2415
+ * @returns {*} Returns the random element.
2416
+ */
2417
+ function arraySample(array) {
2418
+ var length = array.length;
2419
+ return length ? array[baseRandom(0, length - 1)] : undefined;
2420
+ }
2421
+
2422
+ /**
2423
+ * A specialized version of `_.sampleSize` for arrays.
2424
+ *
2425
+ * @private
2426
+ * @param {Array} array The array to sample.
2427
+ * @param {number} n The number of elements to sample.
2428
+ * @returns {Array} Returns the random elements.
2429
+ */
2430
+ function arraySampleSize(array, n) {
2431
+ return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
2432
+ }
2433
+
2434
+ /**
2435
+ * A specialized version of `_.shuffle` for arrays.
2436
+ *
2437
+ * @private
2438
+ * @param {Array} array The array to shuffle.
2439
+ * @returns {Array} Returns the new shuffled array.
2440
+ */
2441
+ function arrayShuffle(array) {
2442
+ return shuffleSelf(copyArray(array));
2443
+ }
2444
+
2445
+ /**
2446
+ * This function is like `assignValue` except that it doesn't assign
2447
+ * `undefined` values.
2448
+ *
2449
+ * @private
2450
+ * @param {Object} object The object to modify.
2451
+ * @param {string} key The key of the property to assign.
2452
+ * @param {*} value The value to assign.
2453
+ */
2454
+ function assignMergeValue(object, key, value) {
2455
+ if ((value !== undefined && !eq(object[key], value)) ||
2456
+ (value === undefined && !(key in object))) {
2457
+ baseAssignValue(object, key, value);
2458
+ }
2459
+ }
2460
+
2461
+ /**
2462
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
2463
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2464
+ * for equality comparisons.
2465
+ *
2466
+ * @private
2467
+ * @param {Object} object The object to modify.
2468
+ * @param {string} key The key of the property to assign.
2469
+ * @param {*} value The value to assign.
2470
+ */
2471
+ function assignValue(object, key, value) {
2472
+ var objValue = object[key];
2473
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
2474
+ (value === undefined && !(key in object))) {
2475
+ baseAssignValue(object, key, value);
2476
+ }
2477
+ }
2478
+
2479
+ /**
2480
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
2481
+ *
2482
+ * @private
2483
+ * @param {Array} array The array to inspect.
2484
+ * @param {*} key The key to search for.
2485
+ * @returns {number} Returns the index of the matched value, else `-1`.
2486
+ */
2487
+ function assocIndexOf(array, key) {
2488
+ var length = array.length;
2489
+ while (length--) {
2490
+ if (eq(array[length][0], key)) {
2491
+ return length;
2492
+ }
2493
+ }
2494
+ return -1;
2495
+ }
2496
+
2497
+ /**
2498
+ * Aggregates elements of `collection` on `accumulator` with keys transformed
2499
+ * by `iteratee` and values set by `setter`.
2500
+ *
2501
+ * @private
2502
+ * @param {Array|Object} collection The collection to iterate over.
2503
+ * @param {Function} setter The function to set `accumulator` values.
2504
+ * @param {Function} iteratee The iteratee to transform keys.
2505
+ * @param {Object} accumulator The initial aggregated object.
2506
+ * @returns {Function} Returns `accumulator`.
2507
+ */
2508
+ function baseAggregator(collection, setter, iteratee, accumulator) {
2509
+ baseEach(collection, function(value, key, collection) {
2510
+ setter(accumulator, value, iteratee(value), collection);
2511
+ });
2512
+ return accumulator;
2513
+ }
2514
+
2515
+ /**
2516
+ * The base implementation of `_.assign` without support for multiple sources
2517
+ * or `customizer` functions.
2518
+ *
2519
+ * @private
2520
+ * @param {Object} object The destination object.
2521
+ * @param {Object} source The source object.
2522
+ * @returns {Object} Returns `object`.
2523
+ */
2524
+ function baseAssign(object, source) {
2525
+ return object && copyObject(source, keys(source), object);
2526
+ }
2527
+
2528
+ /**
2529
+ * The base implementation of `_.assignIn` without support for multiple sources
2530
+ * or `customizer` functions.
2531
+ *
2532
+ * @private
2533
+ * @param {Object} object The destination object.
2534
+ * @param {Object} source The source object.
2535
+ * @returns {Object} Returns `object`.
2536
+ */
2537
+ function baseAssignIn(object, source) {
2538
+ return object && copyObject(source, keysIn(source), object);
2539
+ }
2540
+
2541
+ /**
2542
+ * The base implementation of `assignValue` and `assignMergeValue` without
2543
+ * value checks.
2544
+ *
2545
+ * @private
2546
+ * @param {Object} object The object to modify.
2547
+ * @param {string} key The key of the property to assign.
2548
+ * @param {*} value The value to assign.
2549
+ */
2550
+ function baseAssignValue(object, key, value) {
2551
+ if (key == '__proto__' && defineProperty) {
2552
+ defineProperty(object, key, {
2553
+ 'configurable': true,
2554
+ 'enumerable': true,
2555
+ 'value': value,
2556
+ 'writable': true
2557
+ });
2558
+ } else {
2559
+ object[key] = value;
2560
+ }
2561
+ }
2562
+
2563
+ /**
2564
+ * The base implementation of `_.at` without support for individual paths.
2565
+ *
2566
+ * @private
2567
+ * @param {Object} object The object to iterate over.
2568
+ * @param {string[]} paths The property paths to pick.
2569
+ * @returns {Array} Returns the picked elements.
2570
+ */
2571
+ function baseAt(object, paths) {
2572
+ var index = -1,
2573
+ length = paths.length,
2574
+ result = Array(length),
2575
+ skip = object == null;
2576
+
2577
+ while (++index < length) {
2578
+ result[index] = skip ? undefined : get(object, paths[index]);
2579
+ }
2580
+ return result;
2581
+ }
2582
+
2583
+ /**
2584
+ * The base implementation of `_.clamp` which doesn't coerce arguments.
2585
+ *
2586
+ * @private
2587
+ * @param {number} number The number to clamp.
2588
+ * @param {number} [lower] The lower bound.
2589
+ * @param {number} upper The upper bound.
2590
+ * @returns {number} Returns the clamped number.
2591
+ */
2592
+ function baseClamp(number, lower, upper) {
2593
+ if (number === number) {
2594
+ if (upper !== undefined) {
2595
+ number = number <= upper ? number : upper;
2596
+ }
2597
+ if (lower !== undefined) {
2598
+ number = number >= lower ? number : lower;
2599
+ }
2600
+ }
2601
+ return number;
2602
+ }
2603
+
2604
+ /**
2605
+ * The base implementation of `_.clone` and `_.cloneDeep` which tracks
2606
+ * traversed objects.
2607
+ *
2608
+ * @private
2609
+ * @param {*} value The value to clone.
2610
+ * @param {boolean} bitmask The bitmask flags.
2611
+ * 1 - Deep clone
2612
+ * 2 - Flatten inherited properties
2613
+ * 4 - Clone symbols
2614
+ * @param {Function} [customizer] The function to customize cloning.
2615
+ * @param {string} [key] The key of `value`.
2616
+ * @param {Object} [object] The parent object of `value`.
2617
+ * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
2618
+ * @returns {*} Returns the cloned value.
2619
+ */
2620
+ function baseClone(value, bitmask, customizer, key, object, stack) {
2621
+ var result,
2622
+ isDeep = bitmask & CLONE_DEEP_FLAG,
2623
+ isFlat = bitmask & CLONE_FLAT_FLAG,
2624
+ isFull = bitmask & CLONE_SYMBOLS_FLAG;
2625
+
2626
+ if (customizer) {
2627
+ result = object ? customizer(value, key, object, stack) : customizer(value);
2628
+ }
2629
+ if (result !== undefined) {
2630
+ return result;
2631
+ }
2632
+ if (!isObject(value)) {
2633
+ return value;
2634
+ }
2635
+ var isArr = isArray(value);
2636
+ if (isArr) {
2637
+ result = initCloneArray(value);
2638
+ if (!isDeep) {
2639
+ return copyArray(value, result);
2640
+ }
2641
+ } else {
2642
+ var tag = getTag(value),
2643
+ isFunc = tag == funcTag || tag == genTag;
2644
+
2645
+ if (isBuffer(value)) {
2646
+ return cloneBuffer(value, isDeep);
2647
+ }
2648
+ if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
2649
+ result = (isFlat || isFunc) ? {} : initCloneObject(value);
2650
+ if (!isDeep) {
2651
+ return isFlat
2652
+ ? copySymbolsIn(value, baseAssignIn(result, value))
2653
+ : copySymbols(value, baseAssign(result, value));
2654
+ }
2655
+ } else {
2656
+ if (!cloneableTags[tag]) {
2657
+ return object ? value : {};
2658
+ }
2659
+ result = initCloneByTag(value, tag, isDeep);
2660
+ }
2661
+ }
2662
+ // Check for circular references and return its corresponding clone.
2663
+ stack || (stack = new Stack);
2664
+ var stacked = stack.get(value);
2665
+ if (stacked) {
2666
+ return stacked;
2667
+ }
2668
+ stack.set(value, result);
2669
+
2670
+ if (isSet(value)) {
2671
+ value.forEach(function(subValue) {
2672
+ result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
2673
+ });
2674
+ } else if (isMap(value)) {
2675
+ value.forEach(function(subValue, key) {
2676
+ result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
2677
+ });
2678
+ }
2679
+
2680
+ var keysFunc = isFull
2681
+ ? (isFlat ? getAllKeysIn : getAllKeys)
2682
+ : (isFlat ? keysIn : keys);
2683
+
2684
+ var props = isArr ? undefined : keysFunc(value);
2685
+ arrayEach(props || value, function(subValue, key) {
2686
+ if (props) {
2687
+ key = subValue;
2688
+ subValue = value[key];
2689
+ }
2690
+ // Recursively populate clone (susceptible to call stack limits).
2691
+ assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
2692
+ });
2693
+ return result;
2694
+ }
2695
+
2696
+ /**
2697
+ * The base implementation of `_.conforms` which doesn't clone `source`.
2698
+ *
2699
+ * @private
2700
+ * @param {Object} source The object of property predicates to conform to.
2701
+ * @returns {Function} Returns the new spec function.
2702
+ */
2703
+ function baseConforms(source) {
2704
+ var props = keys(source);
2705
+ return function(object) {
2706
+ return baseConformsTo(object, source, props);
2707
+ };
2708
+ }
2709
+
2710
+ /**
2711
+ * The base implementation of `_.conformsTo` which accepts `props` to check.
2712
+ *
2713
+ * @private
2714
+ * @param {Object} object The object to inspect.
2715
+ * @param {Object} source The object of property predicates to conform to.
2716
+ * @returns {boolean} Returns `true` if `object` conforms, else `false`.
2717
+ */
2718
+ function baseConformsTo(object, source, props) {
2719
+ var length = props.length;
2720
+ if (object == null) {
2721
+ return !length;
2722
+ }
2723
+ object = Object(object);
2724
+ while (length--) {
2725
+ var key = props[length],
2726
+ predicate = source[key],
2727
+ value = object[key];
2728
+
2729
+ if ((value === undefined && !(key in object)) || !predicate(value)) {
2730
+ return false;
2731
+ }
2732
+ }
2733
+ return true;
2734
+ }
2735
+
2736
+ /**
2737
+ * The base implementation of `_.delay` and `_.defer` which accepts `args`
2738
+ * to provide to `func`.
2739
+ *
2740
+ * @private
2741
+ * @param {Function} func The function to delay.
2742
+ * @param {number} wait The number of milliseconds to delay invocation.
2743
+ * @param {Array} args The arguments to provide to `func`.
2744
+ * @returns {number|Object} Returns the timer id or timeout object.
2745
+ */
2746
+ function baseDelay(func, wait, args) {
2747
+ if (typeof func != 'function') {
2748
+ throw new TypeError(FUNC_ERROR_TEXT);
2749
+ }
2750
+ return setTimeout(function() { func.apply(undefined, args); }, wait);
2751
+ }
2752
+
2753
+ /**
2754
+ * The base implementation of methods like `_.difference` without support
2755
+ * for excluding multiple arrays or iteratee shorthands.
2756
+ *
2757
+ * @private
2758
+ * @param {Array} array The array to inspect.
2759
+ * @param {Array} values The values to exclude.
2760
+ * @param {Function} [iteratee] The iteratee invoked per element.
2761
+ * @param {Function} [comparator] The comparator invoked per element.
2762
+ * @returns {Array} Returns the new array of filtered values.
2763
+ */
2764
+ function baseDifference(array, values, iteratee, comparator) {
2765
+ var index = -1,
2766
+ includes = arrayIncludes,
2767
+ isCommon = true,
2768
+ length = array.length,
2769
+ result = [],
2770
+ valuesLength = values.length;
2771
+
2772
+ if (!length) {
2773
+ return result;
2774
+ }
2775
+ if (iteratee) {
2776
+ values = arrayMap(values, baseUnary(iteratee));
2777
+ }
2778
+ if (comparator) {
2779
+ includes = arrayIncludesWith;
2780
+ isCommon = false;
2781
+ }
2782
+ else if (values.length >= LARGE_ARRAY_SIZE) {
2783
+ includes = cacheHas;
2784
+ isCommon = false;
2785
+ values = new SetCache(values);
2786
+ }
2787
+ outer:
2788
+ while (++index < length) {
2789
+ var value = array[index],
2790
+ computed = iteratee == null ? value : iteratee(value);
2791
+
2792
+ value = (comparator || value !== 0) ? value : 0;
2793
+ if (isCommon && computed === computed) {
2794
+ var valuesIndex = valuesLength;
2795
+ while (valuesIndex--) {
2796
+ if (values[valuesIndex] === computed) {
2797
+ continue outer;
2798
+ }
2799
+ }
2800
+ result.push(value);
2801
+ }
2802
+ else if (!includes(values, computed, comparator)) {
2803
+ result.push(value);
2804
+ }
2805
+ }
2806
+ return result;
2807
+ }
2808
+
2809
+ /**
2810
+ * The base implementation of `_.forEach` without support for iteratee shorthands.
2811
+ *
2812
+ * @private
2813
+ * @param {Array|Object} collection The collection to iterate over.
2814
+ * @param {Function} iteratee The function invoked per iteration.
2815
+ * @returns {Array|Object} Returns `collection`.
2816
+ */
2817
+ var baseEach = createBaseEach(baseForOwn);
2818
+
2819
+ /**
2820
+ * The base implementation of `_.forEachRight` without support for iteratee shorthands.
2821
+ *
2822
+ * @private
2823
+ * @param {Array|Object} collection The collection to iterate over.
2824
+ * @param {Function} iteratee The function invoked per iteration.
2825
+ * @returns {Array|Object} Returns `collection`.
2826
+ */
2827
+ var baseEachRight = createBaseEach(baseForOwnRight, true);
2828
+
2829
+ /**
2830
+ * The base implementation of `_.every` without support for iteratee shorthands.
2831
+ *
2832
+ * @private
2833
+ * @param {Array|Object} collection The collection to iterate over.
2834
+ * @param {Function} predicate The function invoked per iteration.
2835
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
2836
+ * else `false`
2837
+ */
2838
+ function baseEvery(collection, predicate) {
2839
+ var result = true;
2840
+ baseEach(collection, function(value, index, collection) {
2841
+ result = !!predicate(value, index, collection);
2842
+ return result;
2843
+ });
2844
+ return result;
2845
+ }
2846
+
2847
+ /**
2848
+ * The base implementation of methods like `_.max` and `_.min` which accepts a
2849
+ * `comparator` to determine the extremum value.
2850
+ *
2851
+ * @private
2852
+ * @param {Array} array The array to iterate over.
2853
+ * @param {Function} iteratee The iteratee invoked per iteration.
2854
+ * @param {Function} comparator The comparator used to compare values.
2855
+ * @returns {*} Returns the extremum value.
2856
+ */
2857
+ function baseExtremum(array, iteratee, comparator) {
2858
+ var index = -1,
2859
+ length = array.length;
2860
+
2861
+ while (++index < length) {
2862
+ var value = array[index],
2863
+ current = iteratee(value);
2864
+
2865
+ if (current != null && (computed === undefined
2866
+ ? (current === current && !isSymbol(current))
2867
+ : comparator(current, computed)
2868
+ )) {
2869
+ var computed = current,
2870
+ result = value;
2871
+ }
2872
+ }
2873
+ return result;
2874
+ }
2875
+
2876
+ /**
2877
+ * The base implementation of `_.fill` without an iteratee call guard.
2878
+ *
2879
+ * @private
2880
+ * @param {Array} array The array to fill.
2881
+ * @param {*} value The value to fill `array` with.
2882
+ * @param {number} [start=0] The start position.
2883
+ * @param {number} [end=array.length] The end position.
2884
+ * @returns {Array} Returns `array`.
2885
+ */
2886
+ function baseFill(array, value, start, end) {
2887
+ var length = array.length;
2888
+
2889
+ start = toInteger(start);
2890
+ if (start < 0) {
2891
+ start = -start > length ? 0 : (length + start);
2892
+ }
2893
+ end = (end === undefined || end > length) ? length : toInteger(end);
2894
+ if (end < 0) {
2895
+ end += length;
2896
+ }
2897
+ end = start > end ? 0 : toLength(end);
2898
+ while (start < end) {
2899
+ array[start++] = value;
2900
+ }
2901
+ return array;
2902
+ }
2903
+
2904
+ /**
2905
+ * The base implementation of `_.filter` without support for iteratee shorthands.
2906
+ *
2907
+ * @private
2908
+ * @param {Array|Object} collection The collection to iterate over.
2909
+ * @param {Function} predicate The function invoked per iteration.
2910
+ * @returns {Array} Returns the new filtered array.
2911
+ */
2912
+ function baseFilter(collection, predicate) {
2913
+ var result = [];
2914
+ baseEach(collection, function(value, index, collection) {
2915
+ if (predicate(value, index, collection)) {
2916
+ result.push(value);
2917
+ }
2918
+ });
2919
+ return result;
2920
+ }
2921
+
2922
+ /**
2923
+ * The base implementation of `_.flatten` with support for restricting flattening.
2924
+ *
2925
+ * @private
2926
+ * @param {Array} array The array to flatten.
2927
+ * @param {number} depth The maximum recursion depth.
2928
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
2929
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
2930
+ * @param {Array} [result=[]] The initial result value.
2931
+ * @returns {Array} Returns the new flattened array.
2932
+ */
2933
+ function baseFlatten(array, depth, predicate, isStrict, result) {
2934
+ var index = -1,
2935
+ length = array.length;
2936
+
2937
+ predicate || (predicate = isFlattenable);
2938
+ result || (result = []);
2939
+
2940
+ while (++index < length) {
2941
+ var value = array[index];
2942
+ if (depth > 0 && predicate(value)) {
2943
+ if (depth > 1) {
2944
+ // Recursively flatten arrays (susceptible to call stack limits).
2945
+ baseFlatten(value, depth - 1, predicate, isStrict, result);
2946
+ } else {
2947
+ arrayPush(result, value);
2948
+ }
2949
+ } else if (!isStrict) {
2950
+ result[result.length] = value;
2951
+ }
2952
+ }
2953
+ return result;
2954
+ }
2955
+
2956
+ /**
2957
+ * The base implementation of `baseForOwn` which iterates over `object`
2958
+ * properties returned by `keysFunc` and invokes `iteratee` for each property.
2959
+ * Iteratee functions may exit iteration early by explicitly returning `false`.
2960
+ *
2961
+ * @private
2962
+ * @param {Object} object The object to iterate over.
2963
+ * @param {Function} iteratee The function invoked per iteration.
2964
+ * @param {Function} keysFunc The function to get the keys of `object`.
2965
+ * @returns {Object} Returns `object`.
2966
+ */
2967
+ var baseFor = createBaseFor();
2968
+
2969
+ /**
2970
+ * This function is like `baseFor` except that it iterates over properties
2971
+ * in the opposite order.
2972
+ *
2973
+ * @private
2974
+ * @param {Object} object The object to iterate over.
2975
+ * @param {Function} iteratee The function invoked per iteration.
2976
+ * @param {Function} keysFunc The function to get the keys of `object`.
2977
+ * @returns {Object} Returns `object`.
2978
+ */
2979
+ var baseForRight = createBaseFor(true);
2980
+
2981
+ /**
2982
+ * The base implementation of `_.forOwn` without support for iteratee shorthands.
2983
+ *
2984
+ * @private
2985
+ * @param {Object} object The object to iterate over.
2986
+ * @param {Function} iteratee The function invoked per iteration.
2987
+ * @returns {Object} Returns `object`.
2988
+ */
2989
+ function baseForOwn(object, iteratee) {
2990
+ return object && baseFor(object, iteratee, keys);
2991
+ }
2992
+
2993
+ /**
2994
+ * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
2995
+ *
2996
+ * @private
2997
+ * @param {Object} object The object to iterate over.
2998
+ * @param {Function} iteratee The function invoked per iteration.
2999
+ * @returns {Object} Returns `object`.
3000
+ */
3001
+ function baseForOwnRight(object, iteratee) {
3002
+ return object && baseForRight(object, iteratee, keys);
3003
+ }
3004
+
3005
+ /**
3006
+ * The base implementation of `_.functions` which creates an array of
3007
+ * `object` function property names filtered from `props`.
3008
+ *
3009
+ * @private
3010
+ * @param {Object} object The object to inspect.
3011
+ * @param {Array} props The property names to filter.
3012
+ * @returns {Array} Returns the function names.
3013
+ */
3014
+ function baseFunctions(object, props) {
3015
+ return arrayFilter(props, function(key) {
3016
+ return isFunction(object[key]);
3017
+ });
3018
+ }
3019
+
3020
+ /**
3021
+ * The base implementation of `_.get` without support for default values.
3022
+ *
3023
+ * @private
3024
+ * @param {Object} object The object to query.
3025
+ * @param {Array|string} path The path of the property to get.
3026
+ * @returns {*} Returns the resolved value.
3027
+ */
3028
+ function baseGet(object, path) {
3029
+ path = castPath(path, object);
3030
+
3031
+ var index = 0,
3032
+ length = path.length;
3033
+
3034
+ while (object != null && index < length) {
3035
+ object = object[toKey(path[index++])];
3036
+ }
3037
+ return (index && index == length) ? object : undefined;
3038
+ }
3039
+
3040
+ /**
3041
+ * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
3042
+ * `keysFunc` and `symbolsFunc` to get the enumerable property names and
3043
+ * symbols of `object`.
3044
+ *
3045
+ * @private
3046
+ * @param {Object} object The object to query.
3047
+ * @param {Function} keysFunc The function to get the keys of `object`.
3048
+ * @param {Function} symbolsFunc The function to get the symbols of `object`.
3049
+ * @returns {Array} Returns the array of property names and symbols.
3050
+ */
3051
+ function baseGetAllKeys(object, keysFunc, symbolsFunc) {
3052
+ var result = keysFunc(object);
3053
+ return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
3054
+ }
3055
+
3056
+ /**
3057
+ * The base implementation of `getTag` without fallbacks for buggy environments.
3058
+ *
3059
+ * @private
3060
+ * @param {*} value The value to query.
3061
+ * @returns {string} Returns the `toStringTag`.
3062
+ */
3063
+ function baseGetTag(value) {
3064
+ if (value == null) {
3065
+ return value === undefined ? undefinedTag : nullTag;
3066
+ }
3067
+ return (symToStringTag && symToStringTag in Object(value))
3068
+ ? getRawTag(value)
3069
+ : objectToString(value);
3070
+ }
3071
+
3072
+ /**
3073
+ * The base implementation of `_.gt` which doesn't coerce arguments.
3074
+ *
3075
+ * @private
3076
+ * @param {*} value The value to compare.
3077
+ * @param {*} other The other value to compare.
3078
+ * @returns {boolean} Returns `true` if `value` is greater than `other`,
3079
+ * else `false`.
3080
+ */
3081
+ function baseGt(value, other) {
3082
+ return value > other;
3083
+ }
3084
+
3085
+ /**
3086
+ * The base implementation of `_.has` without support for deep paths.
3087
+ *
3088
+ * @private
3089
+ * @param {Object} [object] The object to query.
3090
+ * @param {Array|string} key The key to check.
3091
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
3092
+ */
3093
+ function baseHas(object, key) {
3094
+ return object != null && hasOwnProperty.call(object, key);
3095
+ }
3096
+
3097
+ /**
3098
+ * The base implementation of `_.hasIn` without support for deep paths.
3099
+ *
3100
+ * @private
3101
+ * @param {Object} [object] The object to query.
3102
+ * @param {Array|string} key The key to check.
3103
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
3104
+ */
3105
+ function baseHasIn(object, key) {
3106
+ return object != null && key in Object(object);
3107
+ }
3108
+
3109
+ /**
3110
+ * The base implementation of `_.inRange` which doesn't coerce arguments.
3111
+ *
3112
+ * @private
3113
+ * @param {number} number The number to check.
3114
+ * @param {number} start The start of the range.
3115
+ * @param {number} end The end of the range.
3116
+ * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
3117
+ */
3118
+ function baseInRange(number, start, end) {
3119
+ return number >= nativeMin(start, end) && number < nativeMax(start, end);
3120
+ }
3121
+
3122
+ /**
3123
+ * The base implementation of methods like `_.intersection`, without support
3124
+ * for iteratee shorthands, that accepts an array of arrays to inspect.
3125
+ *
3126
+ * @private
3127
+ * @param {Array} arrays The arrays to inspect.
3128
+ * @param {Function} [iteratee] The iteratee invoked per element.
3129
+ * @param {Function} [comparator] The comparator invoked per element.
3130
+ * @returns {Array} Returns the new array of shared values.
3131
+ */
3132
+ function baseIntersection(arrays, iteratee, comparator) {
3133
+ var includes = comparator ? arrayIncludesWith : arrayIncludes,
3134
+ length = arrays[0].length,
3135
+ othLength = arrays.length,
3136
+ othIndex = othLength,
3137
+ caches = Array(othLength),
3138
+ maxLength = Infinity,
3139
+ result = [];
3140
+
3141
+ while (othIndex--) {
3142
+ var array = arrays[othIndex];
3143
+ if (othIndex && iteratee) {
3144
+ array = arrayMap(array, baseUnary(iteratee));
3145
+ }
3146
+ maxLength = nativeMin(array.length, maxLength);
3147
+ caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
3148
+ ? new SetCache(othIndex && array)
3149
+ : undefined;
3150
+ }
3151
+ array = arrays[0];
3152
+
3153
+ var index = -1,
3154
+ seen = caches[0];
3155
+
3156
+ outer:
3157
+ while (++index < length && result.length < maxLength) {
3158
+ var value = array[index],
3159
+ computed = iteratee ? iteratee(value) : value;
3160
+
3161
+ value = (comparator || value !== 0) ? value : 0;
3162
+ if (!(seen
3163
+ ? cacheHas(seen, computed)
3164
+ : includes(result, computed, comparator)
3165
+ )) {
3166
+ othIndex = othLength;
3167
+ while (--othIndex) {
3168
+ var cache = caches[othIndex];
3169
+ if (!(cache
3170
+ ? cacheHas(cache, computed)
3171
+ : includes(arrays[othIndex], computed, comparator))
3172
+ ) {
3173
+ continue outer;
3174
+ }
3175
+ }
3176
+ if (seen) {
3177
+ seen.push(computed);
3178
+ }
3179
+ result.push(value);
3180
+ }
3181
+ }
3182
+ return result;
3183
+ }
3184
+
3185
+ /**
3186
+ * The base implementation of `_.invert` and `_.invertBy` which inverts
3187
+ * `object` with values transformed by `iteratee` and set by `setter`.
3188
+ *
3189
+ * @private
3190
+ * @param {Object} object The object to iterate over.
3191
+ * @param {Function} setter The function to set `accumulator` values.
3192
+ * @param {Function} iteratee The iteratee to transform values.
3193
+ * @param {Object} accumulator The initial inverted object.
3194
+ * @returns {Function} Returns `accumulator`.
3195
+ */
3196
+ function baseInverter(object, setter, iteratee, accumulator) {
3197
+ baseForOwn(object, function(value, key, object) {
3198
+ setter(accumulator, iteratee(value), key, object);
3199
+ });
3200
+ return accumulator;
3201
+ }
3202
+
3203
+ /**
3204
+ * The base implementation of `_.invoke` without support for individual
3205
+ * method arguments.
3206
+ *
3207
+ * @private
3208
+ * @param {Object} object The object to query.
3209
+ * @param {Array|string} path The path of the method to invoke.
3210
+ * @param {Array} args The arguments to invoke the method with.
3211
+ * @returns {*} Returns the result of the invoked method.
3212
+ */
3213
+ function baseInvoke(object, path, args) {
3214
+ path = castPath(path, object);
3215
+ object = parent(object, path);
3216
+ var func = object == null ? object : object[toKey(last(path))];
3217
+ return func == null ? undefined : apply(func, object, args);
3218
+ }
3219
+
3220
+ /**
3221
+ * The base implementation of `_.isArguments`.
3222
+ *
3223
+ * @private
3224
+ * @param {*} value The value to check.
3225
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
3226
+ */
3227
+ function baseIsArguments(value) {
3228
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
3229
+ }
3230
+
3231
+ /**
3232
+ * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
3233
+ *
3234
+ * @private
3235
+ * @param {*} value The value to check.
3236
+ * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
3237
+ */
3238
+ function baseIsArrayBuffer(value) {
3239
+ return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
3240
+ }
3241
+
3242
+ /**
3243
+ * The base implementation of `_.isDate` without Node.js optimizations.
3244
+ *
3245
+ * @private
3246
+ * @param {*} value The value to check.
3247
+ * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
3248
+ */
3249
+ function baseIsDate(value) {
3250
+ return isObjectLike(value) && baseGetTag(value) == dateTag;
3251
+ }
3252
+
3253
+ /**
3254
+ * The base implementation of `_.isEqual` which supports partial comparisons
3255
+ * and tracks traversed objects.
3256
+ *
3257
+ * @private
3258
+ * @param {*} value The value to compare.
3259
+ * @param {*} other The other value to compare.
3260
+ * @param {boolean} bitmask The bitmask flags.
3261
+ * 1 - Unordered comparison
3262
+ * 2 - Partial comparison
3263
+ * @param {Function} [customizer] The function to customize comparisons.
3264
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
3265
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3266
+ */
3267
+ function baseIsEqual(value, other, bitmask, customizer, stack) {
3268
+ if (value === other) {
3269
+ return true;
3270
+ }
3271
+ if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
3272
+ return value !== value && other !== other;
3273
+ }
3274
+ return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
3275
+ }
3276
+
3277
+ /**
3278
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
3279
+ * deep comparisons and tracks traversed objects enabling objects with circular
3280
+ * references to be compared.
3281
+ *
3282
+ * @private
3283
+ * @param {Object} object The object to compare.
3284
+ * @param {Object} other The other object to compare.
3285
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
3286
+ * @param {Function} customizer The function to customize comparisons.
3287
+ * @param {Function} equalFunc The function to determine equivalents of values.
3288
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
3289
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
3290
+ */
3291
+ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
3292
+ var objIsArr = isArray(object),
3293
+ othIsArr = isArray(other),
3294
+ objTag = objIsArr ? arrayTag : getTag(object),
3295
+ othTag = othIsArr ? arrayTag : getTag(other);
3296
+
3297
+ objTag = objTag == argsTag ? objectTag : objTag;
3298
+ othTag = othTag == argsTag ? objectTag : othTag;
3299
+
3300
+ var objIsObj = objTag == objectTag,
3301
+ othIsObj = othTag == objectTag,
3302
+ isSameTag = objTag == othTag;
3303
+
3304
+ if (isSameTag && isBuffer(object)) {
3305
+ if (!isBuffer(other)) {
3306
+ return false;
3307
+ }
3308
+ objIsArr = true;
3309
+ objIsObj = false;
3310
+ }
3311
+ if (isSameTag && !objIsObj) {
3312
+ stack || (stack = new Stack);
3313
+ return (objIsArr || isTypedArray(object))
3314
+ ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
3315
+ : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
3316
+ }
3317
+ if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
3318
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
3319
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
3320
+
3321
+ if (objIsWrapped || othIsWrapped) {
3322
+ var objUnwrapped = objIsWrapped ? object.value() : object,
3323
+ othUnwrapped = othIsWrapped ? other.value() : other;
3324
+
3325
+ stack || (stack = new Stack);
3326
+ return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
3327
+ }
3328
+ }
3329
+ if (!isSameTag) {
3330
+ return false;
3331
+ }
3332
+ stack || (stack = new Stack);
3333
+ return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
3334
+ }
3335
+
3336
+ /**
3337
+ * The base implementation of `_.isMap` without Node.js optimizations.
3338
+ *
3339
+ * @private
3340
+ * @param {*} value The value to check.
3341
+ * @returns {boolean} Returns `true` if `value` is a map, else `false`.
3342
+ */
3343
+ function baseIsMap(value) {
3344
+ return isObjectLike(value) && getTag(value) == mapTag;
3345
+ }
3346
+
3347
+ /**
3348
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
3349
+ *
3350
+ * @private
3351
+ * @param {Object} object The object to inspect.
3352
+ * @param {Object} source The object of property values to match.
3353
+ * @param {Array} matchData The property names, values, and compare flags to match.
3354
+ * @param {Function} [customizer] The function to customize comparisons.
3355
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3356
+ */
3357
+ function baseIsMatch(object, source, matchData, customizer) {
3358
+ var index = matchData.length,
3359
+ length = index,
3360
+ noCustomizer = !customizer;
3361
+
3362
+ if (object == null) {
3363
+ return !length;
3364
+ }
3365
+ object = Object(object);
3366
+ while (index--) {
3367
+ var data = matchData[index];
3368
+ if ((noCustomizer && data[2])
3369
+ ? data[1] !== object[data[0]]
3370
+ : !(data[0] in object)
3371
+ ) {
3372
+ return false;
3373
+ }
3374
+ }
3375
+ while (++index < length) {
3376
+ data = matchData[index];
3377
+ var key = data[0],
3378
+ objValue = object[key],
3379
+ srcValue = data[1];
3380
+
3381
+ if (noCustomizer && data[2]) {
3382
+ if (objValue === undefined && !(key in object)) {
3383
+ return false;
3384
+ }
3385
+ } else {
3386
+ var stack = new Stack;
3387
+ if (customizer) {
3388
+ var result = customizer(objValue, srcValue, key, object, source, stack);
3389
+ }
3390
+ if (!(result === undefined
3391
+ ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
3392
+ : result
3393
+ )) {
3394
+ return false;
3395
+ }
3396
+ }
3397
+ }
3398
+ return true;
3399
+ }
3400
+
3401
+ /**
3402
+ * The base implementation of `_.isNative` without bad shim checks.
3403
+ *
3404
+ * @private
3405
+ * @param {*} value The value to check.
3406
+ * @returns {boolean} Returns `true` if `value` is a native function,
3407
+ * else `false`.
3408
+ */
3409
+ function baseIsNative(value) {
3410
+ if (!isObject(value) || isMasked(value)) {
3411
+ return false;
3412
+ }
3413
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
3414
+ return pattern.test(toSource(value));
3415
+ }
3416
+
3417
+ /**
3418
+ * The base implementation of `_.isRegExp` without Node.js optimizations.
3419
+ *
3420
+ * @private
3421
+ * @param {*} value The value to check.
3422
+ * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
3423
+ */
3424
+ function baseIsRegExp(value) {
3425
+ return isObjectLike(value) && baseGetTag(value) == regexpTag;
3426
+ }
3427
+
3428
+ /**
3429
+ * The base implementation of `_.isSet` without Node.js optimizations.
3430
+ *
3431
+ * @private
3432
+ * @param {*} value The value to check.
3433
+ * @returns {boolean} Returns `true` if `value` is a set, else `false`.
3434
+ */
3435
+ function baseIsSet(value) {
3436
+ return isObjectLike(value) && getTag(value) == setTag;
3437
+ }
3438
+
3439
+ /**
3440
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
3441
+ *
3442
+ * @private
3443
+ * @param {*} value The value to check.
3444
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
3445
+ */
3446
+ function baseIsTypedArray(value) {
3447
+ return isObjectLike(value) &&
3448
+ isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
3449
+ }
3450
+
3451
+ /**
3452
+ * The base implementation of `_.iteratee`.
3453
+ *
3454
+ * @private
3455
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
3456
+ * @returns {Function} Returns the iteratee.
3457
+ */
3458
+ function baseIteratee(value) {
3459
+ // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
3460
+ // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
3461
+ if (typeof value == 'function') {
3462
+ return value;
3463
+ }
3464
+ if (value == null) {
3465
+ return identity;
3466
+ }
3467
+ if (typeof value == 'object') {
3468
+ return isArray(value)
3469
+ ? baseMatchesProperty(value[0], value[1])
3470
+ : baseMatches(value);
3471
+ }
3472
+ return property(value);
3473
+ }
3474
+
3475
+ /**
3476
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
3477
+ *
3478
+ * @private
3479
+ * @param {Object} object The object to query.
3480
+ * @returns {Array} Returns the array of property names.
3481
+ */
3482
+ function baseKeys(object) {
3483
+ if (!isPrototype(object)) {
3484
+ return nativeKeys(object);
3485
+ }
3486
+ var result = [];
3487
+ for (var key in Object(object)) {
3488
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
3489
+ result.push(key);
3490
+ }
3491
+ }
3492
+ return result;
3493
+ }
3494
+
3495
+ /**
3496
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
3497
+ *
3498
+ * @private
3499
+ * @param {Object} object The object to query.
3500
+ * @returns {Array} Returns the array of property names.
3501
+ */
3502
+ function baseKeysIn(object) {
3503
+ if (!isObject(object)) {
3504
+ return nativeKeysIn(object);
3505
+ }
3506
+ var isProto = isPrototype(object),
3507
+ result = [];
3508
+
3509
+ for (var key in object) {
3510
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3511
+ result.push(key);
3512
+ }
3513
+ }
3514
+ return result;
3515
+ }
3516
+
3517
+ /**
3518
+ * The base implementation of `_.lt` which doesn't coerce arguments.
3519
+ *
3520
+ * @private
3521
+ * @param {*} value The value to compare.
3522
+ * @param {*} other The other value to compare.
3523
+ * @returns {boolean} Returns `true` if `value` is less than `other`,
3524
+ * else `false`.
3525
+ */
3526
+ function baseLt(value, other) {
3527
+ return value < other;
3528
+ }
3529
+
3530
+ /**
3531
+ * The base implementation of `_.map` without support for iteratee shorthands.
3532
+ *
3533
+ * @private
3534
+ * @param {Array|Object} collection The collection to iterate over.
3535
+ * @param {Function} iteratee The function invoked per iteration.
3536
+ * @returns {Array} Returns the new mapped array.
3537
+ */
3538
+ function baseMap(collection, iteratee) {
3539
+ var index = -1,
3540
+ result = isArrayLike(collection) ? Array(collection.length) : [];
3541
+
3542
+ baseEach(collection, function(value, key, collection) {
3543
+ result[++index] = iteratee(value, key, collection);
3544
+ });
3545
+ return result;
3546
+ }
3547
+
3548
+ /**
3549
+ * The base implementation of `_.matches` which doesn't clone `source`.
3550
+ *
3551
+ * @private
3552
+ * @param {Object} source The object of property values to match.
3553
+ * @returns {Function} Returns the new spec function.
3554
+ */
3555
+ function baseMatches(source) {
3556
+ var matchData = getMatchData(source);
3557
+ if (matchData.length == 1 && matchData[0][2]) {
3558
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
3559
+ }
3560
+ return function(object) {
3561
+ return object === source || baseIsMatch(object, source, matchData);
3562
+ };
3563
+ }
3564
+
3565
+ /**
3566
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
3567
+ *
3568
+ * @private
3569
+ * @param {string} path The path of the property to get.
3570
+ * @param {*} srcValue The value to match.
3571
+ * @returns {Function} Returns the new spec function.
3572
+ */
3573
+ function baseMatchesProperty(path, srcValue) {
3574
+ if (isKey(path) && isStrictComparable(srcValue)) {
3575
+ return matchesStrictComparable(toKey(path), srcValue);
3576
+ }
3577
+ return function(object) {
3578
+ var objValue = get(object, path);
3579
+ return (objValue === undefined && objValue === srcValue)
3580
+ ? hasIn(object, path)
3581
+ : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
3582
+ };
3583
+ }
3584
+
3585
+ /**
3586
+ * The base implementation of `_.merge` without support for multiple sources.
3587
+ *
3588
+ * @private
3589
+ * @param {Object} object The destination object.
3590
+ * @param {Object} source The source object.
3591
+ * @param {number} srcIndex The index of `source`.
3592
+ * @param {Function} [customizer] The function to customize merged values.
3593
+ * @param {Object} [stack] Tracks traversed source values and their merged
3594
+ * counterparts.
3595
+ */
3596
+ function baseMerge(object, source, srcIndex, customizer, stack) {
3597
+ if (object === source) {
3598
+ return;
3599
+ }
3600
+ baseFor(source, function(srcValue, key) {
3601
+ stack || (stack = new Stack);
3602
+ if (isObject(srcValue)) {
3603
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
3604
+ }
3605
+ else {
3606
+ var newValue = customizer
3607
+ ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
3608
+ : undefined;
3609
+
3610
+ if (newValue === undefined) {
3611
+ newValue = srcValue;
3612
+ }
3613
+ assignMergeValue(object, key, newValue);
3614
+ }
3615
+ }, keysIn);
3616
+ }
3617
+
3618
+ /**
3619
+ * A specialized version of `baseMerge` for arrays and objects which performs
3620
+ * deep merges and tracks traversed objects enabling objects with circular
3621
+ * references to be merged.
3622
+ *
3623
+ * @private
3624
+ * @param {Object} object The destination object.
3625
+ * @param {Object} source The source object.
3626
+ * @param {string} key The key of the value to merge.
3627
+ * @param {number} srcIndex The index of `source`.
3628
+ * @param {Function} mergeFunc The function to merge values.
3629
+ * @param {Function} [customizer] The function to customize assigned values.
3630
+ * @param {Object} [stack] Tracks traversed source values and their merged
3631
+ * counterparts.
3632
+ */
3633
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
3634
+ var objValue = safeGet(object, key),
3635
+ srcValue = safeGet(source, key),
3636
+ stacked = stack.get(srcValue);
3637
+
3638
+ if (stacked) {
3639
+ assignMergeValue(object, key, stacked);
3640
+ return;
3641
+ }
3642
+ var newValue = customizer
3643
+ ? customizer(objValue, srcValue, (key + ''), object, source, stack)
3644
+ : undefined;
3645
+
3646
+ var isCommon = newValue === undefined;
3647
+
3648
+ if (isCommon) {
3649
+ var isArr = isArray(srcValue),
3650
+ isBuff = !isArr && isBuffer(srcValue),
3651
+ isTyped = !isArr && !isBuff && isTypedArray(srcValue);
3652
+
3653
+ newValue = srcValue;
3654
+ if (isArr || isBuff || isTyped) {
3655
+ if (isArray(objValue)) {
3656
+ newValue = objValue;
3657
+ }
3658
+ else if (isArrayLikeObject(objValue)) {
3659
+ newValue = copyArray(objValue);
3660
+ }
3661
+ else if (isBuff) {
3662
+ isCommon = false;
3663
+ newValue = cloneBuffer(srcValue, true);
3664
+ }
3665
+ else if (isTyped) {
3666
+ isCommon = false;
3667
+ newValue = cloneTypedArray(srcValue, true);
3668
+ }
3669
+ else {
3670
+ newValue = [];
3671
+ }
3672
+ }
3673
+ else if (isPlainObject(srcValue) || isArguments(srcValue)) {
3674
+ newValue = objValue;
3675
+ if (isArguments(objValue)) {
3676
+ newValue = toPlainObject(objValue);
3677
+ }
3678
+ else if (!isObject(objValue) || isFunction(objValue)) {
3679
+ newValue = initCloneObject(srcValue);
3680
+ }
3681
+ }
3682
+ else {
3683
+ isCommon = false;
3684
+ }
3685
+ }
3686
+ if (isCommon) {
3687
+ // Recursively merge objects and arrays (susceptible to call stack limits).
3688
+ stack.set(srcValue, newValue);
3689
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
3690
+ stack['delete'](srcValue);
3691
+ }
3692
+ assignMergeValue(object, key, newValue);
3693
+ }
3694
+
3695
+ /**
3696
+ * The base implementation of `_.nth` which doesn't coerce arguments.
3697
+ *
3698
+ * @private
3699
+ * @param {Array} array The array to query.
3700
+ * @param {number} n The index of the element to return.
3701
+ * @returns {*} Returns the nth element of `array`.
3702
+ */
3703
+ function baseNth(array, n) {
3704
+ var length = array.length;
3705
+ if (!length) {
3706
+ return;
3707
+ }
3708
+ n += n < 0 ? length : 0;
3709
+ return isIndex(n, length) ? array[n] : undefined;
3710
+ }
3711
+
3712
+ /**
3713
+ * The base implementation of `_.orderBy` without param guards.
3714
+ *
3715
+ * @private
3716
+ * @param {Array|Object} collection The collection to iterate over.
3717
+ * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
3718
+ * @param {string[]} orders The sort orders of `iteratees`.
3719
+ * @returns {Array} Returns the new sorted array.
3720
+ */
3721
+ function baseOrderBy(collection, iteratees, orders) {
3722
+ if (iteratees.length) {
3723
+ iteratees = arrayMap(iteratees, function(iteratee) {
3724
+ if (isArray(iteratee)) {
3725
+ return function(value) {
3726
+ return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
3727
+ }
3728
+ }
3729
+ return iteratee;
3730
+ });
3731
+ } else {
3732
+ iteratees = [identity];
3733
+ }
3734
+
3735
+ var index = -1;
3736
+ iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
3737
+
3738
+ var result = baseMap(collection, function(value, key, collection) {
3739
+ var criteria = arrayMap(iteratees, function(iteratee) {
3740
+ return iteratee(value);
3741
+ });
3742
+ return { 'criteria': criteria, 'index': ++index, 'value': value };
3743
+ });
3744
+
3745
+ return baseSortBy(result, function(object, other) {
3746
+ return compareMultiple(object, other, orders);
3747
+ });
3748
+ }
3749
+
3750
+ /**
3751
+ * The base implementation of `_.pick` without support for individual
3752
+ * property identifiers.
3753
+ *
3754
+ * @private
3755
+ * @param {Object} object The source object.
3756
+ * @param {string[]} paths The property paths to pick.
3757
+ * @returns {Object} Returns the new object.
3758
+ */
3759
+ function basePick(object, paths) {
3760
+ return basePickBy(object, paths, function(value, path) {
3761
+ return hasIn(object, path);
3762
+ });
3763
+ }
3764
+
3765
+ /**
3766
+ * The base implementation of `_.pickBy` without support for iteratee shorthands.
3767
+ *
3768
+ * @private
3769
+ * @param {Object} object The source object.
3770
+ * @param {string[]} paths The property paths to pick.
3771
+ * @param {Function} predicate The function invoked per property.
3772
+ * @returns {Object} Returns the new object.
3773
+ */
3774
+ function basePickBy(object, paths, predicate) {
3775
+ var index = -1,
3776
+ length = paths.length,
3777
+ result = {};
3778
+
3779
+ while (++index < length) {
3780
+ var path = paths[index],
3781
+ value = baseGet(object, path);
3782
+
3783
+ if (predicate(value, path)) {
3784
+ baseSet(result, castPath(path, object), value);
3785
+ }
3786
+ }
3787
+ return result;
3788
+ }
3789
+
3790
+ /**
3791
+ * A specialized version of `baseProperty` which supports deep paths.
3792
+ *
3793
+ * @private
3794
+ * @param {Array|string} path The path of the property to get.
3795
+ * @returns {Function} Returns the new accessor function.
3796
+ */
3797
+ function basePropertyDeep(path) {
3798
+ return function(object) {
3799
+ return baseGet(object, path);
3800
+ };
3801
+ }
3802
+
3803
+ /**
3804
+ * The base implementation of `_.pullAllBy` without support for iteratee
3805
+ * shorthands.
3806
+ *
3807
+ * @private
3808
+ * @param {Array} array The array to modify.
3809
+ * @param {Array} values The values to remove.
3810
+ * @param {Function} [iteratee] The iteratee invoked per element.
3811
+ * @param {Function} [comparator] The comparator invoked per element.
3812
+ * @returns {Array} Returns `array`.
3813
+ */
3814
+ function basePullAll(array, values, iteratee, comparator) {
3815
+ var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
3816
+ index = -1,
3817
+ length = values.length,
3818
+ seen = array;
3819
+
3820
+ if (array === values) {
3821
+ values = copyArray(values);
3822
+ }
3823
+ if (iteratee) {
3824
+ seen = arrayMap(array, baseUnary(iteratee));
3825
+ }
3826
+ while (++index < length) {
3827
+ var fromIndex = 0,
3828
+ value = values[index],
3829
+ computed = iteratee ? iteratee(value) : value;
3830
+
3831
+ while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
3832
+ if (seen !== array) {
3833
+ splice.call(seen, fromIndex, 1);
3834
+ }
3835
+ splice.call(array, fromIndex, 1);
3836
+ }
3837
+ }
3838
+ return array;
3839
+ }
3840
+
3841
+ /**
3842
+ * The base implementation of `_.pullAt` without support for individual
3843
+ * indexes or capturing the removed elements.
3844
+ *
3845
+ * @private
3846
+ * @param {Array} array The array to modify.
3847
+ * @param {number[]} indexes The indexes of elements to remove.
3848
+ * @returns {Array} Returns `array`.
3849
+ */
3850
+ function basePullAt(array, indexes) {
3851
+ var length = array ? indexes.length : 0,
3852
+ lastIndex = length - 1;
3853
+
3854
+ while (length--) {
3855
+ var index = indexes[length];
3856
+ if (length == lastIndex || index !== previous) {
3857
+ var previous = index;
3858
+ if (isIndex(index)) {
3859
+ splice.call(array, index, 1);
3860
+ } else {
3861
+ baseUnset(array, index);
3862
+ }
3863
+ }
3864
+ }
3865
+ return array;
3866
+ }
3867
+
3868
+ /**
3869
+ * The base implementation of `_.random` without support for returning
3870
+ * floating-point numbers.
3871
+ *
3872
+ * @private
3873
+ * @param {number} lower The lower bound.
3874
+ * @param {number} upper The upper bound.
3875
+ * @returns {number} Returns the random number.
3876
+ */
3877
+ function baseRandom(lower, upper) {
3878
+ return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
3879
+ }
3880
+
3881
+ /**
3882
+ * The base implementation of `_.range` and `_.rangeRight` which doesn't
3883
+ * coerce arguments.
3884
+ *
3885
+ * @private
3886
+ * @param {number} start The start of the range.
3887
+ * @param {number} end The end of the range.
3888
+ * @param {number} step The value to increment or decrement by.
3889
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3890
+ * @returns {Array} Returns the range of numbers.
3891
+ */
3892
+ function baseRange(start, end, step, fromRight) {
3893
+ var index = -1,
3894
+ length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
3895
+ result = Array(length);
3896
+
3897
+ while (length--) {
3898
+ result[fromRight ? length : ++index] = start;
3899
+ start += step;
3900
+ }
3901
+ return result;
3902
+ }
3903
+
3904
+ /**
3905
+ * The base implementation of `_.repeat` which doesn't coerce arguments.
3906
+ *
3907
+ * @private
3908
+ * @param {string} string The string to repeat.
3909
+ * @param {number} n The number of times to repeat the string.
3910
+ * @returns {string} Returns the repeated string.
3911
+ */
3912
+ function baseRepeat(string, n) {
3913
+ var result = '';
3914
+ if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
3915
+ return result;
3916
+ }
3917
+ // Leverage the exponentiation by squaring algorithm for a faster repeat.
3918
+ // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
3919
+ do {
3920
+ if (n % 2) {
3921
+ result += string;
3922
+ }
3923
+ n = nativeFloor(n / 2);
3924
+ if (n) {
3925
+ string += string;
3926
+ }
3927
+ } while (n);
3928
+
3929
+ return result;
3930
+ }
3931
+
3932
+ /**
3933
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
3934
+ *
3935
+ * @private
3936
+ * @param {Function} func The function to apply a rest parameter to.
3937
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
3938
+ * @returns {Function} Returns the new function.
3939
+ */
3940
+ function baseRest(func, start) {
3941
+ return setToString(overRest(func, start, identity), func + '');
3942
+ }
3943
+
3944
+ /**
3945
+ * The base implementation of `_.sample`.
3946
+ *
3947
+ * @private
3948
+ * @param {Array|Object} collection The collection to sample.
3949
+ * @returns {*} Returns the random element.
3950
+ */
3951
+ function baseSample(collection) {
3952
+ return arraySample(values(collection));
3953
+ }
3954
+
3955
+ /**
3956
+ * The base implementation of `_.sampleSize` without param guards.
3957
+ *
3958
+ * @private
3959
+ * @param {Array|Object} collection The collection to sample.
3960
+ * @param {number} n The number of elements to sample.
3961
+ * @returns {Array} Returns the random elements.
3962
+ */
3963
+ function baseSampleSize(collection, n) {
3964
+ var array = values(collection);
3965
+ return shuffleSelf(array, baseClamp(n, 0, array.length));
3966
+ }
3967
+
3968
+ /**
3969
+ * The base implementation of `_.set`.
3970
+ *
3971
+ * @private
3972
+ * @param {Object} object The object to modify.
3973
+ * @param {Array|string} path The path of the property to set.
3974
+ * @param {*} value The value to set.
3975
+ * @param {Function} [customizer] The function to customize path creation.
3976
+ * @returns {Object} Returns `object`.
3977
+ */
3978
+ function baseSet(object, path, value, customizer) {
3979
+ if (!isObject(object)) {
3980
+ return object;
3981
+ }
3982
+ path = castPath(path, object);
3983
+
3984
+ var index = -1,
3985
+ length = path.length,
3986
+ lastIndex = length - 1,
3987
+ nested = object;
3988
+
3989
+ while (nested != null && ++index < length) {
3990
+ var key = toKey(path[index]),
3991
+ newValue = value;
3992
+
3993
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
3994
+ return object;
3995
+ }
3996
+
3997
+ if (index != lastIndex) {
3998
+ var objValue = nested[key];
3999
+ newValue = customizer ? customizer(objValue, key, nested) : undefined;
4000
+ if (newValue === undefined) {
4001
+ newValue = isObject(objValue)
4002
+ ? objValue
4003
+ : (isIndex(path[index + 1]) ? [] : {});
4004
+ }
4005
+ }
4006
+ assignValue(nested, key, newValue);
4007
+ nested = nested[key];
4008
+ }
4009
+ return object;
4010
+ }
4011
+
4012
+ /**
4013
+ * The base implementation of `setData` without support for hot loop shorting.
4014
+ *
4015
+ * @private
4016
+ * @param {Function} func The function to associate metadata with.
4017
+ * @param {*} data The metadata.
4018
+ * @returns {Function} Returns `func`.
4019
+ */
4020
+ var baseSetData = !metaMap ? identity : function(func, data) {
4021
+ metaMap.set(func, data);
4022
+ return func;
4023
+ };
4024
+
4025
+ /**
4026
+ * The base implementation of `setToString` without support for hot loop shorting.
4027
+ *
4028
+ * @private
4029
+ * @param {Function} func The function to modify.
4030
+ * @param {Function} string The `toString` result.
4031
+ * @returns {Function} Returns `func`.
4032
+ */
4033
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
4034
+ return defineProperty(func, 'toString', {
4035
+ 'configurable': true,
4036
+ 'enumerable': false,
4037
+ 'value': constant(string),
4038
+ 'writable': true
4039
+ });
4040
+ };
4041
+
4042
+ /**
4043
+ * The base implementation of `_.shuffle`.
4044
+ *
4045
+ * @private
4046
+ * @param {Array|Object} collection The collection to shuffle.
4047
+ * @returns {Array} Returns the new shuffled array.
4048
+ */
4049
+ function baseShuffle(collection) {
4050
+ return shuffleSelf(values(collection));
4051
+ }
4052
+
4053
+ /**
4054
+ * The base implementation of `_.slice` without an iteratee call guard.
4055
+ *
4056
+ * @private
4057
+ * @param {Array} array The array to slice.
4058
+ * @param {number} [start=0] The start position.
4059
+ * @param {number} [end=array.length] The end position.
4060
+ * @returns {Array} Returns the slice of `array`.
4061
+ */
4062
+ function baseSlice(array, start, end) {
4063
+ var index = -1,
4064
+ length = array.length;
4065
+
4066
+ if (start < 0) {
4067
+ start = -start > length ? 0 : (length + start);
4068
+ }
4069
+ end = end > length ? length : end;
4070
+ if (end < 0) {
4071
+ end += length;
4072
+ }
4073
+ length = start > end ? 0 : ((end - start) >>> 0);
4074
+ start >>>= 0;
4075
+
4076
+ var result = Array(length);
4077
+ while (++index < length) {
4078
+ result[index] = array[index + start];
4079
+ }
4080
+ return result;
4081
+ }
4082
+
4083
+ /**
4084
+ * The base implementation of `_.some` without support for iteratee shorthands.
4085
+ *
4086
+ * @private
4087
+ * @param {Array|Object} collection The collection to iterate over.
4088
+ * @param {Function} predicate The function invoked per iteration.
4089
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
4090
+ * else `false`.
4091
+ */
4092
+ function baseSome(collection, predicate) {
4093
+ var result;
4094
+
4095
+ baseEach(collection, function(value, index, collection) {
4096
+ result = predicate(value, index, collection);
4097
+ return !result;
4098
+ });
4099
+ return !!result;
4100
+ }
4101
+
4102
+ /**
4103
+ * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
4104
+ * performs a binary search of `array` to determine the index at which `value`
4105
+ * should be inserted into `array` in order to maintain its sort order.
4106
+ *
4107
+ * @private
4108
+ * @param {Array} array The sorted array to inspect.
4109
+ * @param {*} value The value to evaluate.
4110
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
4111
+ * @returns {number} Returns the index at which `value` should be inserted
4112
+ * into `array`.
4113
+ */
4114
+ function baseSortedIndex(array, value, retHighest) {
4115
+ var low = 0,
4116
+ high = array == null ? low : array.length;
4117
+
4118
+ if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
4119
+ while (low < high) {
4120
+ var mid = (low + high) >>> 1,
4121
+ computed = array[mid];
4122
+
4123
+ if (computed !== null && !isSymbol(computed) &&
4124
+ (retHighest ? (computed <= value) : (computed < value))) {
4125
+ low = mid + 1;
4126
+ } else {
4127
+ high = mid;
4128
+ }
4129
+ }
4130
+ return high;
4131
+ }
4132
+ return baseSortedIndexBy(array, value, identity, retHighest);
4133
+ }
4134
+
4135
+ /**
4136
+ * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
4137
+ * which invokes `iteratee` for `value` and each element of `array` to compute
4138
+ * their sort ranking. The iteratee is invoked with one argument; (value).
4139
+ *
4140
+ * @private
4141
+ * @param {Array} array The sorted array to inspect.
4142
+ * @param {*} value The value to evaluate.
4143
+ * @param {Function} iteratee The iteratee invoked per element.
4144
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
4145
+ * @returns {number} Returns the index at which `value` should be inserted
4146
+ * into `array`.
4147
+ */
4148
+ function baseSortedIndexBy(array, value, iteratee, retHighest) {
4149
+ var low = 0,
4150
+ high = array == null ? 0 : array.length;
4151
+ if (high === 0) {
4152
+ return 0;
4153
+ }
4154
+
4155
+ value = iteratee(value);
4156
+ var valIsNaN = value !== value,
4157
+ valIsNull = value === null,
4158
+ valIsSymbol = isSymbol(value),
4159
+ valIsUndefined = value === undefined;
4160
+
4161
+ while (low < high) {
4162
+ var mid = nativeFloor((low + high) / 2),
4163
+ computed = iteratee(array[mid]),
4164
+ othIsDefined = computed !== undefined,
4165
+ othIsNull = computed === null,
4166
+ othIsReflexive = computed === computed,
4167
+ othIsSymbol = isSymbol(computed);
4168
+
4169
+ if (valIsNaN) {
4170
+ var setLow = retHighest || othIsReflexive;
4171
+ } else if (valIsUndefined) {
4172
+ setLow = othIsReflexive && (retHighest || othIsDefined);
4173
+ } else if (valIsNull) {
4174
+ setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
4175
+ } else if (valIsSymbol) {
4176
+ setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
4177
+ } else if (othIsNull || othIsSymbol) {
4178
+ setLow = false;
4179
+ } else {
4180
+ setLow = retHighest ? (computed <= value) : (computed < value);
4181
+ }
4182
+ if (setLow) {
4183
+ low = mid + 1;
4184
+ } else {
4185
+ high = mid;
4186
+ }
4187
+ }
4188
+ return nativeMin(high, MAX_ARRAY_INDEX);
4189
+ }
4190
+
4191
+ /**
4192
+ * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
4193
+ * support for iteratee shorthands.
4194
+ *
4195
+ * @private
4196
+ * @param {Array} array The array to inspect.
4197
+ * @param {Function} [iteratee] The iteratee invoked per element.
4198
+ * @returns {Array} Returns the new duplicate free array.
4199
+ */
4200
+ function baseSortedUniq(array, iteratee) {
4201
+ var index = -1,
4202
+ length = array.length,
4203
+ resIndex = 0,
4204
+ result = [];
4205
+
4206
+ while (++index < length) {
4207
+ var value = array[index],
4208
+ computed = iteratee ? iteratee(value) : value;
4209
+
4210
+ if (!index || !eq(computed, seen)) {
4211
+ var seen = computed;
4212
+ result[resIndex++] = value === 0 ? 0 : value;
4213
+ }
4214
+ }
4215
+ return result;
4216
+ }
4217
+
4218
+ /**
4219
+ * The base implementation of `_.toNumber` which doesn't ensure correct
4220
+ * conversions of binary, hexadecimal, or octal string values.
4221
+ *
4222
+ * @private
4223
+ * @param {*} value The value to process.
4224
+ * @returns {number} Returns the number.
4225
+ */
4226
+ function baseToNumber(value) {
4227
+ if (typeof value == 'number') {
4228
+ return value;
4229
+ }
4230
+ if (isSymbol(value)) {
4231
+ return NAN;
4232
+ }
4233
+ return +value;
4234
+ }
4235
+
4236
+ /**
4237
+ * The base implementation of `_.toString` which doesn't convert nullish
4238
+ * values to empty strings.
4239
+ *
4240
+ * @private
4241
+ * @param {*} value The value to process.
4242
+ * @returns {string} Returns the string.
4243
+ */
4244
+ function baseToString(value) {
4245
+ // Exit early for strings to avoid a performance hit in some environments.
4246
+ if (typeof value == 'string') {
4247
+ return value;
4248
+ }
4249
+ if (isArray(value)) {
4250
+ // Recursively convert values (susceptible to call stack limits).
4251
+ return arrayMap(value, baseToString) + '';
4252
+ }
4253
+ if (isSymbol(value)) {
4254
+ return symbolToString ? symbolToString.call(value) : '';
4255
+ }
4256
+ var result = (value + '');
4257
+ return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
4258
+ }
4259
+
4260
+ /**
4261
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
4262
+ *
4263
+ * @private
4264
+ * @param {Array} array The array to inspect.
4265
+ * @param {Function} [iteratee] The iteratee invoked per element.
4266
+ * @param {Function} [comparator] The comparator invoked per element.
4267
+ * @returns {Array} Returns the new duplicate free array.
4268
+ */
4269
+ function baseUniq(array, iteratee, comparator) {
4270
+ var index = -1,
4271
+ includes = arrayIncludes,
4272
+ length = array.length,
4273
+ isCommon = true,
4274
+ result = [],
4275
+ seen = result;
4276
+
4277
+ if (comparator) {
4278
+ isCommon = false;
4279
+ includes = arrayIncludesWith;
4280
+ }
4281
+ else if (length >= LARGE_ARRAY_SIZE) {
4282
+ var set = iteratee ? null : createSet(array);
4283
+ if (set) {
4284
+ return setToArray(set);
4285
+ }
4286
+ isCommon = false;
4287
+ includes = cacheHas;
4288
+ seen = new SetCache;
4289
+ }
4290
+ else {
4291
+ seen = iteratee ? [] : result;
4292
+ }
4293
+ outer:
4294
+ while (++index < length) {
4295
+ var value = array[index],
4296
+ computed = iteratee ? iteratee(value) : value;
4297
+
4298
+ value = (comparator || value !== 0) ? value : 0;
4299
+ if (isCommon && computed === computed) {
4300
+ var seenIndex = seen.length;
4301
+ while (seenIndex--) {
4302
+ if (seen[seenIndex] === computed) {
4303
+ continue outer;
4304
+ }
4305
+ }
4306
+ if (iteratee) {
4307
+ seen.push(computed);
4308
+ }
4309
+ result.push(value);
4310
+ }
4311
+ else if (!includes(seen, computed, comparator)) {
4312
+ if (seen !== result) {
4313
+ seen.push(computed);
4314
+ }
4315
+ result.push(value);
4316
+ }
4317
+ }
4318
+ return result;
4319
+ }
4320
+
4321
+ /**
4322
+ * The base implementation of `_.unset`.
4323
+ *
4324
+ * @private
4325
+ * @param {Object} object The object to modify.
4326
+ * @param {Array|string} path The property path to unset.
4327
+ * @returns {boolean} Returns `true` if the property is deleted, else `false`.
4328
+ */
4329
+ function baseUnset(object, path) {
4330
+ path = castPath(path, object);
4331
+ object = parent(object, path);
4332
+ return object == null || delete object[toKey(last(path))];
4333
+ }
4334
+
4335
+ /**
4336
+ * The base implementation of `_.update`.
4337
+ *
4338
+ * @private
4339
+ * @param {Object} object The object to modify.
4340
+ * @param {Array|string} path The path of the property to update.
4341
+ * @param {Function} updater The function to produce the updated value.
4342
+ * @param {Function} [customizer] The function to customize path creation.
4343
+ * @returns {Object} Returns `object`.
4344
+ */
4345
+ function baseUpdate(object, path, updater, customizer) {
4346
+ return baseSet(object, path, updater(baseGet(object, path)), customizer);
4347
+ }
4348
+
4349
+ /**
4350
+ * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
4351
+ * without support for iteratee shorthands.
4352
+ *
4353
+ * @private
4354
+ * @param {Array} array The array to query.
4355
+ * @param {Function} predicate The function invoked per iteration.
4356
+ * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
4357
+ * @param {boolean} [fromRight] Specify iterating from right to left.
4358
+ * @returns {Array} Returns the slice of `array`.
4359
+ */
4360
+ function baseWhile(array, predicate, isDrop, fromRight) {
4361
+ var length = array.length,
4362
+ index = fromRight ? length : -1;
4363
+
4364
+ while ((fromRight ? index-- : ++index < length) &&
4365
+ predicate(array[index], index, array)) {}
4366
+
4367
+ return isDrop
4368
+ ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
4369
+ : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
4370
+ }
4371
+
4372
+ /**
4373
+ * The base implementation of `wrapperValue` which returns the result of
4374
+ * performing a sequence of actions on the unwrapped `value`, where each
4375
+ * successive action is supplied the return value of the previous.
4376
+ *
4377
+ * @private
4378
+ * @param {*} value The unwrapped value.
4379
+ * @param {Array} actions Actions to perform to resolve the unwrapped value.
4380
+ * @returns {*} Returns the resolved value.
4381
+ */
4382
+ function baseWrapperValue(value, actions) {
4383
+ var result = value;
4384
+ if (result instanceof LazyWrapper) {
4385
+ result = result.value();
4386
+ }
4387
+ return arrayReduce(actions, function(result, action) {
4388
+ return action.func.apply(action.thisArg, arrayPush([result], action.args));
4389
+ }, result);
4390
+ }
4391
+
4392
+ /**
4393
+ * The base implementation of methods like `_.xor`, without support for
4394
+ * iteratee shorthands, that accepts an array of arrays to inspect.
4395
+ *
4396
+ * @private
4397
+ * @param {Array} arrays The arrays to inspect.
4398
+ * @param {Function} [iteratee] The iteratee invoked per element.
4399
+ * @param {Function} [comparator] The comparator invoked per element.
4400
+ * @returns {Array} Returns the new array of values.
4401
+ */
4402
+ function baseXor(arrays, iteratee, comparator) {
4403
+ var length = arrays.length;
4404
+ if (length < 2) {
4405
+ return length ? baseUniq(arrays[0]) : [];
4406
+ }
4407
+ var index = -1,
4408
+ result = Array(length);
4409
+
4410
+ while (++index < length) {
4411
+ var array = arrays[index],
4412
+ othIndex = -1;
4413
+
4414
+ while (++othIndex < length) {
4415
+ if (othIndex != index) {
4416
+ result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
4417
+ }
4418
+ }
4419
+ }
4420
+ return baseUniq(baseFlatten(result, 1), iteratee, comparator);
4421
+ }
4422
+
4423
+ /**
4424
+ * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
4425
+ *
4426
+ * @private
4427
+ * @param {Array} props The property identifiers.
4428
+ * @param {Array} values The property values.
4429
+ * @param {Function} assignFunc The function to assign values.
4430
+ * @returns {Object} Returns the new object.
4431
+ */
4432
+ function baseZipObject(props, values, assignFunc) {
4433
+ var index = -1,
4434
+ length = props.length,
4435
+ valsLength = values.length,
4436
+ result = {};
4437
+
4438
+ while (++index < length) {
4439
+ var value = index < valsLength ? values[index] : undefined;
4440
+ assignFunc(result, props[index], value);
4441
+ }
4442
+ return result;
4443
+ }
4444
+
4445
+ /**
4446
+ * Casts `value` to an empty array if it's not an array like object.
4447
+ *
4448
+ * @private
4449
+ * @param {*} value The value to inspect.
4450
+ * @returns {Array|Object} Returns the cast array-like object.
4451
+ */
4452
+ function castArrayLikeObject(value) {
4453
+ return isArrayLikeObject(value) ? value : [];
4454
+ }
4455
+
4456
+ /**
4457
+ * Casts `value` to `identity` if it's not a function.
4458
+ *
4459
+ * @private
4460
+ * @param {*} value The value to inspect.
4461
+ * @returns {Function} Returns cast function.
4462
+ */
4463
+ function castFunction(value) {
4464
+ return typeof value == 'function' ? value : identity;
4465
+ }
4466
+
4467
+ /**
4468
+ * Casts `value` to a path array if it's not one.
4469
+ *
4470
+ * @private
4471
+ * @param {*} value The value to inspect.
4472
+ * @param {Object} [object] The object to query keys on.
4473
+ * @returns {Array} Returns the cast property path array.
4474
+ */
4475
+ function castPath(value, object) {
4476
+ if (isArray(value)) {
4477
+ return value;
4478
+ }
4479
+ return isKey(value, object) ? [value] : stringToPath(toString(value));
4480
+ }
4481
+
4482
+ /**
4483
+ * A `baseRest` alias which can be replaced with `identity` by module
4484
+ * replacement plugins.
4485
+ *
4486
+ * @private
4487
+ * @type {Function}
4488
+ * @param {Function} func The function to apply a rest parameter to.
4489
+ * @returns {Function} Returns the new function.
4490
+ */
4491
+ var castRest = baseRest;
4492
+
4493
+ /**
4494
+ * Casts `array` to a slice if it's needed.
4495
+ *
4496
+ * @private
4497
+ * @param {Array} array The array to inspect.
4498
+ * @param {number} start The start position.
4499
+ * @param {number} [end=array.length] The end position.
4500
+ * @returns {Array} Returns the cast slice.
4501
+ */
4502
+ function castSlice(array, start, end) {
4503
+ var length = array.length;
4504
+ end = end === undefined ? length : end;
4505
+ return (!start && end >= length) ? array : baseSlice(array, start, end);
4506
+ }
4507
+
4508
+ /**
4509
+ * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
4510
+ *
4511
+ * @private
4512
+ * @param {number|Object} id The timer id or timeout object of the timer to clear.
4513
+ */
4514
+ var clearTimeout = ctxClearTimeout || function(id) {
4515
+ return root.clearTimeout(id);
4516
+ };
4517
+
4518
+ /**
4519
+ * Creates a clone of `buffer`.
4520
+ *
4521
+ * @private
4522
+ * @param {Buffer} buffer The buffer to clone.
4523
+ * @param {boolean} [isDeep] Specify a deep clone.
4524
+ * @returns {Buffer} Returns the cloned buffer.
4525
+ */
4526
+ function cloneBuffer(buffer, isDeep) {
4527
+ if (isDeep) {
4528
+ return buffer.slice();
4529
+ }
4530
+ var length = buffer.length,
4531
+ result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
4532
+
4533
+ buffer.copy(result);
4534
+ return result;
4535
+ }
4536
+
4537
+ /**
4538
+ * Creates a clone of `arrayBuffer`.
4539
+ *
4540
+ * @private
4541
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
4542
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
4543
+ */
4544
+ function cloneArrayBuffer(arrayBuffer) {
4545
+ var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
4546
+ new Uint8Array(result).set(new Uint8Array(arrayBuffer));
4547
+ return result;
4548
+ }
4549
+
4550
+ /**
4551
+ * Creates a clone of `dataView`.
4552
+ *
4553
+ * @private
4554
+ * @param {Object} dataView The data view to clone.
4555
+ * @param {boolean} [isDeep] Specify a deep clone.
4556
+ * @returns {Object} Returns the cloned data view.
4557
+ */
4558
+ function cloneDataView(dataView, isDeep) {
4559
+ var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
4560
+ return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
4561
+ }
4562
+
4563
+ /**
4564
+ * Creates a clone of `regexp`.
4565
+ *
4566
+ * @private
4567
+ * @param {Object} regexp The regexp to clone.
4568
+ * @returns {Object} Returns the cloned regexp.
4569
+ */
4570
+ function cloneRegExp(regexp) {
4571
+ var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
4572
+ result.lastIndex = regexp.lastIndex;
4573
+ return result;
4574
+ }
4575
+
4576
+ /**
4577
+ * Creates a clone of the `symbol` object.
4578
+ *
4579
+ * @private
4580
+ * @param {Object} symbol The symbol object to clone.
4581
+ * @returns {Object} Returns the cloned symbol object.
4582
+ */
4583
+ function cloneSymbol(symbol) {
4584
+ return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
4585
+ }
4586
+
4587
+ /**
4588
+ * Creates a clone of `typedArray`.
4589
+ *
4590
+ * @private
4591
+ * @param {Object} typedArray The typed array to clone.
4592
+ * @param {boolean} [isDeep] Specify a deep clone.
4593
+ * @returns {Object} Returns the cloned typed array.
4594
+ */
4595
+ function cloneTypedArray(typedArray, isDeep) {
4596
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
4597
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
4598
+ }
4599
+
4600
+ /**
4601
+ * Compares values to sort them in ascending order.
4602
+ *
4603
+ * @private
4604
+ * @param {*} value The value to compare.
4605
+ * @param {*} other The other value to compare.
4606
+ * @returns {number} Returns the sort order indicator for `value`.
4607
+ */
4608
+ function compareAscending(value, other) {
4609
+ if (value !== other) {
4610
+ var valIsDefined = value !== undefined,
4611
+ valIsNull = value === null,
4612
+ valIsReflexive = value === value,
4613
+ valIsSymbol = isSymbol(value);
4614
+
4615
+ var othIsDefined = other !== undefined,
4616
+ othIsNull = other === null,
4617
+ othIsReflexive = other === other,
4618
+ othIsSymbol = isSymbol(other);
4619
+
4620
+ if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
4621
+ (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
4622
+ (valIsNull && othIsDefined && othIsReflexive) ||
4623
+ (!valIsDefined && othIsReflexive) ||
4624
+ !valIsReflexive) {
4625
+ return 1;
4626
+ }
4627
+ if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
4628
+ (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
4629
+ (othIsNull && valIsDefined && valIsReflexive) ||
4630
+ (!othIsDefined && valIsReflexive) ||
4631
+ !othIsReflexive) {
4632
+ return -1;
4633
+ }
4634
+ }
4635
+ return 0;
4636
+ }
4637
+
4638
+ /**
4639
+ * Used by `_.orderBy` to compare multiple properties of a value to another
4640
+ * and stable sort them.
4641
+ *
4642
+ * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
4643
+ * specify an order of "desc" for descending or "asc" for ascending sort order
4644
+ * of corresponding values.
4645
+ *
4646
+ * @private
4647
+ * @param {Object} object The object to compare.
4648
+ * @param {Object} other The other object to compare.
4649
+ * @param {boolean[]|string[]} orders The order to sort by for each property.
4650
+ * @returns {number} Returns the sort order indicator for `object`.
4651
+ */
4652
+ function compareMultiple(object, other, orders) {
4653
+ var index = -1,
4654
+ objCriteria = object.criteria,
4655
+ othCriteria = other.criteria,
4656
+ length = objCriteria.length,
4657
+ ordersLength = orders.length;
4658
+
4659
+ while (++index < length) {
4660
+ var result = compareAscending(objCriteria[index], othCriteria[index]);
4661
+ if (result) {
4662
+ if (index >= ordersLength) {
4663
+ return result;
4664
+ }
4665
+ var order = orders[index];
4666
+ return result * (order == 'desc' ? -1 : 1);
4667
+ }
4668
+ }
4669
+ // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
4670
+ // that causes it, under certain circumstances, to provide the same value for
4671
+ // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
4672
+ // for more details.
4673
+ //
4674
+ // This also ensures a stable sort in V8 and other engines.
4675
+ // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
4676
+ return object.index - other.index;
4677
+ }
4678
+
4679
+ /**
4680
+ * Creates an array that is the composition of partially applied arguments,
4681
+ * placeholders, and provided arguments into a single array of arguments.
4682
+ *
4683
+ * @private
4684
+ * @param {Array} args The provided arguments.
4685
+ * @param {Array} partials The arguments to prepend to those provided.
4686
+ * @param {Array} holders The `partials` placeholder indexes.
4687
+ * @params {boolean} [isCurried] Specify composing for a curried function.
4688
+ * @returns {Array} Returns the new array of composed arguments.
4689
+ */
4690
+ function composeArgs(args, partials, holders, isCurried) {
4691
+ var argsIndex = -1,
4692
+ argsLength = args.length,
4693
+ holdersLength = holders.length,
4694
+ leftIndex = -1,
4695
+ leftLength = partials.length,
4696
+ rangeLength = nativeMax(argsLength - holdersLength, 0),
4697
+ result = Array(leftLength + rangeLength),
4698
+ isUncurried = !isCurried;
4699
+
4700
+ while (++leftIndex < leftLength) {
4701
+ result[leftIndex] = partials[leftIndex];
4702
+ }
4703
+ while (++argsIndex < holdersLength) {
4704
+ if (isUncurried || argsIndex < argsLength) {
4705
+ result[holders[argsIndex]] = args[argsIndex];
4706
+ }
4707
+ }
4708
+ while (rangeLength--) {
4709
+ result[leftIndex++] = args[argsIndex++];
4710
+ }
4711
+ return result;
4712
+ }
4713
+
4714
+ /**
4715
+ * This function is like `composeArgs` except that the arguments composition
4716
+ * is tailored for `_.partialRight`.
4717
+ *
4718
+ * @private
4719
+ * @param {Array} args The provided arguments.
4720
+ * @param {Array} partials The arguments to append to those provided.
4721
+ * @param {Array} holders The `partials` placeholder indexes.
4722
+ * @params {boolean} [isCurried] Specify composing for a curried function.
4723
+ * @returns {Array} Returns the new array of composed arguments.
4724
+ */
4725
+ function composeArgsRight(args, partials, holders, isCurried) {
4726
+ var argsIndex = -1,
4727
+ argsLength = args.length,
4728
+ holdersIndex = -1,
4729
+ holdersLength = holders.length,
4730
+ rightIndex = -1,
4731
+ rightLength = partials.length,
4732
+ rangeLength = nativeMax(argsLength - holdersLength, 0),
4733
+ result = Array(rangeLength + rightLength),
4734
+ isUncurried = !isCurried;
4735
+
4736
+ while (++argsIndex < rangeLength) {
4737
+ result[argsIndex] = args[argsIndex];
4738
+ }
4739
+ var offset = argsIndex;
4740
+ while (++rightIndex < rightLength) {
4741
+ result[offset + rightIndex] = partials[rightIndex];
4742
+ }
4743
+ while (++holdersIndex < holdersLength) {
4744
+ if (isUncurried || argsIndex < argsLength) {
4745
+ result[offset + holders[holdersIndex]] = args[argsIndex++];
4746
+ }
4747
+ }
4748
+ return result;
4749
+ }
4750
+
4751
+ /**
4752
+ * Copies the values of `source` to `array`.
4753
+ *
4754
+ * @private
4755
+ * @param {Array} source The array to copy values from.
4756
+ * @param {Array} [array=[]] The array to copy values to.
4757
+ * @returns {Array} Returns `array`.
4758
+ */
4759
+ function copyArray(source, array) {
4760
+ var index = -1,
4761
+ length = source.length;
4762
+
4763
+ array || (array = Array(length));
4764
+ while (++index < length) {
4765
+ array[index] = source[index];
4766
+ }
4767
+ return array;
4768
+ }
4769
+
4770
+ /**
4771
+ * Copies properties of `source` to `object`.
4772
+ *
4773
+ * @private
4774
+ * @param {Object} source The object to copy properties from.
4775
+ * @param {Array} props The property identifiers to copy.
4776
+ * @param {Object} [object={}] The object to copy properties to.
4777
+ * @param {Function} [customizer] The function to customize copied values.
4778
+ * @returns {Object} Returns `object`.
4779
+ */
4780
+ function copyObject(source, props, object, customizer) {
4781
+ var isNew = !object;
4782
+ object || (object = {});
4783
+
4784
+ var index = -1,
4785
+ length = props.length;
4786
+
4787
+ while (++index < length) {
4788
+ var key = props[index];
4789
+
4790
+ var newValue = customizer
4791
+ ? customizer(object[key], source[key], key, object, source)
4792
+ : undefined;
4793
+
4794
+ if (newValue === undefined) {
4795
+ newValue = source[key];
4796
+ }
4797
+ if (isNew) {
4798
+ baseAssignValue(object, key, newValue);
4799
+ } else {
4800
+ assignValue(object, key, newValue);
4801
+ }
4802
+ }
4803
+ return object;
4804
+ }
4805
+
4806
+ /**
4807
+ * Copies own symbols of `source` to `object`.
4808
+ *
4809
+ * @private
4810
+ * @param {Object} source The object to copy symbols from.
4811
+ * @param {Object} [object={}] The object to copy symbols to.
4812
+ * @returns {Object} Returns `object`.
4813
+ */
4814
+ function copySymbols(source, object) {
4815
+ return copyObject(source, getSymbols(source), object);
4816
+ }
4817
+
4818
+ /**
4819
+ * Copies own and inherited symbols of `source` to `object`.
4820
+ *
4821
+ * @private
4822
+ * @param {Object} source The object to copy symbols from.
4823
+ * @param {Object} [object={}] The object to copy symbols to.
4824
+ * @returns {Object} Returns `object`.
4825
+ */
4826
+ function copySymbolsIn(source, object) {
4827
+ return copyObject(source, getSymbolsIn(source), object);
4828
+ }
4829
+
4830
+ /**
4831
+ * Creates a function like `_.groupBy`.
4832
+ *
4833
+ * @private
4834
+ * @param {Function} setter The function to set accumulator values.
4835
+ * @param {Function} [initializer] The accumulator object initializer.
4836
+ * @returns {Function} Returns the new aggregator function.
4837
+ */
4838
+ function createAggregator(setter, initializer) {
4839
+ return function(collection, iteratee) {
4840
+ var func = isArray(collection) ? arrayAggregator : baseAggregator,
4841
+ accumulator = initializer ? initializer() : {};
4842
+
4843
+ return func(collection, setter, getIteratee(iteratee, 2), accumulator);
4844
+ };
4845
+ }
4846
+
4847
+ /**
4848
+ * Creates a function like `_.assign`.
4849
+ *
4850
+ * @private
4851
+ * @param {Function} assigner The function to assign values.
4852
+ * @returns {Function} Returns the new assigner function.
4853
+ */
4854
+ function createAssigner(assigner) {
4855
+ return baseRest(function(object, sources) {
4856
+ var index = -1,
4857
+ length = sources.length,
4858
+ customizer = length > 1 ? sources[length - 1] : undefined,
4859
+ guard = length > 2 ? sources[2] : undefined;
4860
+
4861
+ customizer = (assigner.length > 3 && typeof customizer == 'function')
4862
+ ? (length--, customizer)
4863
+ : undefined;
4864
+
4865
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
4866
+ customizer = length < 3 ? undefined : customizer;
4867
+ length = 1;
4868
+ }
4869
+ object = Object(object);
4870
+ while (++index < length) {
4871
+ var source = sources[index];
4872
+ if (source) {
4873
+ assigner(object, source, index, customizer);
4874
+ }
4875
+ }
4876
+ return object;
4877
+ });
4878
+ }
4879
+
4880
+ /**
4881
+ * Creates a `baseEach` or `baseEachRight` function.
4882
+ *
4883
+ * @private
4884
+ * @param {Function} eachFunc The function to iterate over a collection.
4885
+ * @param {boolean} [fromRight] Specify iterating from right to left.
4886
+ * @returns {Function} Returns the new base function.
4887
+ */
4888
+ function createBaseEach(eachFunc, fromRight) {
4889
+ return function(collection, iteratee) {
4890
+ if (collection == null) {
4891
+ return collection;
4892
+ }
4893
+ if (!isArrayLike(collection)) {
4894
+ return eachFunc(collection, iteratee);
4895
+ }
4896
+ var length = collection.length,
4897
+ index = fromRight ? length : -1,
4898
+ iterable = Object(collection);
4899
+
4900
+ while ((fromRight ? index-- : ++index < length)) {
4901
+ if (iteratee(iterable[index], index, iterable) === false) {
4902
+ break;
4903
+ }
4904
+ }
4905
+ return collection;
4906
+ };
4907
+ }
4908
+
4909
+ /**
4910
+ * Creates a base function for methods like `_.forIn` and `_.forOwn`.
4911
+ *
4912
+ * @private
4913
+ * @param {boolean} [fromRight] Specify iterating from right to left.
4914
+ * @returns {Function} Returns the new base function.
4915
+ */
4916
+ function createBaseFor(fromRight) {
4917
+ return function(object, iteratee, keysFunc) {
4918
+ var index = -1,
4919
+ iterable = Object(object),
4920
+ props = keysFunc(object),
4921
+ length = props.length;
4922
+
4923
+ while (length--) {
4924
+ var key = props[fromRight ? length : ++index];
4925
+ if (iteratee(iterable[key], key, iterable) === false) {
4926
+ break;
4927
+ }
4928
+ }
4929
+ return object;
4930
+ };
4931
+ }
4932
+
4933
+ /**
4934
+ * Creates a function that wraps `func` to invoke it with the optional `this`
4935
+ * binding of `thisArg`.
4936
+ *
4937
+ * @private
4938
+ * @param {Function} func The function to wrap.
4939
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
4940
+ * @param {*} [thisArg] The `this` binding of `func`.
4941
+ * @returns {Function} Returns the new wrapped function.
4942
+ */
4943
+ function createBind(func, bitmask, thisArg) {
4944
+ var isBind = bitmask & WRAP_BIND_FLAG,
4945
+ Ctor = createCtor(func);
4946
+
4947
+ function wrapper() {
4948
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
4949
+ return fn.apply(isBind ? thisArg : this, arguments);
4950
+ }
4951
+ return wrapper;
4952
+ }
4953
+
4954
+ /**
4955
+ * Creates a function like `_.lowerFirst`.
4956
+ *
4957
+ * @private
4958
+ * @param {string} methodName The name of the `String` case method to use.
4959
+ * @returns {Function} Returns the new case function.
4960
+ */
4961
+ function createCaseFirst(methodName) {
4962
+ return function(string) {
4963
+ string = toString(string);
4964
+
4965
+ var strSymbols = hasUnicode(string)
4966
+ ? stringToArray(string)
4967
+ : undefined;
4968
+
4969
+ var chr = strSymbols
4970
+ ? strSymbols[0]
4971
+ : string.charAt(0);
4972
+
4973
+ var trailing = strSymbols
4974
+ ? castSlice(strSymbols, 1).join('')
4975
+ : string.slice(1);
4976
+
4977
+ return chr[methodName]() + trailing;
4978
+ };
4979
+ }
4980
+
4981
+ /**
4982
+ * Creates a function like `_.camelCase`.
4983
+ *
4984
+ * @private
4985
+ * @param {Function} callback The function to combine each word.
4986
+ * @returns {Function} Returns the new compounder function.
4987
+ */
4988
+ function createCompounder(callback) {
4989
+ return function(string) {
4990
+ return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
4991
+ };
4992
+ }
4993
+
4994
+ /**
4995
+ * Creates a function that produces an instance of `Ctor` regardless of
4996
+ * whether it was invoked as part of a `new` expression or by `call` or `apply`.
4997
+ *
4998
+ * @private
4999
+ * @param {Function} Ctor The constructor to wrap.
5000
+ * @returns {Function} Returns the new wrapped function.
5001
+ */
5002
+ function createCtor(Ctor) {
5003
+ return function() {
5004
+ // Use a `switch` statement to work with class constructors. See
5005
+ // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
5006
+ // for more details.
5007
+ var args = arguments;
5008
+ switch (args.length) {
5009
+ case 0: return new Ctor;
5010
+ case 1: return new Ctor(args[0]);
5011
+ case 2: return new Ctor(args[0], args[1]);
5012
+ case 3: return new Ctor(args[0], args[1], args[2]);
5013
+ case 4: return new Ctor(args[0], args[1], args[2], args[3]);
5014
+ case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
5015
+ case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
5016
+ case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
5017
+ }
5018
+ var thisBinding = baseCreate(Ctor.prototype),
5019
+ result = Ctor.apply(thisBinding, args);
5020
+
5021
+ // Mimic the constructor's `return` behavior.
5022
+ // See https://es5.github.io/#x13.2.2 for more details.
5023
+ return isObject(result) ? result : thisBinding;
5024
+ };
5025
+ }
5026
+
5027
+ /**
5028
+ * Creates a function that wraps `func` to enable currying.
5029
+ *
5030
+ * @private
5031
+ * @param {Function} func The function to wrap.
5032
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
5033
+ * @param {number} arity The arity of `func`.
5034
+ * @returns {Function} Returns the new wrapped function.
5035
+ */
5036
+ function createCurry(func, bitmask, arity) {
5037
+ var Ctor = createCtor(func);
5038
+
5039
+ function wrapper() {
5040
+ var length = arguments.length,
5041
+ args = Array(length),
5042
+ index = length,
5043
+ placeholder = getHolder(wrapper);
5044
+
5045
+ while (index--) {
5046
+ args[index] = arguments[index];
5047
+ }
5048
+ var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
5049
+ ? []
5050
+ : replaceHolders(args, placeholder);
5051
+
5052
+ length -= holders.length;
5053
+ if (length < arity) {
5054
+ return createRecurry(
5055
+ func, bitmask, createHybrid, wrapper.placeholder, undefined,
5056
+ args, holders, undefined, undefined, arity - length);
5057
+ }
5058
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
5059
+ return apply(fn, this, args);
5060
+ }
5061
+ return wrapper;
5062
+ }
5063
+
5064
+ /**
5065
+ * Creates a `_.find` or `_.findLast` function.
5066
+ *
5067
+ * @private
5068
+ * @param {Function} findIndexFunc The function to find the collection index.
5069
+ * @returns {Function} Returns the new find function.
5070
+ */
5071
+ function createFind(findIndexFunc) {
5072
+ return function(collection, predicate, fromIndex) {
5073
+ var iterable = Object(collection);
5074
+ if (!isArrayLike(collection)) {
5075
+ var iteratee = getIteratee(predicate, 3);
5076
+ collection = keys(collection);
5077
+ predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5078
+ }
5079
+ var index = findIndexFunc(collection, predicate, fromIndex);
5080
+ return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5081
+ };
5082
+ }
5083
+
5084
+ /**
5085
+ * Creates a `_.flow` or `_.flowRight` function.
5086
+ *
5087
+ * @private
5088
+ * @param {boolean} [fromRight] Specify iterating from right to left.
5089
+ * @returns {Function} Returns the new flow function.
5090
+ */
5091
+ function createFlow(fromRight) {
5092
+ return flatRest(function(funcs) {
5093
+ var length = funcs.length,
5094
+ index = length,
5095
+ prereq = LodashWrapper.prototype.thru;
5096
+
5097
+ if (fromRight) {
5098
+ funcs.reverse();
5099
+ }
5100
+ while (index--) {
5101
+ var func = funcs[index];
5102
+ if (typeof func != 'function') {
5103
+ throw new TypeError(FUNC_ERROR_TEXT);
5104
+ }
5105
+ if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
5106
+ var wrapper = new LodashWrapper([], true);
5107
+ }
5108
+ }
5109
+ index = wrapper ? index : length;
5110
+ while (++index < length) {
5111
+ func = funcs[index];
5112
+
5113
+ var funcName = getFuncName(func),
5114
+ data = funcName == 'wrapper' ? getData(func) : undefined;
5115
+
5116
+ if (data && isLaziable(data[0]) &&
5117
+ data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
5118
+ !data[4].length && data[9] == 1
5119
+ ) {
5120
+ wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
5121
+ } else {
5122
+ wrapper = (func.length == 1 && isLaziable(func))
5123
+ ? wrapper[funcName]()
5124
+ : wrapper.thru(func);
5125
+ }
5126
+ }
5127
+ return function() {
5128
+ var args = arguments,
5129
+ value = args[0];
5130
+
5131
+ if (wrapper && args.length == 1 && isArray(value)) {
5132
+ return wrapper.plant(value).value();
5133
+ }
5134
+ var index = 0,
5135
+ result = length ? funcs[index].apply(this, args) : value;
5136
+
5137
+ while (++index < length) {
5138
+ result = funcs[index].call(this, result);
5139
+ }
5140
+ return result;
5141
+ };
5142
+ });
5143
+ }
5144
+
5145
+ /**
5146
+ * Creates a function that wraps `func` to invoke it with optional `this`
5147
+ * binding of `thisArg`, partial application, and currying.
5148
+ *
5149
+ * @private
5150
+ * @param {Function|string} func The function or method name to wrap.
5151
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
5152
+ * @param {*} [thisArg] The `this` binding of `func`.
5153
+ * @param {Array} [partials] The arguments to prepend to those provided to
5154
+ * the new function.
5155
+ * @param {Array} [holders] The `partials` placeholder indexes.
5156
+ * @param {Array} [partialsRight] The arguments to append to those provided
5157
+ * to the new function.
5158
+ * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
5159
+ * @param {Array} [argPos] The argument positions of the new function.
5160
+ * @param {number} [ary] The arity cap of `func`.
5161
+ * @param {number} [arity] The arity of `func`.
5162
+ * @returns {Function} Returns the new wrapped function.
5163
+ */
5164
+ function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
5165
+ var isAry = bitmask & WRAP_ARY_FLAG,
5166
+ isBind = bitmask & WRAP_BIND_FLAG,
5167
+ isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
5168
+ isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
5169
+ isFlip = bitmask & WRAP_FLIP_FLAG,
5170
+ Ctor = isBindKey ? undefined : createCtor(func);
5171
+
5172
+ function wrapper() {
5173
+ var length = arguments.length,
5174
+ args = Array(length),
5175
+ index = length;
5176
+
5177
+ while (index--) {
5178
+ args[index] = arguments[index];
5179
+ }
5180
+ if (isCurried) {
5181
+ var placeholder = getHolder(wrapper),
5182
+ holdersCount = countHolders(args, placeholder);
5183
+ }
5184
+ if (partials) {
5185
+ args = composeArgs(args, partials, holders, isCurried);
5186
+ }
5187
+ if (partialsRight) {
5188
+ args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
5189
+ }
5190
+ length -= holdersCount;
5191
+ if (isCurried && length < arity) {
5192
+ var newHolders = replaceHolders(args, placeholder);
5193
+ return createRecurry(
5194
+ func, bitmask, createHybrid, wrapper.placeholder, thisArg,
5195
+ args, newHolders, argPos, ary, arity - length
5196
+ );
5197
+ }
5198
+ var thisBinding = isBind ? thisArg : this,
5199
+ fn = isBindKey ? thisBinding[func] : func;
5200
+
5201
+ length = args.length;
5202
+ if (argPos) {
5203
+ args = reorder(args, argPos);
5204
+ } else if (isFlip && length > 1) {
5205
+ args.reverse();
5206
+ }
5207
+ if (isAry && ary < length) {
5208
+ args.length = ary;
5209
+ }
5210
+ if (this && this !== root && this instanceof wrapper) {
5211
+ fn = Ctor || createCtor(fn);
5212
+ }
5213
+ return fn.apply(thisBinding, args);
5214
+ }
5215
+ return wrapper;
5216
+ }
5217
+
5218
+ /**
5219
+ * Creates a function like `_.invertBy`.
5220
+ *
5221
+ * @private
5222
+ * @param {Function} setter The function to set accumulator values.
5223
+ * @param {Function} toIteratee The function to resolve iteratees.
5224
+ * @returns {Function} Returns the new inverter function.
5225
+ */
5226
+ function createInverter(setter, toIteratee) {
5227
+ return function(object, iteratee) {
5228
+ return baseInverter(object, setter, toIteratee(iteratee), {});
5229
+ };
5230
+ }
5231
+
5232
+ /**
5233
+ * Creates a function that performs a mathematical operation on two values.
5234
+ *
5235
+ * @private
5236
+ * @param {Function} operator The function to perform the operation.
5237
+ * @param {number} [defaultValue] The value used for `undefined` arguments.
5238
+ * @returns {Function} Returns the new mathematical operation function.
5239
+ */
5240
+ function createMathOperation(operator, defaultValue) {
5241
+ return function(value, other) {
5242
+ var result;
5243
+ if (value === undefined && other === undefined) {
5244
+ return defaultValue;
5245
+ }
5246
+ if (value !== undefined) {
5247
+ result = value;
5248
+ }
5249
+ if (other !== undefined) {
5250
+ if (result === undefined) {
5251
+ return other;
5252
+ }
5253
+ if (typeof value == 'string' || typeof other == 'string') {
5254
+ value = baseToString(value);
5255
+ other = baseToString(other);
5256
+ } else {
5257
+ value = baseToNumber(value);
5258
+ other = baseToNumber(other);
5259
+ }
5260
+ result = operator(value, other);
5261
+ }
5262
+ return result;
5263
+ };
5264
+ }
5265
+
5266
+ /**
5267
+ * Creates a function like `_.over`.
5268
+ *
5269
+ * @private
5270
+ * @param {Function} arrayFunc The function to iterate over iteratees.
5271
+ * @returns {Function} Returns the new over function.
5272
+ */
5273
+ function createOver(arrayFunc) {
5274
+ return flatRest(function(iteratees) {
5275
+ iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
5276
+ return baseRest(function(args) {
5277
+ var thisArg = this;
5278
+ return arrayFunc(iteratees, function(iteratee) {
5279
+ return apply(iteratee, thisArg, args);
5280
+ });
5281
+ });
5282
+ });
5283
+ }
5284
+
5285
+ /**
5286
+ * Creates the padding for `string` based on `length`. The `chars` string
5287
+ * is truncated if the number of characters exceeds `length`.
5288
+ *
5289
+ * @private
5290
+ * @param {number} length The padding length.
5291
+ * @param {string} [chars=' '] The string used as padding.
5292
+ * @returns {string} Returns the padding for `string`.
5293
+ */
5294
+ function createPadding(length, chars) {
5295
+ chars = chars === undefined ? ' ' : baseToString(chars);
5296
+
5297
+ var charsLength = chars.length;
5298
+ if (charsLength < 2) {
5299
+ return charsLength ? baseRepeat(chars, length) : chars;
5300
+ }
5301
+ var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
5302
+ return hasUnicode(chars)
5303
+ ? castSlice(stringToArray(result), 0, length).join('')
5304
+ : result.slice(0, length);
5305
+ }
5306
+
5307
+ /**
5308
+ * Creates a function that wraps `func` to invoke it with the `this` binding
5309
+ * of `thisArg` and `partials` prepended to the arguments it receives.
5310
+ *
5311
+ * @private
5312
+ * @param {Function} func The function to wrap.
5313
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
5314
+ * @param {*} thisArg The `this` binding of `func`.
5315
+ * @param {Array} partials The arguments to prepend to those provided to
5316
+ * the new function.
5317
+ * @returns {Function} Returns the new wrapped function.
5318
+ */
5319
+ function createPartial(func, bitmask, thisArg, partials) {
5320
+ var isBind = bitmask & WRAP_BIND_FLAG,
5321
+ Ctor = createCtor(func);
5322
+
5323
+ function wrapper() {
5324
+ var argsIndex = -1,
5325
+ argsLength = arguments.length,
5326
+ leftIndex = -1,
5327
+ leftLength = partials.length,
5328
+ args = Array(leftLength + argsLength),
5329
+ fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
5330
+
5331
+ while (++leftIndex < leftLength) {
5332
+ args[leftIndex] = partials[leftIndex];
5333
+ }
5334
+ while (argsLength--) {
5335
+ args[leftIndex++] = arguments[++argsIndex];
5336
+ }
5337
+ return apply(fn, isBind ? thisArg : this, args);
5338
+ }
5339
+ return wrapper;
5340
+ }
5341
+
5342
+ /**
5343
+ * Creates a `_.range` or `_.rangeRight` function.
5344
+ *
5345
+ * @private
5346
+ * @param {boolean} [fromRight] Specify iterating from right to left.
5347
+ * @returns {Function} Returns the new range function.
5348
+ */
5349
+ function createRange(fromRight) {
5350
+ return function(start, end, step) {
5351
+ if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
5352
+ end = step = undefined;
5353
+ }
5354
+ // Ensure the sign of `-0` is preserved.
5355
+ start = toFinite(start);
5356
+ if (end === undefined) {
5357
+ end = start;
5358
+ start = 0;
5359
+ } else {
5360
+ end = toFinite(end);
5361
+ }
5362
+ step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
5363
+ return baseRange(start, end, step, fromRight);
5364
+ };
5365
+ }
5366
+
5367
+ /**
5368
+ * Creates a function that performs a relational operation on two values.
5369
+ *
5370
+ * @private
5371
+ * @param {Function} operator The function to perform the operation.
5372
+ * @returns {Function} Returns the new relational operation function.
5373
+ */
5374
+ function createRelationalOperation(operator) {
5375
+ return function(value, other) {
5376
+ if (!(typeof value == 'string' && typeof other == 'string')) {
5377
+ value = toNumber(value);
5378
+ other = toNumber(other);
5379
+ }
5380
+ return operator(value, other);
5381
+ };
5382
+ }
5383
+
5384
+ /**
5385
+ * Creates a function that wraps `func` to continue currying.
5386
+ *
5387
+ * @private
5388
+ * @param {Function} func The function to wrap.
5389
+ * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
5390
+ * @param {Function} wrapFunc The function to create the `func` wrapper.
5391
+ * @param {*} placeholder The placeholder value.
5392
+ * @param {*} [thisArg] The `this` binding of `func`.
5393
+ * @param {Array} [partials] The arguments to prepend to those provided to
5394
+ * the new function.
5395
+ * @param {Array} [holders] The `partials` placeholder indexes.
5396
+ * @param {Array} [argPos] The argument positions of the new function.
5397
+ * @param {number} [ary] The arity cap of `func`.
5398
+ * @param {number} [arity] The arity of `func`.
5399
+ * @returns {Function} Returns the new wrapped function.
5400
+ */
5401
+ function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
5402
+ var isCurry = bitmask & WRAP_CURRY_FLAG,
5403
+ newHolders = isCurry ? holders : undefined,
5404
+ newHoldersRight = isCurry ? undefined : holders,
5405
+ newPartials = isCurry ? partials : undefined,
5406
+ newPartialsRight = isCurry ? undefined : partials;
5407
+
5408
+ bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
5409
+ bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
5410
+
5411
+ if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
5412
+ bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
5413
+ }
5414
+ var newData = [
5415
+ func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
5416
+ newHoldersRight, argPos, ary, arity
5417
+ ];
5418
+
5419
+ var result = wrapFunc.apply(undefined, newData);
5420
+ if (isLaziable(func)) {
5421
+ setData(result, newData);
5422
+ }
5423
+ result.placeholder = placeholder;
5424
+ return setWrapToString(result, func, bitmask);
5425
+ }
5426
+
5427
+ /**
5428
+ * Creates a function like `_.round`.
5429
+ *
5430
+ * @private
5431
+ * @param {string} methodName The name of the `Math` method to use when rounding.
5432
+ * @returns {Function} Returns the new round function.
5433
+ */
5434
+ function createRound(methodName) {
5435
+ var func = Math[methodName];
5436
+ return function(number, precision) {
5437
+ number = toNumber(number);
5438
+ precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
5439
+ if (precision && nativeIsFinite(number)) {
5440
+ // Shift with exponential notation to avoid floating-point issues.
5441
+ // See [MDN](https://mdn.io/round#Examples) for more details.
5442
+ var pair = (toString(number) + 'e').split('e'),
5443
+ value = func(pair[0] + 'e' + (+pair[1] + precision));
5444
+
5445
+ pair = (toString(value) + 'e').split('e');
5446
+ return +(pair[0] + 'e' + (+pair[1] - precision));
5447
+ }
5448
+ return func(number);
5449
+ };
5450
+ }
5451
+
5452
+ /**
5453
+ * Creates a set object of `values`.
5454
+ *
5455
+ * @private
5456
+ * @param {Array} values The values to add to the set.
5457
+ * @returns {Object} Returns the new set.
5458
+ */
5459
+ var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
5460
+ return new Set(values);
5461
+ };
5462
+
5463
+ /**
5464
+ * Creates a `_.toPairs` or `_.toPairsIn` function.
5465
+ *
5466
+ * @private
5467
+ * @param {Function} keysFunc The function to get the keys of a given object.
5468
+ * @returns {Function} Returns the new pairs function.
5469
+ */
5470
+ function createToPairs(keysFunc) {
5471
+ return function(object) {
5472
+ var tag = getTag(object);
5473
+ if (tag == mapTag) {
5474
+ return mapToArray(object);
5475
+ }
5476
+ if (tag == setTag) {
5477
+ return setToPairs(object);
5478
+ }
5479
+ return baseToPairs(object, keysFunc(object));
5480
+ };
5481
+ }
5482
+
5483
+ /**
5484
+ * Creates a function that either curries or invokes `func` with optional
5485
+ * `this` binding and partially applied arguments.
5486
+ *
5487
+ * @private
5488
+ * @param {Function|string} func The function or method name to wrap.
5489
+ * @param {number} bitmask The bitmask flags.
5490
+ * 1 - `_.bind`
5491
+ * 2 - `_.bindKey`
5492
+ * 4 - `_.curry` or `_.curryRight` of a bound function
5493
+ * 8 - `_.curry`
5494
+ * 16 - `_.curryRight`
5495
+ * 32 - `_.partial`
5496
+ * 64 - `_.partialRight`
5497
+ * 128 - `_.rearg`
5498
+ * 256 - `_.ary`
5499
+ * 512 - `_.flip`
5500
+ * @param {*} [thisArg] The `this` binding of `func`.
5501
+ * @param {Array} [partials] The arguments to be partially applied.
5502
+ * @param {Array} [holders] The `partials` placeholder indexes.
5503
+ * @param {Array} [argPos] The argument positions of the new function.
5504
+ * @param {number} [ary] The arity cap of `func`.
5505
+ * @param {number} [arity] The arity of `func`.
5506
+ * @returns {Function} Returns the new wrapped function.
5507
+ */
5508
+ function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
5509
+ var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
5510
+ if (!isBindKey && typeof func != 'function') {
5511
+ throw new TypeError(FUNC_ERROR_TEXT);
5512
+ }
5513
+ var length = partials ? partials.length : 0;
5514
+ if (!length) {
5515
+ bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
5516
+ partials = holders = undefined;
5517
+ }
5518
+ ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
5519
+ arity = arity === undefined ? arity : toInteger(arity);
5520
+ length -= holders ? holders.length : 0;
5521
+
5522
+ if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
5523
+ var partialsRight = partials,
5524
+ holdersRight = holders;
5525
+
5526
+ partials = holders = undefined;
5527
+ }
5528
+ var data = isBindKey ? undefined : getData(func);
5529
+
5530
+ var newData = [
5531
+ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
5532
+ argPos, ary, arity
5533
+ ];
5534
+
5535
+ if (data) {
5536
+ mergeData(newData, data);
5537
+ }
5538
+ func = newData[0];
5539
+ bitmask = newData[1];
5540
+ thisArg = newData[2];
5541
+ partials = newData[3];
5542
+ holders = newData[4];
5543
+ arity = newData[9] = newData[9] === undefined
5544
+ ? (isBindKey ? 0 : func.length)
5545
+ : nativeMax(newData[9] - length, 0);
5546
+
5547
+ if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
5548
+ bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
5549
+ }
5550
+ if (!bitmask || bitmask == WRAP_BIND_FLAG) {
5551
+ var result = createBind(func, bitmask, thisArg);
5552
+ } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
5553
+ result = createCurry(func, bitmask, arity);
5554
+ } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
5555
+ result = createPartial(func, bitmask, thisArg, partials);
5556
+ } else {
5557
+ result = createHybrid.apply(undefined, newData);
5558
+ }
5559
+ var setter = data ? baseSetData : setData;
5560
+ return setWrapToString(setter(result, newData), func, bitmask);
5561
+ }
5562
+
5563
+ /**
5564
+ * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
5565
+ * of source objects to the destination object for all destination properties
5566
+ * that resolve to `undefined`.
5567
+ *
5568
+ * @private
5569
+ * @param {*} objValue The destination value.
5570
+ * @param {*} srcValue The source value.
5571
+ * @param {string} key The key of the property to assign.
5572
+ * @param {Object} object The parent object of `objValue`.
5573
+ * @returns {*} Returns the value to assign.
5574
+ */
5575
+ function customDefaultsAssignIn(objValue, srcValue, key, object) {
5576
+ if (objValue === undefined ||
5577
+ (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
5578
+ return srcValue;
5579
+ }
5580
+ return objValue;
5581
+ }
5582
+
5583
+ /**
5584
+ * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
5585
+ * objects into destination objects that are passed thru.
5586
+ *
5587
+ * @private
5588
+ * @param {*} objValue The destination value.
5589
+ * @param {*} srcValue The source value.
5590
+ * @param {string} key The key of the property to merge.
5591
+ * @param {Object} object The parent object of `objValue`.
5592
+ * @param {Object} source The parent object of `srcValue`.
5593
+ * @param {Object} [stack] Tracks traversed source values and their merged
5594
+ * counterparts.
5595
+ * @returns {*} Returns the value to assign.
5596
+ */
5597
+ function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
5598
+ if (isObject(objValue) && isObject(srcValue)) {
5599
+ // Recursively merge objects and arrays (susceptible to call stack limits).
5600
+ stack.set(srcValue, objValue);
5601
+ baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
5602
+ stack['delete'](srcValue);
5603
+ }
5604
+ return objValue;
5605
+ }
5606
+
5607
+ /**
5608
+ * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
5609
+ * objects.
5610
+ *
5611
+ * @private
5612
+ * @param {*} value The value to inspect.
5613
+ * @param {string} key The key of the property to inspect.
5614
+ * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
5615
+ */
5616
+ function customOmitClone(value) {
5617
+ return isPlainObject(value) ? undefined : value;
5618
+ }
5619
+
5620
+ /**
5621
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
5622
+ * partial deep comparisons.
5623
+ *
5624
+ * @private
5625
+ * @param {Array} array The array to compare.
5626
+ * @param {Array} other The other array to compare.
5627
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5628
+ * @param {Function} customizer The function to customize comparisons.
5629
+ * @param {Function} equalFunc The function to determine equivalents of values.
5630
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
5631
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5632
+ */
5633
+ function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5634
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5635
+ arrLength = array.length,
5636
+ othLength = other.length;
5637
+
5638
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5639
+ return false;
5640
+ }
5641
+ // Check that cyclic values are equal.
5642
+ var arrStacked = stack.get(array);
5643
+ var othStacked = stack.get(other);
5644
+ if (arrStacked && othStacked) {
5645
+ return arrStacked == other && othStacked == array;
5646
+ }
5647
+ var index = -1,
5648
+ result = true,
5649
+ seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5650
+
5651
+ stack.set(array, other);
5652
+ stack.set(other, array);
5653
+
5654
+ // Ignore non-index properties.
5655
+ while (++index < arrLength) {
5656
+ var arrValue = array[index],
5657
+ othValue = other[index];
5658
+
5659
+ if (customizer) {
5660
+ var compared = isPartial
5661
+ ? customizer(othValue, arrValue, index, other, array, stack)
5662
+ : customizer(arrValue, othValue, index, array, other, stack);
5663
+ }
5664
+ if (compared !== undefined) {
5665
+ if (compared) {
5666
+ continue;
5667
+ }
5668
+ result = false;
5669
+ break;
5670
+ }
5671
+ // Recursively compare arrays (susceptible to call stack limits).
5672
+ if (seen) {
5673
+ if (!arraySome(other, function(othValue, othIndex) {
5674
+ if (!cacheHas(seen, othIndex) &&
5675
+ (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5676
+ return seen.push(othIndex);
5677
+ }
5678
+ })) {
5679
+ result = false;
5680
+ break;
5681
+ }
5682
+ } else if (!(
5683
+ arrValue === othValue ||
5684
+ equalFunc(arrValue, othValue, bitmask, customizer, stack)
5685
+ )) {
5686
+ result = false;
5687
+ break;
5688
+ }
5689
+ }
5690
+ stack['delete'](array);
5691
+ stack['delete'](other);
5692
+ return result;
5693
+ }
5694
+
5695
+ /**
5696
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
5697
+ * the same `toStringTag`.
5698
+ *
5699
+ * **Note:** This function only supports comparing values with tags of
5700
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
5701
+ *
5702
+ * @private
5703
+ * @param {Object} object The object to compare.
5704
+ * @param {Object} other The other object to compare.
5705
+ * @param {string} tag The `toStringTag` of the objects to compare.
5706
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5707
+ * @param {Function} customizer The function to customize comparisons.
5708
+ * @param {Function} equalFunc The function to determine equivalents of values.
5709
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
5710
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
5711
+ */
5712
+ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
5713
+ switch (tag) {
5714
+ case dataViewTag:
5715
+ if ((object.byteLength != other.byteLength) ||
5716
+ (object.byteOffset != other.byteOffset)) {
5717
+ return false;
5718
+ }
5719
+ object = object.buffer;
5720
+ other = other.buffer;
5721
+
5722
+ case arrayBufferTag:
5723
+ if ((object.byteLength != other.byteLength) ||
5724
+ !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
5725
+ return false;
5726
+ }
5727
+ return true;
5728
+
5729
+ case boolTag:
5730
+ case dateTag:
5731
+ case numberTag:
5732
+ // Coerce booleans to `1` or `0` and dates to milliseconds.
5733
+ // Invalid dates are coerced to `NaN`.
5734
+ return eq(+object, +other);
5735
+
5736
+ case errorTag:
5737
+ return object.name == other.name && object.message == other.message;
5738
+
5739
+ case regexpTag:
5740
+ case stringTag:
5741
+ // Coerce regexes to strings and treat strings, primitives and objects,
5742
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
5743
+ // for more details.
5744
+ return object == (other + '');
5745
+
5746
+ case mapTag:
5747
+ var convert = mapToArray;
5748
+
5749
+ case setTag:
5750
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
5751
+ convert || (convert = setToArray);
5752
+
5753
+ if (object.size != other.size && !isPartial) {
5754
+ return false;
5755
+ }
5756
+ // Assume cyclic values are equal.
5757
+ var stacked = stack.get(object);
5758
+ if (stacked) {
5759
+ return stacked == other;
5760
+ }
5761
+ bitmask |= COMPARE_UNORDERED_FLAG;
5762
+
5763
+ // Recursively compare objects (susceptible to call stack limits).
5764
+ stack.set(object, other);
5765
+ var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
5766
+ stack['delete'](object);
5767
+ return result;
5768
+
5769
+ case symbolTag:
5770
+ if (symbolValueOf) {
5771
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
5772
+ }
5773
+ }
5774
+ return false;
5775
+ }
5776
+
5777
+ /**
5778
+ * A specialized version of `baseIsEqualDeep` for objects with support for
5779
+ * partial deep comparisons.
5780
+ *
5781
+ * @private
5782
+ * @param {Object} object The object to compare.
5783
+ * @param {Object} other The other object to compare.
5784
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5785
+ * @param {Function} customizer The function to customize comparisons.
5786
+ * @param {Function} equalFunc The function to determine equivalents of values.
5787
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
5788
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
5789
+ */
5790
+ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
5791
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5792
+ objProps = getAllKeys(object),
5793
+ objLength = objProps.length,
5794
+ othProps = getAllKeys(other),
5795
+ othLength = othProps.length;
5796
+
5797
+ if (objLength != othLength && !isPartial) {
5798
+ return false;
5799
+ }
5800
+ var index = objLength;
5801
+ while (index--) {
5802
+ var key = objProps[index];
5803
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
5804
+ return false;
5805
+ }
5806
+ }
5807
+ // Check that cyclic values are equal.
5808
+ var objStacked = stack.get(object);
5809
+ var othStacked = stack.get(other);
5810
+ if (objStacked && othStacked) {
5811
+ return objStacked == other && othStacked == object;
5812
+ }
5813
+ var result = true;
5814
+ stack.set(object, other);
5815
+ stack.set(other, object);
5816
+
5817
+ var skipCtor = isPartial;
5818
+ while (++index < objLength) {
5819
+ key = objProps[index];
5820
+ var objValue = object[key],
5821
+ othValue = other[key];
5822
+
5823
+ if (customizer) {
5824
+ var compared = isPartial
5825
+ ? customizer(othValue, objValue, key, other, object, stack)
5826
+ : customizer(objValue, othValue, key, object, other, stack);
5827
+ }
5828
+ // Recursively compare objects (susceptible to call stack limits).
5829
+ if (!(compared === undefined
5830
+ ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
5831
+ : compared
5832
+ )) {
5833
+ result = false;
5834
+ break;
5835
+ }
5836
+ skipCtor || (skipCtor = key == 'constructor');
5837
+ }
5838
+ if (result && !skipCtor) {
5839
+ var objCtor = object.constructor,
5840
+ othCtor = other.constructor;
5841
+
5842
+ // Non `Object` object instances with different constructors are not equal.
5843
+ if (objCtor != othCtor &&
5844
+ ('constructor' in object && 'constructor' in other) &&
5845
+ !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
5846
+ typeof othCtor == 'function' && othCtor instanceof othCtor)) {
5847
+ result = false;
5848
+ }
5849
+ }
5850
+ stack['delete'](object);
5851
+ stack['delete'](other);
5852
+ return result;
5853
+ }
5854
+
5855
+ /**
5856
+ * A specialized version of `baseRest` which flattens the rest array.
5857
+ *
5858
+ * @private
5859
+ * @param {Function} func The function to apply a rest parameter to.
5860
+ * @returns {Function} Returns the new function.
5861
+ */
5862
+ function flatRest(func) {
5863
+ return setToString(overRest(func, undefined, flatten), func + '');
5864
+ }
5865
+
5866
+ /**
5867
+ * Creates an array of own enumerable property names and symbols of `object`.
5868
+ *
5869
+ * @private
5870
+ * @param {Object} object The object to query.
5871
+ * @returns {Array} Returns the array of property names and symbols.
5872
+ */
5873
+ function getAllKeys(object) {
5874
+ return baseGetAllKeys(object, keys, getSymbols);
5875
+ }
5876
+
5877
+ /**
5878
+ * Creates an array of own and inherited enumerable property names and
5879
+ * symbols of `object`.
5880
+ *
5881
+ * @private
5882
+ * @param {Object} object The object to query.
5883
+ * @returns {Array} Returns the array of property names and symbols.
5884
+ */
5885
+ function getAllKeysIn(object) {
5886
+ return baseGetAllKeys(object, keysIn, getSymbolsIn);
5887
+ }
5888
+
5889
+ /**
5890
+ * Gets metadata for `func`.
5891
+ *
5892
+ * @private
5893
+ * @param {Function} func The function to query.
5894
+ * @returns {*} Returns the metadata for `func`.
5895
+ */
5896
+ var getData = !metaMap ? noop : function(func) {
5897
+ return metaMap.get(func);
5898
+ };
5899
+
5900
+ /**
5901
+ * Gets the name of `func`.
5902
+ *
5903
+ * @private
5904
+ * @param {Function} func The function to query.
5905
+ * @returns {string} Returns the function name.
5906
+ */
5907
+ function getFuncName(func) {
5908
+ var result = (func.name + ''),
5909
+ array = realNames[result],
5910
+ length = hasOwnProperty.call(realNames, result) ? array.length : 0;
5911
+
5912
+ while (length--) {
5913
+ var data = array[length],
5914
+ otherFunc = data.func;
5915
+ if (otherFunc == null || otherFunc == func) {
5916
+ return data.name;
5917
+ }
5918
+ }
5919
+ return result;
5920
+ }
5921
+
5922
+ /**
5923
+ * Gets the argument placeholder value for `func`.
5924
+ *
5925
+ * @private
5926
+ * @param {Function} func The function to inspect.
5927
+ * @returns {*} Returns the placeholder value.
5928
+ */
5929
+ function getHolder(func) {
5930
+ var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
5931
+ return object.placeholder;
5932
+ }
5933
+
5934
+ /**
5935
+ * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
5936
+ * this function returns the custom method, otherwise it returns `baseIteratee`.
5937
+ * If arguments are provided, the chosen function is invoked with them and
5938
+ * its result is returned.
5939
+ *
5940
+ * @private
5941
+ * @param {*} [value] The value to convert to an iteratee.
5942
+ * @param {number} [arity] The arity of the created iteratee.
5943
+ * @returns {Function} Returns the chosen function or its result.
5944
+ */
5945
+ function getIteratee() {
5946
+ var result = lodash.iteratee || iteratee;
5947
+ result = result === iteratee ? baseIteratee : result;
5948
+ return arguments.length ? result(arguments[0], arguments[1]) : result;
5949
+ }
5950
+
5951
+ /**
5952
+ * Gets the data for `map`.
5953
+ *
5954
+ * @private
5955
+ * @param {Object} map The map to query.
5956
+ * @param {string} key The reference key.
5957
+ * @returns {*} Returns the map data.
5958
+ */
5959
+ function getMapData(map, key) {
5960
+ var data = map.__data__;
5961
+ return isKeyable(key)
5962
+ ? data[typeof key == 'string' ? 'string' : 'hash']
5963
+ : data.map;
5964
+ }
5965
+
5966
+ /**
5967
+ * Gets the property names, values, and compare flags of `object`.
5968
+ *
5969
+ * @private
5970
+ * @param {Object} object The object to query.
5971
+ * @returns {Array} Returns the match data of `object`.
5972
+ */
5973
+ function getMatchData(object) {
5974
+ var result = keys(object),
5975
+ length = result.length;
5976
+
5977
+ while (length--) {
5978
+ var key = result[length],
5979
+ value = object[key];
5980
+
5981
+ result[length] = [key, value, isStrictComparable(value)];
5982
+ }
5983
+ return result;
5984
+ }
5985
+
5986
+ /**
5987
+ * Gets the native function at `key` of `object`.
5988
+ *
5989
+ * @private
5990
+ * @param {Object} object The object to query.
5991
+ * @param {string} key The key of the method to get.
5992
+ * @returns {*} Returns the function if it's native, else `undefined`.
5993
+ */
5994
+ function getNative(object, key) {
5995
+ var value = getValue(object, key);
5996
+ return baseIsNative(value) ? value : undefined;
5997
+ }
5998
+
5999
+ /**
6000
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
6001
+ *
6002
+ * @private
6003
+ * @param {*} value The value to query.
6004
+ * @returns {string} Returns the raw `toStringTag`.
6005
+ */
6006
+ function getRawTag(value) {
6007
+ var isOwn = hasOwnProperty.call(value, symToStringTag),
6008
+ tag = value[symToStringTag];
6009
+
6010
+ try {
6011
+ value[symToStringTag] = undefined;
6012
+ var unmasked = true;
6013
+ } catch (e) {}
6014
+
6015
+ var result = nativeObjectToString.call(value);
6016
+ if (unmasked) {
6017
+ if (isOwn) {
6018
+ value[symToStringTag] = tag;
6019
+ } else {
6020
+ delete value[symToStringTag];
6021
+ }
6022
+ }
6023
+ return result;
6024
+ }
6025
+
6026
+ /**
6027
+ * Creates an array of the own enumerable symbols of `object`.
6028
+ *
6029
+ * @private
6030
+ * @param {Object} object The object to query.
6031
+ * @returns {Array} Returns the array of symbols.
6032
+ */
6033
+ var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
6034
+ if (object == null) {
6035
+ return [];
6036
+ }
6037
+ object = Object(object);
6038
+ return arrayFilter(nativeGetSymbols(object), function(symbol) {
6039
+ return propertyIsEnumerable.call(object, symbol);
6040
+ });
6041
+ };
6042
+
6043
+ /**
6044
+ * Creates an array of the own and inherited enumerable symbols of `object`.
6045
+ *
6046
+ * @private
6047
+ * @param {Object} object The object to query.
6048
+ * @returns {Array} Returns the array of symbols.
6049
+ */
6050
+ var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
6051
+ var result = [];
6052
+ while (object) {
6053
+ arrayPush(result, getSymbols(object));
6054
+ object = getPrototype(object);
6055
+ }
6056
+ return result;
6057
+ };
6058
+
6059
+ /**
6060
+ * Gets the `toStringTag` of `value`.
6061
+ *
6062
+ * @private
6063
+ * @param {*} value The value to query.
6064
+ * @returns {string} Returns the `toStringTag`.
6065
+ */
6066
+ var getTag = baseGetTag;
6067
+
6068
+ // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
6069
+ if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
6070
+ (Map && getTag(new Map) != mapTag) ||
6071
+ (Promise && getTag(Promise.resolve()) != promiseTag) ||
6072
+ (Set && getTag(new Set) != setTag) ||
6073
+ (WeakMap && getTag(new WeakMap) != weakMapTag)) {
6074
+ getTag = function(value) {
6075
+ var result = baseGetTag(value),
6076
+ Ctor = result == objectTag ? value.constructor : undefined,
6077
+ ctorString = Ctor ? toSource(Ctor) : '';
6078
+
6079
+ if (ctorString) {
6080
+ switch (ctorString) {
6081
+ case dataViewCtorString: return dataViewTag;
6082
+ case mapCtorString: return mapTag;
6083
+ case promiseCtorString: return promiseTag;
6084
+ case setCtorString: return setTag;
6085
+ case weakMapCtorString: return weakMapTag;
6086
+ }
6087
+ }
6088
+ return result;
6089
+ };
6090
+ }
6091
+
6092
+ /**
6093
+ * Gets the view, applying any `transforms` to the `start` and `end` positions.
6094
+ *
6095
+ * @private
6096
+ * @param {number} start The start of the view.
6097
+ * @param {number} end The end of the view.
6098
+ * @param {Array} transforms The transformations to apply to the view.
6099
+ * @returns {Object} Returns an object containing the `start` and `end`
6100
+ * positions of the view.
6101
+ */
6102
+ function getView(start, end, transforms) {
6103
+ var index = -1,
6104
+ length = transforms.length;
6105
+
6106
+ while (++index < length) {
6107
+ var data = transforms[index],
6108
+ size = data.size;
6109
+
6110
+ switch (data.type) {
6111
+ case 'drop': start += size; break;
6112
+ case 'dropRight': end -= size; break;
6113
+ case 'take': end = nativeMin(end, start + size); break;
6114
+ case 'takeRight': start = nativeMax(start, end - size); break;
6115
+ }
6116
+ }
6117
+ return { 'start': start, 'end': end };
6118
+ }
6119
+
6120
+ /**
6121
+ * Extracts wrapper details from the `source` body comment.
6122
+ *
6123
+ * @private
6124
+ * @param {string} source The source to inspect.
6125
+ * @returns {Array} Returns the wrapper details.
6126
+ */
6127
+ function getWrapDetails(source) {
6128
+ var match = source.match(reWrapDetails);
6129
+ return match ? match[1].split(reSplitDetails) : [];
6130
+ }
6131
+
6132
+ /**
6133
+ * Checks if `path` exists on `object`.
6134
+ *
6135
+ * @private
6136
+ * @param {Object} object The object to query.
6137
+ * @param {Array|string} path The path to check.
6138
+ * @param {Function} hasFunc The function to check properties.
6139
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
6140
+ */
6141
+ function hasPath(object, path, hasFunc) {
6142
+ path = castPath(path, object);
6143
+
6144
+ var index = -1,
6145
+ length = path.length,
6146
+ result = false;
6147
+
6148
+ while (++index < length) {
6149
+ var key = toKey(path[index]);
6150
+ if (!(result = object != null && hasFunc(object, key))) {
6151
+ break;
6152
+ }
6153
+ object = object[key];
6154
+ }
6155
+ if (result || ++index != length) {
6156
+ return result;
6157
+ }
6158
+ length = object == null ? 0 : object.length;
6159
+ return !!length && isLength(length) && isIndex(key, length) &&
6160
+ (isArray(object) || isArguments(object));
6161
+ }
6162
+
6163
+ /**
6164
+ * Initializes an array clone.
6165
+ *
6166
+ * @private
6167
+ * @param {Array} array The array to clone.
6168
+ * @returns {Array} Returns the initialized clone.
6169
+ */
6170
+ function initCloneArray(array) {
6171
+ var length = array.length,
6172
+ result = new array.constructor(length);
6173
+
6174
+ // Add properties assigned by `RegExp#exec`.
6175
+ if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
6176
+ result.index = array.index;
6177
+ result.input = array.input;
6178
+ }
6179
+ return result;
6180
+ }
6181
+
6182
+ /**
6183
+ * Initializes an object clone.
6184
+ *
6185
+ * @private
6186
+ * @param {Object} object The object to clone.
6187
+ * @returns {Object} Returns the initialized clone.
6188
+ */
6189
+ function initCloneObject(object) {
6190
+ return (typeof object.constructor == 'function' && !isPrototype(object))
6191
+ ? baseCreate(getPrototype(object))
6192
+ : {};
6193
+ }
6194
+
6195
+ /**
6196
+ * Initializes an object clone based on its `toStringTag`.
6197
+ *
6198
+ * **Note:** This function only supports cloning values with tags of
6199
+ * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
6200
+ *
6201
+ * @private
6202
+ * @param {Object} object The object to clone.
6203
+ * @param {string} tag The `toStringTag` of the object to clone.
6204
+ * @param {boolean} [isDeep] Specify a deep clone.
6205
+ * @returns {Object} Returns the initialized clone.
6206
+ */
6207
+ function initCloneByTag(object, tag, isDeep) {
6208
+ var Ctor = object.constructor;
6209
+ switch (tag) {
6210
+ case arrayBufferTag:
6211
+ return cloneArrayBuffer(object);
6212
+
6213
+ case boolTag:
6214
+ case dateTag:
6215
+ return new Ctor(+object);
6216
+
6217
+ case dataViewTag:
6218
+ return cloneDataView(object, isDeep);
6219
+
6220
+ case float32Tag: case float64Tag:
6221
+ case int8Tag: case int16Tag: case int32Tag:
6222
+ case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
6223
+ return cloneTypedArray(object, isDeep);
6224
+
6225
+ case mapTag:
6226
+ return new Ctor;
6227
+
6228
+ case numberTag:
6229
+ case stringTag:
6230
+ return new Ctor(object);
6231
+
6232
+ case regexpTag:
6233
+ return cloneRegExp(object);
6234
+
6235
+ case setTag:
6236
+ return new Ctor;
6237
+
6238
+ case symbolTag:
6239
+ return cloneSymbol(object);
6240
+ }
6241
+ }
6242
+
6243
+ /**
6244
+ * Inserts wrapper `details` in a comment at the top of the `source` body.
6245
+ *
6246
+ * @private
6247
+ * @param {string} source The source to modify.
6248
+ * @returns {Array} details The details to insert.
6249
+ * @returns {string} Returns the modified source.
6250
+ */
6251
+ function insertWrapDetails(source, details) {
6252
+ var length = details.length;
6253
+ if (!length) {
6254
+ return source;
6255
+ }
6256
+ var lastIndex = length - 1;
6257
+ details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
6258
+ details = details.join(length > 2 ? ', ' : ' ');
6259
+ return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
6260
+ }
6261
+
6262
+ /**
6263
+ * Checks if `value` is a flattenable `arguments` object or array.
6264
+ *
6265
+ * @private
6266
+ * @param {*} value The value to check.
6267
+ * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
6268
+ */
6269
+ function isFlattenable(value) {
6270
+ return isArray(value) || isArguments(value) ||
6271
+ !!(spreadableSymbol && value && value[spreadableSymbol]);
6272
+ }
6273
+
6274
+ /**
6275
+ * Checks if `value` is a valid array-like index.
6276
+ *
6277
+ * @private
6278
+ * @param {*} value The value to check.
6279
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
6280
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
6281
+ */
6282
+ function isIndex(value, length) {
6283
+ var type = typeof value;
6284
+ length = length == null ? MAX_SAFE_INTEGER : length;
6285
+
6286
+ return !!length &&
6287
+ (type == 'number' ||
6288
+ (type != 'symbol' && reIsUint.test(value))) &&
6289
+ (value > -1 && value % 1 == 0 && value < length);
6290
+ }
6291
+
6292
+ /**
6293
+ * Checks if the given arguments are from an iteratee call.
6294
+ *
6295
+ * @private
6296
+ * @param {*} value The potential iteratee value argument.
6297
+ * @param {*} index The potential iteratee index or key argument.
6298
+ * @param {*} object The potential iteratee object argument.
6299
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
6300
+ * else `false`.
6301
+ */
6302
+ function isIterateeCall(value, index, object) {
6303
+ if (!isObject(object)) {
6304
+ return false;
6305
+ }
6306
+ var type = typeof index;
6307
+ if (type == 'number'
6308
+ ? (isArrayLike(object) && isIndex(index, object.length))
6309
+ : (type == 'string' && index in object)
6310
+ ) {
6311
+ return eq(object[index], value);
6312
+ }
6313
+ return false;
6314
+ }
6315
+
6316
+ /**
6317
+ * Checks if `value` is a property name and not a property path.
6318
+ *
6319
+ * @private
6320
+ * @param {*} value The value to check.
6321
+ * @param {Object} [object] The object to query keys on.
6322
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
6323
+ */
6324
+ function isKey(value, object) {
6325
+ if (isArray(value)) {
6326
+ return false;
6327
+ }
6328
+ var type = typeof value;
6329
+ if (type == 'number' || type == 'symbol' || type == 'boolean' ||
6330
+ value == null || isSymbol(value)) {
6331
+ return true;
6332
+ }
6333
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
6334
+ (object != null && value in Object(object));
6335
+ }
6336
+
6337
+ /**
6338
+ * Checks if `value` is suitable for use as unique object key.
6339
+ *
6340
+ * @private
6341
+ * @param {*} value The value to check.
6342
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
6343
+ */
6344
+ function isKeyable(value) {
6345
+ var type = typeof value;
6346
+ return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
6347
+ ? (value !== '__proto__')
6348
+ : (value === null);
6349
+ }
6350
+
6351
+ /**
6352
+ * Checks if `func` has a lazy counterpart.
6353
+ *
6354
+ * @private
6355
+ * @param {Function} func The function to check.
6356
+ * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
6357
+ * else `false`.
6358
+ */
6359
+ function isLaziable(func) {
6360
+ var funcName = getFuncName(func),
6361
+ other = lodash[funcName];
6362
+
6363
+ if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
6364
+ return false;
6365
+ }
6366
+ if (func === other) {
6367
+ return true;
6368
+ }
6369
+ var data = getData(other);
6370
+ return !!data && func === data[0];
6371
+ }
6372
+
6373
+ /**
6374
+ * Checks if `func` has its source masked.
6375
+ *
6376
+ * @private
6377
+ * @param {Function} func The function to check.
6378
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
6379
+ */
6380
+ function isMasked(func) {
6381
+ return !!maskSrcKey && (maskSrcKey in func);
6382
+ }
6383
+
6384
+ /**
6385
+ * Checks if `func` is capable of being masked.
6386
+ *
6387
+ * @private
6388
+ * @param {*} value The value to check.
6389
+ * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
6390
+ */
6391
+ var isMaskable = coreJsData ? isFunction : stubFalse;
6392
+
6393
+ /**
6394
+ * Checks if `value` is likely a prototype object.
6395
+ *
6396
+ * @private
6397
+ * @param {*} value The value to check.
6398
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
6399
+ */
6400
+ function isPrototype(value) {
6401
+ var Ctor = value && value.constructor,
6402
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
6403
+
6404
+ return value === proto;
6405
+ }
6406
+
6407
+ /**
6408
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
6409
+ *
6410
+ * @private
6411
+ * @param {*} value The value to check.
6412
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
6413
+ * equality comparisons, else `false`.
6414
+ */
6415
+ function isStrictComparable(value) {
6416
+ return value === value && !isObject(value);
6417
+ }
6418
+
6419
+ /**
6420
+ * A specialized version of `matchesProperty` for source values suitable
6421
+ * for strict equality comparisons, i.e. `===`.
6422
+ *
6423
+ * @private
6424
+ * @param {string} key The key of the property to get.
6425
+ * @param {*} srcValue The value to match.
6426
+ * @returns {Function} Returns the new spec function.
6427
+ */
6428
+ function matchesStrictComparable(key, srcValue) {
6429
+ return function(object) {
6430
+ if (object == null) {
6431
+ return false;
6432
+ }
6433
+ return object[key] === srcValue &&
6434
+ (srcValue !== undefined || (key in Object(object)));
6435
+ };
6436
+ }
6437
+
6438
+ /**
6439
+ * A specialized version of `_.memoize` which clears the memoized function's
6440
+ * cache when it exceeds `MAX_MEMOIZE_SIZE`.
6441
+ *
6442
+ * @private
6443
+ * @param {Function} func The function to have its output memoized.
6444
+ * @returns {Function} Returns the new memoized function.
6445
+ */
6446
+ function memoizeCapped(func) {
6447
+ var result = memoize(func, function(key) {
6448
+ if (cache.size === MAX_MEMOIZE_SIZE) {
6449
+ cache.clear();
6450
+ }
6451
+ return key;
6452
+ });
6453
+
6454
+ var cache = result.cache;
6455
+ return result;
6456
+ }
6457
+
6458
+ /**
6459
+ * Merges the function metadata of `source` into `data`.
6460
+ *
6461
+ * Merging metadata reduces the number of wrappers used to invoke a function.
6462
+ * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
6463
+ * may be applied regardless of execution order. Methods like `_.ary` and
6464
+ * `_.rearg` modify function arguments, making the order in which they are
6465
+ * executed important, preventing the merging of metadata. However, we make
6466
+ * an exception for a safe combined case where curried functions have `_.ary`
6467
+ * and or `_.rearg` applied.
6468
+ *
6469
+ * @private
6470
+ * @param {Array} data The destination metadata.
6471
+ * @param {Array} source The source metadata.
6472
+ * @returns {Array} Returns `data`.
6473
+ */
6474
+ function mergeData(data, source) {
6475
+ var bitmask = data[1],
6476
+ srcBitmask = source[1],
6477
+ newBitmask = bitmask | srcBitmask,
6478
+ isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
6479
+
6480
+ var isCombo =
6481
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
6482
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
6483
+ ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
6484
+
6485
+ // Exit early if metadata can't be merged.
6486
+ if (!(isCommon || isCombo)) {
6487
+ return data;
6488
+ }
6489
+ // Use source `thisArg` if available.
6490
+ if (srcBitmask & WRAP_BIND_FLAG) {
6491
+ data[2] = source[2];
6492
+ // Set when currying a bound function.
6493
+ newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
6494
+ }
6495
+ // Compose partial arguments.
6496
+ var value = source[3];
6497
+ if (value) {
6498
+ var partials = data[3];
6499
+ data[3] = partials ? composeArgs(partials, value, source[4]) : value;
6500
+ data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
6501
+ }
6502
+ // Compose partial right arguments.
6503
+ value = source[5];
6504
+ if (value) {
6505
+ partials = data[5];
6506
+ data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
6507
+ data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
6508
+ }
6509
+ // Use source `argPos` if available.
6510
+ value = source[7];
6511
+ if (value) {
6512
+ data[7] = value;
6513
+ }
6514
+ // Use source `ary` if it's smaller.
6515
+ if (srcBitmask & WRAP_ARY_FLAG) {
6516
+ data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
6517
+ }
6518
+ // Use source `arity` if one is not provided.
6519
+ if (data[9] == null) {
6520
+ data[9] = source[9];
6521
+ }
6522
+ // Use source `func` and merge bitmasks.
6523
+ data[0] = source[0];
6524
+ data[1] = newBitmask;
6525
+
6526
+ return data;
6527
+ }
6528
+
6529
+ /**
6530
+ * This function is like
6531
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
6532
+ * except that it includes inherited enumerable properties.
6533
+ *
6534
+ * @private
6535
+ * @param {Object} object The object to query.
6536
+ * @returns {Array} Returns the array of property names.
6537
+ */
6538
+ function nativeKeysIn(object) {
6539
+ var result = [];
6540
+ if (object != null) {
6541
+ for (var key in Object(object)) {
6542
+ result.push(key);
6543
+ }
6544
+ }
6545
+ return result;
6546
+ }
6547
+
6548
+ /**
6549
+ * Converts `value` to a string using `Object.prototype.toString`.
6550
+ *
6551
+ * @private
6552
+ * @param {*} value The value to convert.
6553
+ * @returns {string} Returns the converted string.
6554
+ */
6555
+ function objectToString(value) {
6556
+ return nativeObjectToString.call(value);
6557
+ }
6558
+
6559
+ /**
6560
+ * A specialized version of `baseRest` which transforms the rest array.
6561
+ *
6562
+ * @private
6563
+ * @param {Function} func The function to apply a rest parameter to.
6564
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
6565
+ * @param {Function} transform The rest array transform.
6566
+ * @returns {Function} Returns the new function.
6567
+ */
6568
+ function overRest(func, start, transform) {
6569
+ start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
6570
+ return function() {
6571
+ var args = arguments,
6572
+ index = -1,
6573
+ length = nativeMax(args.length - start, 0),
6574
+ array = Array(length);
6575
+
6576
+ while (++index < length) {
6577
+ array[index] = args[start + index];
6578
+ }
6579
+ index = -1;
6580
+ var otherArgs = Array(start + 1);
6581
+ while (++index < start) {
6582
+ otherArgs[index] = args[index];
6583
+ }
6584
+ otherArgs[start] = transform(array);
6585
+ return apply(func, this, otherArgs);
6586
+ };
6587
+ }
6588
+
6589
+ /**
6590
+ * Gets the parent value at `path` of `object`.
6591
+ *
6592
+ * @private
6593
+ * @param {Object} object The object to query.
6594
+ * @param {Array} path The path to get the parent value of.
6595
+ * @returns {*} Returns the parent value.
6596
+ */
6597
+ function parent(object, path) {
6598
+ return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
6599
+ }
6600
+
6601
+ /**
6602
+ * Reo