fluxxor-rails 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f891290cdee5391dda5e902aa917792ac2d3c97
4
- data.tar.gz: 06f567ef1d600bfbbfb1abbe540304957bb3d230
3
+ metadata.gz: 94148b76fcd8cad6e9f4df65cc610b3f142ece20
4
+ data.tar.gz: 28c41be323e80cfc0c9114bfbb2891b12c8069fb
5
5
  SHA512:
6
- metadata.gz: 196f41bc6711e791b96c106508b239f8db899f17f241e05c51044736b2d4d4ef9cf6aae84c41f05eea1b0a8a215f69553cf15f7e990c8db0fa26de461437ce98
7
- data.tar.gz: 2f86ec1b6bbe42106e65bef3a3bc241eaff65b1602eb5f86f0c4b57dff1395e85fc7f195f0a59668fe47e64acc1a87d5aeeba3ba4d44170c17527d392f16dd78
6
+ metadata.gz: 90b182d778a45c2c0d100392808a1682ca19f4c4a2a7aad5067ce0e95c3f4c0c689cbef51cffdb93f30241046a414148d0e72112e68607f9fc9c4ed9c939134c
7
+ data.tar.gz: 03aca8e6fa144bb9bee6d5836641b875e002bee9d536b1ac71c22af15bc66f04c99d3682f29ed74d42f27d78a48a13ccb6efe04c248481eb36de05dc9a687d0c
@@ -1,5 +1,5 @@
1
1
  module Fluxxor
2
2
  module Rails
3
- VERSION = '1.5.3'
3
+ VERSION = '1.5.4'
4
4
  end
5
5
  end
@@ -78,16 +78,16 @@ return /******/ (function(modules) { // webpackBootstrap
78
78
  /* 1 */
79
79
  /***/ function(module, exports, __webpack_require__) {
80
80
 
81
- var _clone = __webpack_require__(12),
82
- _mapValues = __webpack_require__(15),
83
- _forOwn = __webpack_require__(16),
84
- _intersection = __webpack_require__(19),
85
- _keys = __webpack_require__(17),
86
- _map = __webpack_require__(21),
87
- _each = __webpack_require__(22),
88
- _size = __webpack_require__(23),
89
- _findKey = __webpack_require__(18),
90
- _uniq = __webpack_require__(20);
81
+ var _clone = __webpack_require__(18),
82
+ _mapValues = __webpack_require__(19),
83
+ _forOwn = __webpack_require__(20),
84
+ _intersection = __webpack_require__(23),
85
+ _keys = __webpack_require__(21),
86
+ _map = __webpack_require__(14),
87
+ _each = __webpack_require__(12),
88
+ _size = __webpack_require__(15),
89
+ _findKey = __webpack_require__(22),
90
+ _uniq = __webpack_require__(24);
91
91
 
92
92
  var Dispatcher = function(stores) {
93
93
  this.stores = {};
@@ -231,10 +231,10 @@ return /******/ (function(modules) { // webpackBootstrap
231
231
  var EventEmitter = __webpack_require__(10),
232
232
  inherits = __webpack_require__(8),
233
233
  objectPath = __webpack_require__(11),
234
- _each = __webpack_require__(22),
235
- _reduce = __webpack_require__(24),
236
- _isFunction = __webpack_require__(13),
237
- _isString = __webpack_require__(14);
234
+ _each = __webpack_require__(12),
235
+ _reduce = __webpack_require__(13),
236
+ _isFunction = __webpack_require__(16),
237
+ _isString = __webpack_require__(17);
238
238
 
239
239
  var Dispatcher = __webpack_require__(1);
240
240
 
@@ -427,7 +427,7 @@ return /******/ (function(modules) { // webpackBootstrap
427
427
  /* 5 */
428
428
  /***/ function(module, exports, __webpack_require__) {
429
429
 
430
- var _each = __webpack_require__(22);
430
+ var _each = __webpack_require__(12);
431
431
 
432
432
  var StoreWatchMixin = function() {
433
433
  var storeNames = Array.prototype.slice.call(arguments);
@@ -471,8 +471,8 @@ return /******/ (function(modules) { // webpackBootstrap
471
471
  /* 6 */
472
472
  /***/ function(module, exports, __webpack_require__) {
473
473
 
474
- var _each = __webpack_require__(22),
475
- _isFunction = __webpack_require__(13),
474
+ var _each = __webpack_require__(12),
475
+ _isFunction = __webpack_require__(16),
476
476
  Store = __webpack_require__(9),
477
477
  inherits = __webpack_require__(8);
478
478
 
@@ -517,7 +517,7 @@ return /******/ (function(modules) { // webpackBootstrap
517
517
  /* 7 */
518
518
  /***/ function(module, exports, __webpack_require__) {
519
519
 
520
- module.exports = "1.5.3"
520
+ module.exports = "1.5.4"
521
521
 
522
522
  /***/ },
523
523
  /* 8 */
@@ -574,7 +574,7 @@ return /******/ (function(modules) { // webpackBootstrap
574
574
 
575
575
  var EventEmitter = __webpack_require__(10),
576
576
  inherits = __webpack_require__(8),
577
- _isFunction = __webpack_require__(13),
577
+ _isFunction = __webpack_require__(16),
578
578
  _isObject = __webpack_require__(25);
579
579
 
580
580
  function Store(dispatcher) {
@@ -1129,83 +1129,210 @@ return /******/ (function(modules) { // webpackBootstrap
1129
1129
  /* 12 */
1130
1130
  /***/ function(module, exports, __webpack_require__) {
1131
1131
 
1132
- var baseClone = __webpack_require__(26),
1133
- bindCallback = __webpack_require__(27),
1134
- isIterateeCall = __webpack_require__(28);
1132
+ var arrayEach = __webpack_require__(26),
1133
+ baseEach = __webpack_require__(27),
1134
+ createForEach = __webpack_require__(28);
1135
1135
 
1136
1136
  /**
1137
- * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1138
- * otherwise they are assigned by reference. If `customizer` is provided it is
1139
- * invoked to produce the cloned values. If `customizer` returns `undefined`
1140
- * cloning is handled by the method instead. The `customizer` is bound to
1141
- * `thisArg` and invoked with two argument; (value [, index|key, object]).
1137
+ * Iterates over elements of `collection` invoking `iteratee` for each element.
1138
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1139
+ * (value, index|key, collection). Iteratee functions may exit iteration early
1140
+ * by explicitly returning `false`.
1142
1141
  *
1143
- * **Note:** This method is loosely based on the
1144
- * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1145
- * The enumerable properties of `arguments` objects and objects created by
1146
- * constructors other than `Object` are cloned to plain `Object` objects. An
1147
- * empty object is returned for uncloneable values such as functions, DOM nodes,
1148
- * Maps, Sets, and WeakMaps.
1142
+ * **Note:** As with other "Collections" methods, objects with a "length" property
1143
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1144
+ * may be used for object iteration.
1149
1145
  *
1150
1146
  * @static
1151
1147
  * @memberOf _
1152
- * @category Lang
1153
- * @param {*} value The value to clone.
1154
- * @param {boolean} [isDeep] Specify a deep clone.
1155
- * @param {Function} [customizer] The function to customize cloning values.
1156
- * @param {*} [thisArg] The `this` binding of `customizer`.
1157
- * @returns {*} Returns the cloned value.
1148
+ * @alias each
1149
+ * @category Collection
1150
+ * @param {Array|Object|string} collection The collection to iterate over.
1151
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1152
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1153
+ * @returns {Array|Object|string} Returns `collection`.
1154
+ * @example
1155
+ *
1156
+ * _([1, 2]).forEach(function(n) {
1157
+ * console.log(n);
1158
+ * }).value();
1159
+ * // => logs each value from left to right and returns the array
1160
+ *
1161
+ * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1162
+ * console.log(n, key);
1163
+ * });
1164
+ * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1165
+ */
1166
+ var forEach = createForEach(arrayEach, baseEach);
1167
+
1168
+ module.exports = forEach;
1169
+
1170
+
1171
+ /***/ },
1172
+ /* 13 */
1173
+ /***/ function(module, exports, __webpack_require__) {
1174
+
1175
+ var arrayReduce = __webpack_require__(29),
1176
+ baseEach = __webpack_require__(27),
1177
+ createReduce = __webpack_require__(30);
1178
+
1179
+ /**
1180
+ * Reduces `collection` to a value which is the accumulated result of running
1181
+ * each element in `collection` through `iteratee`, where each successive
1182
+ * invocation is supplied the return value of the previous. If `accumulator`
1183
+ * is not provided the first element of `collection` is used as the initial
1184
+ * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1185
+ * (accumulator, value, index|key, collection).
1186
+ *
1187
+ * Many lodash methods are guarded to work as interatees for methods like
1188
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
1189
+ *
1190
+ * The guarded methods are:
1191
+ * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1192
+ *
1193
+ * @static
1194
+ * @memberOf _
1195
+ * @alias foldl, inject
1196
+ * @category Collection
1197
+ * @param {Array|Object|string} collection The collection to iterate over.
1198
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1199
+ * @param {*} [accumulator] The initial value.
1200
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1201
+ * @returns {*} Returns the accumulated value.
1202
+ * @example
1203
+ *
1204
+ * _.reduce([1, 2], function(total, n) {
1205
+ * return total + n;
1206
+ * });
1207
+ * // => 3
1208
+ *
1209
+ * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1210
+ * result[key] = n * 3;
1211
+ * return result;
1212
+ * }, {});
1213
+ * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
1214
+ */
1215
+ var reduce = createReduce(arrayReduce, baseEach);
1216
+
1217
+ module.exports = reduce;
1218
+
1219
+
1220
+ /***/ },
1221
+ /* 14 */
1222
+ /***/ function(module, exports, __webpack_require__) {
1223
+
1224
+ var arrayMap = __webpack_require__(33),
1225
+ baseCallback = __webpack_require__(34),
1226
+ baseMap = __webpack_require__(35),
1227
+ isArray = __webpack_require__(36);
1228
+
1229
+ /**
1230
+ * Creates an array of values by running each element in `collection` through
1231
+ * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1232
+ * arguments: (value, index|key, collection).
1233
+ *
1234
+ * If a property name is provided for `iteratee` the created `_.property`
1235
+ * style callback returns the property value of the given element.
1236
+ *
1237
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1238
+ * style callback returns `true` for elements that have a matching property
1239
+ * value, else `false`.
1240
+ *
1241
+ * If an object is provided for `iteratee` the created `_.matches` style
1242
+ * callback returns `true` for elements that have the properties of the given
1243
+ * object, else `false`.
1244
+ *
1245
+ * Many lodash methods are guarded to work as interatees for methods like
1246
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1247
+ *
1248
+ * The guarded methods are:
1249
+ * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
1250
+ * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
1251
+ * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
1252
+ * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
1253
+ * `sum`, `uniq`, and `words`
1254
+ *
1255
+ * @static
1256
+ * @memberOf _
1257
+ * @alias collect
1258
+ * @category Collection
1259
+ * @param {Array|Object|string} collection The collection to iterate over.
1260
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1261
+ * per iteration.
1262
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1263
+ * @returns {Array} Returns the new mapped array.
1158
1264
  * @example
1159
1265
  *
1266
+ * function timesThree(n) {
1267
+ * return n * 3;
1268
+ * }
1269
+ *
1270
+ * _.map([1, 2], timesThree);
1271
+ * // => [3, 6]
1272
+ *
1273
+ * _.map({ 'a': 1, 'b': 2 }, timesThree);
1274
+ * // => [3, 6] (iteration order is not guaranteed)
1275
+ *
1160
1276
  * var users = [
1161
1277
  * { 'user': 'barney' },
1162
1278
  * { 'user': 'fred' }
1163
1279
  * ];
1164
1280
  *
1165
- * var shallow = _.clone(users);
1166
- * shallow[0] === users[0];
1167
- * // => true
1281
+ * // using the `_.property` callback shorthand
1282
+ * _.map(users, 'user');
1283
+ * // => ['barney', 'fred']
1284
+ */
1285
+ function map(collection, iteratee, thisArg) {
1286
+ var func = isArray(collection) ? arrayMap : baseMap;
1287
+ iteratee = baseCallback(iteratee, thisArg, 3);
1288
+ return func(collection, iteratee);
1289
+ }
1290
+
1291
+ module.exports = map;
1292
+
1293
+
1294
+ /***/ },
1295
+ /* 15 */
1296
+ /***/ function(module, exports, __webpack_require__) {
1297
+
1298
+ var getLength = __webpack_require__(31),
1299
+ isLength = __webpack_require__(32),
1300
+ keys = __webpack_require__(21);
1301
+
1302
+ /**
1303
+ * Gets the size of `collection` by returning its length for array-like
1304
+ * values or the number of own enumerable properties for objects.
1168
1305
  *
1169
- * var deep = _.clone(users, true);
1170
- * deep[0] === users[0];
1171
- * // => false
1306
+ * @static
1307
+ * @memberOf _
1308
+ * @category Collection
1309
+ * @param {Array|Object|string} collection The collection to inspect.
1310
+ * @returns {number} Returns the size of `collection`.
1311
+ * @example
1172
1312
  *
1173
- * // using a customizer callback
1174
- * var el = _.clone(document.body, function(value) {
1175
- * if (_.isElement(value)) {
1176
- * return value.cloneNode(false);
1177
- * }
1178
- * });
1313
+ * _.size([1, 2, 3]);
1314
+ * // => 3
1179
1315
  *
1180
- * el === document.body
1181
- * // => false
1182
- * el.nodeName
1183
- * // => BODY
1184
- * el.childNodes.length;
1185
- * // => 0
1316
+ * _.size({ 'a': 1, 'b': 2 });
1317
+ * // => 2
1318
+ *
1319
+ * _.size('pebbles');
1320
+ * // => 7
1186
1321
  */
1187
- function clone(value, isDeep, customizer, thisArg) {
1188
- if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1189
- isDeep = false;
1190
- }
1191
- else if (typeof isDeep == 'function') {
1192
- thisArg = customizer;
1193
- customizer = isDeep;
1194
- isDeep = false;
1195
- }
1196
- customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1197
- return baseClone(value, isDeep, customizer);
1322
+ function size(collection) {
1323
+ var length = collection ? getLength(collection) : 0;
1324
+ return isLength(length) ? length : keys(collection).length;
1198
1325
  }
1199
1326
 
1200
- module.exports = clone;
1327
+ module.exports = size;
1201
1328
 
1202
1329
 
1203
1330
  /***/ },
1204
- /* 13 */
1331
+ /* 16 */
1205
1332
  /***/ function(module, exports, __webpack_require__) {
1206
1333
 
1207
- /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(29),
1208
- isNative = __webpack_require__(30);
1334
+ /* WEBPACK VAR INJECTION */(function(global) {var baseIsFunction = __webpack_require__(37),
1335
+ isNative = __webpack_require__(38);
1209
1336
 
1210
1337
  /** `Object#toString` result references. */
1211
1338
  var funcTag = '[object Function]';
@@ -1250,10 +1377,10 @@ return /******/ (function(modules) { // webpackBootstrap
1250
1377
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1251
1378
 
1252
1379
  /***/ },
1253
- /* 14 */
1380
+ /* 17 */
1254
1381
  /***/ function(module, exports, __webpack_require__) {
1255
1382
 
1256
- var isObjectLike = __webpack_require__(31);
1383
+ var isObjectLike = __webpack_require__(39);
1257
1384
 
1258
1385
  /** `Object#toString` result references. */
1259
1386
  var stringTag = '[object String]';
@@ -1291,46 +1418,120 @@ return /******/ (function(modules) { // webpackBootstrap
1291
1418
 
1292
1419
 
1293
1420
  /***/ },
1294
- /* 15 */
1421
+ /* 18 */
1295
1422
  /***/ function(module, exports, __webpack_require__) {
1296
1423
 
1297
- var baseCallback = __webpack_require__(34),
1298
- baseForOwn = __webpack_require__(32);
1424
+ var baseClone = __webpack_require__(40),
1425
+ bindCallback = __webpack_require__(41),
1426
+ isIterateeCall = __webpack_require__(42);
1299
1427
 
1300
1428
  /**
1301
- * Creates an object with the same keys as `object` and values generated by
1302
- * running each own enumerable property of `object` through `iteratee`. The
1303
- * iteratee function is bound to `thisArg` and invoked with three arguments:
1304
- * (value, key, object).
1305
- *
1306
- * If a property name is provided for `iteratee` the created `_.property`
1307
- * style callback returns the property value of the given element.
1308
- *
1309
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1310
- * style callback returns `true` for elements that have a matching property
1311
- * value, else `false`.
1429
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
1430
+ * otherwise they are assigned by reference. If `customizer` is provided it is
1431
+ * invoked to produce the cloned values. If `customizer` returns `undefined`
1432
+ * cloning is handled by the method instead. The `customizer` is bound to
1433
+ * `thisArg` and invoked with two argument; (value [, index|key, object]).
1312
1434
  *
1313
- * If an object is provided for `iteratee` the created `_.matches` style
1314
- * callback returns `true` for elements that have the properties of the given
1315
- * object, else `false`.
1435
+ * **Note:** This method is loosely based on the
1436
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
1437
+ * The enumerable properties of `arguments` objects and objects created by
1438
+ * constructors other than `Object` are cloned to plain `Object` objects. An
1439
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
1440
+ * Maps, Sets, and WeakMaps.
1316
1441
  *
1317
1442
  * @static
1318
1443
  * @memberOf _
1319
- * @category Object
1320
- * @param {Object} object The object to iterate over.
1321
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1322
- * per iteration.
1323
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1324
- * @returns {Object} Returns the new mapped object.
1444
+ * @category Lang
1445
+ * @param {*} value The value to clone.
1446
+ * @param {boolean} [isDeep] Specify a deep clone.
1447
+ * @param {Function} [customizer] The function to customize cloning values.
1448
+ * @param {*} [thisArg] The `this` binding of `customizer`.
1449
+ * @returns {*} Returns the cloned value.
1325
1450
  * @example
1326
1451
  *
1327
- * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
1328
- * return n * 3;
1329
- * });
1330
- * // => { 'a': 3, 'b': 6 }
1452
+ * var users = [
1453
+ * { 'user': 'barney' },
1454
+ * { 'user': 'fred' }
1455
+ * ];
1331
1456
  *
1332
- * var users = {
1333
- * 'fred': { 'user': 'fred', 'age': 40 },
1457
+ * var shallow = _.clone(users);
1458
+ * shallow[0] === users[0];
1459
+ * // => true
1460
+ *
1461
+ * var deep = _.clone(users, true);
1462
+ * deep[0] === users[0];
1463
+ * // => false
1464
+ *
1465
+ * // using a customizer callback
1466
+ * var el = _.clone(document.body, function(value) {
1467
+ * if (_.isElement(value)) {
1468
+ * return value.cloneNode(false);
1469
+ * }
1470
+ * });
1471
+ *
1472
+ * el === document.body
1473
+ * // => false
1474
+ * el.nodeName
1475
+ * // => BODY
1476
+ * el.childNodes.length;
1477
+ * // => 0
1478
+ */
1479
+ function clone(value, isDeep, customizer, thisArg) {
1480
+ if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
1481
+ isDeep = false;
1482
+ }
1483
+ else if (typeof isDeep == 'function') {
1484
+ thisArg = customizer;
1485
+ customizer = isDeep;
1486
+ isDeep = false;
1487
+ }
1488
+ customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1);
1489
+ return baseClone(value, isDeep, customizer);
1490
+ }
1491
+
1492
+ module.exports = clone;
1493
+
1494
+
1495
+ /***/ },
1496
+ /* 19 */
1497
+ /***/ function(module, exports, __webpack_require__) {
1498
+
1499
+ var createObjectMapper = __webpack_require__(43);
1500
+
1501
+ /**
1502
+ * Creates an object with the same keys as `object` and values generated by
1503
+ * running each own enumerable property of `object` through `iteratee`. The
1504
+ * iteratee function is bound to `thisArg` and invoked with three arguments:
1505
+ * (value, key, object).
1506
+ *
1507
+ * If a property name is provided for `iteratee` the created `_.property`
1508
+ * style callback returns the property value of the given element.
1509
+ *
1510
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
1511
+ * style callback returns `true` for elements that have a matching property
1512
+ * value, else `false`.
1513
+ *
1514
+ * If an object is provided for `iteratee` the created `_.matches` style
1515
+ * callback returns `true` for elements that have the properties of the given
1516
+ * object, else `false`.
1517
+ *
1518
+ * @static
1519
+ * @memberOf _
1520
+ * @category Object
1521
+ * @param {Object} object The object to iterate over.
1522
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1523
+ * per iteration.
1524
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
1525
+ * @returns {Object} Returns the new mapped object.
1526
+ * @example
1527
+ *
1528
+ * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {
1529
+ * return n * 3;
1530
+ * });
1531
+ * // => { 'a': 3, 'b': 6 }
1532
+ *
1533
+ * var users = {
1534
+ * 'fred': { 'user': 'fred', 'age': 40 },
1334
1535
  * 'pebbles': { 'user': 'pebbles', 'age': 1 }
1335
1536
  * };
1336
1537
  *
@@ -1338,30 +1539,22 @@ return /******/ (function(modules) { // webpackBootstrap
1338
1539
  * _.mapValues(users, 'age');
1339
1540
  * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
1340
1541
  */
1341
- function mapValues(object, iteratee, thisArg) {
1342
- var result = {};
1343
- iteratee = baseCallback(iteratee, thisArg, 3);
1344
-
1345
- baseForOwn(object, function(value, key, object) {
1346
- result[key] = iteratee(value, key, object);
1347
- });
1348
- return result;
1349
- }
1542
+ var mapValues = createObjectMapper();
1350
1543
 
1351
1544
  module.exports = mapValues;
1352
1545
 
1353
1546
 
1354
1547
  /***/ },
1355
- /* 16 */
1548
+ /* 20 */
1356
1549
  /***/ function(module, exports, __webpack_require__) {
1357
1550
 
1358
- var baseForOwn = __webpack_require__(32),
1359
- createForOwn = __webpack_require__(33);
1551
+ var baseForOwn = __webpack_require__(46),
1552
+ createForOwn = __webpack_require__(47);
1360
1553
 
1361
1554
  /**
1362
1555
  * Iterates over own enumerable properties of an object invoking `iteratee`
1363
1556
  * for each property. The `iteratee` is bound to `thisArg` and invoked with
1364
- * three arguments: (value, key, object). Iterator functions may exit iteration
1557
+ * three arguments: (value, key, object). Iteratee functions may exit iteration
1365
1558
  * early by explicitly returning `false`.
1366
1559
  *
1367
1560
  * @static
@@ -1391,13 +1584,13 @@ return /******/ (function(modules) { // webpackBootstrap
1391
1584
 
1392
1585
 
1393
1586
  /***/ },
1394
- /* 17 */
1587
+ /* 21 */
1395
1588
  /***/ function(module, exports, __webpack_require__) {
1396
1589
 
1397
- var isLength = __webpack_require__(35),
1398
- isNative = __webpack_require__(30),
1590
+ var isArrayLike = __webpack_require__(44),
1591
+ isNative = __webpack_require__(38),
1399
1592
  isObject = __webpack_require__(25),
1400
- shimKeys = __webpack_require__(36);
1593
+ shimKeys = __webpack_require__(45);
1401
1594
 
1402
1595
  /* Native method references for those with the same name as other `lodash` methods. */
1403
1596
  var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
@@ -1412,7 +1605,7 @@ return /******/ (function(modules) { // webpackBootstrap
1412
1605
  * @static
1413
1606
  * @memberOf _
1414
1607
  * @category Object
1415
- * @param {Object} object The object to inspect.
1608
+ * @param {Object} object The object to query.
1416
1609
  * @returns {Array} Returns the array of property names.
1417
1610
  * @example
1418
1611
  *
@@ -1430,12 +1623,9 @@ return /******/ (function(modules) { // webpackBootstrap
1430
1623
  * // => ['0', '1']
1431
1624
  */
1432
1625
  var keys = !nativeKeys ? shimKeys : function(object) {
1433
- if (object) {
1434
- var Ctor = object.constructor,
1435
- length = object.length;
1436
- }
1626
+ var Ctor = object != null && object.constructor;
1437
1627
  if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
1438
- (typeof object != 'function' && (length && isLength(length)))) {
1628
+ (typeof object != 'function' && isArrayLike(object))) {
1439
1629
  return shimKeys(object);
1440
1630
  }
1441
1631
  return isObject(object) ? nativeKeys(object) : [];
@@ -1445,11 +1635,11 @@ return /******/ (function(modules) { // webpackBootstrap
1445
1635
 
1446
1636
 
1447
1637
  /***/ },
1448
- /* 18 */
1638
+ /* 22 */
1449
1639
  /***/ function(module, exports, __webpack_require__) {
1450
1640
 
1451
- var baseForOwn = __webpack_require__(32),
1452
- createFindKey = __webpack_require__(39);
1641
+ var baseForOwn = __webpack_require__(46),
1642
+ createFindKey = __webpack_require__(48);
1453
1643
 
1454
1644
  /**
1455
1645
  * This method is like `_.find` except that it returns the key of the first
@@ -1505,23 +1695,19 @@ return /******/ (function(modules) { // webpackBootstrap
1505
1695
 
1506
1696
 
1507
1697
  /***/ },
1508
- /* 19 */
1698
+ /* 23 */
1509
1699
  /***/ function(module, exports, __webpack_require__) {
1510
1700
 
1511
- var baseIndexOf = __webpack_require__(40),
1512
- cacheIndexOf = __webpack_require__(41),
1513
- createCache = __webpack_require__(42),
1514
- isArguments = __webpack_require__(43),
1515
- isArray = __webpack_require__(44);
1701
+ var baseIndexOf = __webpack_require__(49),
1702
+ cacheIndexOf = __webpack_require__(50),
1703
+ createCache = __webpack_require__(51),
1704
+ isArrayLike = __webpack_require__(44);
1516
1705
 
1517
1706
  /**
1518
- * Creates an array of unique values in all provided arrays using `SameValueZero`
1707
+ * Creates an array of unique values in all provided arrays using
1708
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1519
1709
  * for equality comparisons.
1520
1710
  *
1521
- * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1522
- * comparisons are like strict equality comparisons, e.g. `===`, except that
1523
- * `NaN` matches `NaN`.
1524
- *
1525
1711
  * @static
1526
1712
  * @memberOf _
1527
1713
  * @category Array
@@ -1537,20 +1723,23 @@ return /******/ (function(modules) { // webpackBootstrap
1537
1723
  argsLength = arguments.length,
1538
1724
  caches = [],
1539
1725
  indexOf = baseIndexOf,
1540
- isCommon = true;
1726
+ isCommon = true,
1727
+ result = [];
1541
1728
 
1542
1729
  while (++argsIndex < argsLength) {
1543
1730
  var value = arguments[argsIndex];
1544
- if (isArray(value) || isArguments(value)) {
1731
+ if (isArrayLike(value)) {
1545
1732
  args.push(value);
1546
1733
  caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null);
1547
1734
  }
1548
1735
  }
1549
1736
  argsLength = args.length;
1737
+ if (argsLength < 2) {
1738
+ return result;
1739
+ }
1550
1740
  var array = args[0],
1551
1741
  index = -1,
1552
1742
  length = array ? array.length : 0,
1553
- result = [],
1554
1743
  seen = caches[0];
1555
1744
 
1556
1745
  outer:
@@ -1577,21 +1766,23 @@ return /******/ (function(modules) { // webpackBootstrap
1577
1766
 
1578
1767
 
1579
1768
  /***/ },
1580
- /* 20 */
1769
+ /* 24 */
1581
1770
  /***/ function(module, exports, __webpack_require__) {
1582
1771
 
1583
1772
  var baseCallback = __webpack_require__(34),
1584
- baseUniq = __webpack_require__(37),
1585
- isIterateeCall = __webpack_require__(28),
1586
- sortedUniq = __webpack_require__(38);
1773
+ baseUniq = __webpack_require__(52),
1774
+ isIterateeCall = __webpack_require__(42),
1775
+ sortedUniq = __webpack_require__(53);
1587
1776
 
1588
1777
  /**
1589
- * Creates a duplicate-value-free version of an array using `SameValueZero`
1590
- * for equality comparisons. Providing `true` for `isSorted` performs a faster
1591
- * search algorithm for sorted arrays. If an iteratee function is provided it
1592
- * is invoked for each value in the array to generate the criterion by which
1593
- * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked
1594
- * with three arguments: (value, index, array).
1778
+ * Creates a duplicate-free version of an array, using
1779
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1780
+ * for equality comparisons, in which only the first occurence of each element
1781
+ * is kept. Providing `true` for `isSorted` performs a faster search algorithm
1782
+ * for sorted arrays. If an iteratee function is provided it is invoked for
1783
+ * each element in the array to generate the criterion by which uniqueness
1784
+ * is computed. The `iteratee` is bound to `thisArg` and invoked with three
1785
+ * arguments: (value, index, array).
1595
1786
  *
1596
1787
  * If a property name is provided for `iteratee` the created `_.property`
1597
1788
  * style callback returns the property value of the given element.
@@ -1604,10 +1795,6 @@ return /******/ (function(modules) { // webpackBootstrap
1604
1795
  * callback returns `true` for elements that have the properties of the given
1605
1796
  * object, else `false`.
1606
1797
  *
1607
- * **Note:** [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
1608
- * comparisons are like strict equality comparisons, e.g. `===`, except that
1609
- * `NaN` matches `NaN`.
1610
- *
1611
1798
  * @static
1612
1799
  * @memberOf _
1613
1800
  * @alias unique
@@ -1619,8 +1806,8 @@ return /******/ (function(modules) { // webpackBootstrap
1619
1806
  * @returns {Array} Returns the new duplicate-value-free array.
1620
1807
  * @example
1621
1808
  *
1622
- * _.uniq([1, 2, 1]);
1623
- * // => [1, 2]
1809
+ * _.uniq([2, 1, 2]);
1810
+ * // => [2, 1]
1624
1811
  *
1625
1812
  * // using `isSorted`
1626
1813
  * _.uniq([1, 1, 2], true);
@@ -1656,254 +1843,476 @@ return /******/ (function(modules) { // webpackBootstrap
1656
1843
 
1657
1844
 
1658
1845
  /***/ },
1659
- /* 21 */
1846
+ /* 25 */
1660
1847
  /***/ function(module, exports, __webpack_require__) {
1661
1848
 
1662
- var arrayMap = __webpack_require__(45),
1663
- baseCallback = __webpack_require__(34),
1664
- baseMap = __webpack_require__(46),
1665
- isArray = __webpack_require__(44);
1666
-
1667
1849
  /**
1668
- * Creates an array of values by running each element in `collection` through
1669
- * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
1670
- * arguments: (value, index|key, collection).
1671
- *
1672
- * If a property name is provided for `iteratee` the created `_.property`
1673
- * style callback returns the property value of the given element.
1674
- *
1675
- * If a value is also provided for `thisArg` the created `_.matchesProperty`
1676
- * style callback returns `true` for elements that have a matching property
1677
- * value, else `false`.
1678
- *
1679
- * If an object is provided for `iteratee` the created `_.matches` style
1680
- * callback returns `true` for elements that have the properties of the given
1681
- * object, else `false`.
1682
- *
1683
- * Many lodash methods are guarded to work as interatees for methods like
1684
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
1685
- *
1686
- * The guarded methods are:
1687
- * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`,
1688
- * `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`,
1689
- * `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`,
1690
- * `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, `uniq`, and `words`
1850
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1851
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
1691
1852
  *
1692
1853
  * @static
1693
1854
  * @memberOf _
1694
- * @alias collect
1695
- * @category Collection
1696
- * @param {Array|Object|string} collection The collection to iterate over.
1697
- * @param {Function|Object|string} [iteratee=_.identity] The function invoked
1698
- * per iteration.
1699
- * create a `_.property` or `_.matches` style callback respectively.
1700
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1701
- * @returns {Array} Returns the new mapped array.
1855
+ * @category Lang
1856
+ * @param {*} value The value to check.
1857
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1702
1858
  * @example
1703
1859
  *
1704
- * function timesThree(n) {
1705
- * return n * 3;
1706
- * }
1707
- *
1708
- * _.map([1, 2], timesThree);
1709
- * // => [3, 6]
1710
- *
1711
- * _.map({ 'a': 1, 'b': 2 }, timesThree);
1712
- * // => [3, 6] (iteration order is not guaranteed)
1860
+ * _.isObject({});
1861
+ * // => true
1713
1862
  *
1714
- * var users = [
1715
- * { 'user': 'barney' },
1716
- * { 'user': 'fred' }
1717
- * ];
1863
+ * _.isObject([1, 2, 3]);
1864
+ * // => true
1718
1865
  *
1719
- * // using the `_.property` callback shorthand
1720
- * _.map(users, 'user');
1721
- * // => ['barney', 'fred']
1866
+ * _.isObject(1);
1867
+ * // => false
1722
1868
  */
1723
- function map(collection, iteratee, thisArg) {
1724
- var func = isArray(collection) ? arrayMap : baseMap;
1725
- iteratee = baseCallback(iteratee, thisArg, 3);
1726
- return func(collection, iteratee);
1869
+ function isObject(value) {
1870
+ // Avoid a V8 JIT bug in Chrome 19-20.
1871
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1872
+ var type = typeof value;
1873
+ return type == 'function' || (!!value && type == 'object');
1727
1874
  }
1728
1875
 
1729
- module.exports = map;
1876
+ module.exports = isObject;
1730
1877
 
1731
1878
 
1732
1879
  /***/ },
1733
- /* 22 */
1880
+ /* 26 */
1734
1881
  /***/ function(module, exports, __webpack_require__) {
1735
1882
 
1736
- var arrayEach = __webpack_require__(47),
1737
- baseEach = __webpack_require__(48),
1738
- createForEach = __webpack_require__(49);
1739
-
1740
1883
  /**
1741
- * Iterates over elements of `collection` invoking `iteratee` for each element.
1742
- * The `iteratee` is bound to `thisArg` and invoked with three arguments:
1743
- * (value, index|key, collection). Iterator functions may exit iteration early
1744
- * by explicitly returning `false`.
1745
- *
1746
- * **Note:** As with other "Collections" methods, objects with a `length` property
1747
- * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
1748
- * may be used for object iteration.
1749
- *
1750
- * @static
1751
- * @memberOf _
1752
- * @alias each
1753
- * @category Collection
1754
- * @param {Array|Object|string} collection The collection to iterate over.
1755
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1756
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1757
- * @returns {Array|Object|string} Returns `collection`.
1758
- * @example
1759
- *
1760
- * _([1, 2]).forEach(function(n) {
1761
- * console.log(n);
1762
- * }).value();
1763
- * // => logs each value from left to right and returns the array
1884
+ * A specialized version of `_.forEach` for arrays without support for callback
1885
+ * shorthands and `this` binding.
1764
1886
  *
1765
- * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
1766
- * console.log(n, key);
1767
- * });
1768
- * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
1887
+ * @private
1888
+ * @param {Array} array The array to iterate over.
1889
+ * @param {Function} iteratee The function invoked per iteration.
1890
+ * @returns {Array} Returns `array`.
1769
1891
  */
1770
- var forEach = createForEach(arrayEach, baseEach);
1892
+ function arrayEach(array, iteratee) {
1893
+ var index = -1,
1894
+ length = array.length;
1771
1895
 
1772
- module.exports = forEach;
1896
+ while (++index < length) {
1897
+ if (iteratee(array[index], index, array) === false) {
1898
+ break;
1899
+ }
1900
+ }
1901
+ return array;
1902
+ }
1903
+
1904
+ module.exports = arrayEach;
1773
1905
 
1774
1906
 
1775
1907
  /***/ },
1776
- /* 23 */
1908
+ /* 27 */
1777
1909
  /***/ function(module, exports, __webpack_require__) {
1778
1910
 
1779
- var isLength = __webpack_require__(35),
1780
- keys = __webpack_require__(17);
1911
+ var baseForOwn = __webpack_require__(46),
1912
+ createBaseEach = __webpack_require__(54);
1781
1913
 
1782
1914
  /**
1783
- * Gets the size of `collection` by returning its length for array-like
1784
- * values or the number of own enumerable properties for objects.
1785
- *
1786
- * @static
1787
- * @memberOf _
1788
- * @category Collection
1789
- * @param {Array|Object|string} collection The collection to inspect.
1790
- * @returns {number} Returns the size of `collection`.
1791
- * @example
1792
- *
1793
- * _.size([1, 2, 3]);
1794
- * // => 3
1795
- *
1796
- * _.size({ 'a': 1, 'b': 2 });
1797
- * // => 2
1915
+ * The base implementation of `_.forEach` without support for callback
1916
+ * shorthands and `this` binding.
1798
1917
  *
1799
- * _.size('pebbles');
1800
- * // => 7
1918
+ * @private
1919
+ * @param {Array|Object|string} collection The collection to iterate over.
1920
+ * @param {Function} iteratee The function invoked per iteration.
1921
+ * @returns {Array|Object|string} Returns `collection`.
1801
1922
  */
1802
- function size(collection) {
1803
- var length = collection ? collection.length : 0;
1804
- return isLength(length) ? length : keys(collection).length;
1805
- }
1923
+ var baseEach = createBaseEach(baseForOwn);
1806
1924
 
1807
- module.exports = size;
1925
+ module.exports = baseEach;
1808
1926
 
1809
1927
 
1810
1928
  /***/ },
1811
- /* 24 */
1929
+ /* 28 */
1812
1930
  /***/ function(module, exports, __webpack_require__) {
1813
1931
 
1814
- var arrayReduce = __webpack_require__(50),
1815
- baseEach = __webpack_require__(48),
1816
- createReduce = __webpack_require__(51);
1932
+ var bindCallback = __webpack_require__(41),
1933
+ isArray = __webpack_require__(36);
1817
1934
 
1818
1935
  /**
1819
- * Reduces `collection` to a value which is the accumulated result of running
1820
- * each element in `collection` through `iteratee`, where each successive
1821
- * invocation is supplied the return value of the previous. If `accumulator`
1822
- * is not provided the first element of `collection` is used as the initial
1823
- * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
1824
- * (accumulator, value, index|key, collection).
1936
+ * Creates a function for `_.forEach` or `_.forEachRight`.
1825
1937
  *
1826
- * Many lodash methods are guarded to work as interatees for methods like
1827
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
1938
+ * @private
1939
+ * @param {Function} arrayFunc The function to iterate over an array.
1940
+ * @param {Function} eachFunc The function to iterate over a collection.
1941
+ * @returns {Function} Returns the new each function.
1942
+ */
1943
+ function createForEach(arrayFunc, eachFunc) {
1944
+ return function(collection, iteratee, thisArg) {
1945
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
1946
+ ? arrayFunc(collection, iteratee)
1947
+ : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
1948
+ };
1949
+ }
1950
+
1951
+ module.exports = createForEach;
1952
+
1953
+
1954
+ /***/ },
1955
+ /* 29 */
1956
+ /***/ function(module, exports, __webpack_require__) {
1957
+
1958
+ /**
1959
+ * A specialized version of `_.reduce` for arrays without support for callback
1960
+ * shorthands and `this` binding.
1828
1961
  *
1829
- * The guarded methods are:
1830
- * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
1962
+ * @private
1963
+ * @param {Array} array The array to iterate over.
1964
+ * @param {Function} iteratee The function invoked per iteration.
1965
+ * @param {*} [accumulator] The initial value.
1966
+ * @param {boolean} [initFromArray] Specify using the first element of `array`
1967
+ * as the initial value.
1968
+ * @returns {*} Returns the accumulated value.
1969
+ */
1970
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
1971
+ var index = -1,
1972
+ length = array.length;
1973
+
1974
+ if (initFromArray && length) {
1975
+ accumulator = array[++index];
1976
+ }
1977
+ while (++index < length) {
1978
+ accumulator = iteratee(accumulator, array[index], index, array);
1979
+ }
1980
+ return accumulator;
1981
+ }
1982
+
1983
+ module.exports = arrayReduce;
1984
+
1985
+
1986
+ /***/ },
1987
+ /* 30 */
1988
+ /***/ function(module, exports, __webpack_require__) {
1989
+
1990
+ var baseCallback = __webpack_require__(34),
1991
+ baseReduce = __webpack_require__(55),
1992
+ isArray = __webpack_require__(36);
1993
+
1994
+ /**
1995
+ * Creates a function for `_.reduce` or `_.reduceRight`.
1996
+ *
1997
+ * @private
1998
+ * @param {Function} arrayFunc The function to iterate over an array.
1999
+ * @param {Function} eachFunc The function to iterate over a collection.
2000
+ * @returns {Function} Returns the new each function.
2001
+ */
2002
+ function createReduce(arrayFunc, eachFunc) {
2003
+ return function(collection, iteratee, accumulator, thisArg) {
2004
+ var initFromArray = arguments.length < 3;
2005
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
2006
+ ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2007
+ : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2008
+ };
2009
+ }
2010
+
2011
+ module.exports = createReduce;
2012
+
2013
+
2014
+ /***/ },
2015
+ /* 31 */
2016
+ /***/ function(module, exports, __webpack_require__) {
2017
+
2018
+ var baseProperty = __webpack_require__(56);
2019
+
2020
+ /**
2021
+ * Gets the "length" property value of `object`.
2022
+ *
2023
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
2024
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
2025
+ *
2026
+ * @private
2027
+ * @param {Object} object The object to query.
2028
+ * @returns {*} Returns the "length" value.
2029
+ */
2030
+ var getLength = baseProperty('length');
2031
+
2032
+ module.exports = getLength;
2033
+
2034
+
2035
+ /***/ },
2036
+ /* 32 */
2037
+ /***/ function(module, exports, __webpack_require__) {
2038
+
2039
+ /**
2040
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2041
+ * of an array-like value.
2042
+ */
2043
+ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2044
+
2045
+ /**
2046
+ * Checks if `value` is a valid array-like length.
2047
+ *
2048
+ * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
2049
+ *
2050
+ * @private
2051
+ * @param {*} value The value to check.
2052
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2053
+ */
2054
+ function isLength(value) {
2055
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2056
+ }
2057
+
2058
+ module.exports = isLength;
2059
+
2060
+
2061
+ /***/ },
2062
+ /* 33 */
2063
+ /***/ function(module, exports, __webpack_require__) {
2064
+
2065
+ /**
2066
+ * A specialized version of `_.map` for arrays without support for callback
2067
+ * shorthands and `this` binding.
2068
+ *
2069
+ * @private
2070
+ * @param {Array} array The array to iterate over.
2071
+ * @param {Function} iteratee The function invoked per iteration.
2072
+ * @returns {Array} Returns the new mapped array.
2073
+ */
2074
+ function arrayMap(array, iteratee) {
2075
+ var index = -1,
2076
+ length = array.length,
2077
+ result = Array(length);
2078
+
2079
+ while (++index < length) {
2080
+ result[index] = iteratee(array[index], index, array);
2081
+ }
2082
+ return result;
2083
+ }
2084
+
2085
+ module.exports = arrayMap;
2086
+
2087
+
2088
+ /***/ },
2089
+ /* 34 */
2090
+ /***/ function(module, exports, __webpack_require__) {
2091
+
2092
+ var baseMatches = __webpack_require__(57),
2093
+ baseMatchesProperty = __webpack_require__(58),
2094
+ bindCallback = __webpack_require__(41),
2095
+ identity = __webpack_require__(59),
2096
+ property = __webpack_require__(60);
2097
+
2098
+ /**
2099
+ * The base implementation of `_.callback` which supports specifying the
2100
+ * number of arguments to provide to `func`.
2101
+ *
2102
+ * @private
2103
+ * @param {*} [func=_.identity] The value to convert to a callback.
2104
+ * @param {*} [thisArg] The `this` binding of `func`.
2105
+ * @param {number} [argCount] The number of arguments to provide to `func`.
2106
+ * @returns {Function} Returns the callback.
2107
+ */
2108
+ function baseCallback(func, thisArg, argCount) {
2109
+ var type = typeof func;
2110
+ if (type == 'function') {
2111
+ return thisArg === undefined
2112
+ ? func
2113
+ : bindCallback(func, thisArg, argCount);
2114
+ }
2115
+ if (func == null) {
2116
+ return identity;
2117
+ }
2118
+ if (type == 'object') {
2119
+ return baseMatches(func);
2120
+ }
2121
+ return thisArg === undefined
2122
+ ? property(func)
2123
+ : baseMatchesProperty(func, thisArg);
2124
+ }
2125
+
2126
+ module.exports = baseCallback;
2127
+
2128
+
2129
+ /***/ },
2130
+ /* 35 */
2131
+ /***/ function(module, exports, __webpack_require__) {
2132
+
2133
+ var baseEach = __webpack_require__(27),
2134
+ isArrayLike = __webpack_require__(44);
2135
+
2136
+ /**
2137
+ * The base implementation of `_.map` without support for callback shorthands
2138
+ * and `this` binding.
2139
+ *
2140
+ * @private
2141
+ * @param {Array|Object|string} collection The collection to iterate over.
2142
+ * @param {Function} iteratee The function invoked per iteration.
2143
+ * @returns {Array} Returns the new mapped array.
2144
+ */
2145
+ function baseMap(collection, iteratee) {
2146
+ var index = -1,
2147
+ result = isArrayLike(collection) ? Array(collection.length) : [];
2148
+
2149
+ baseEach(collection, function(value, key, collection) {
2150
+ result[++index] = iteratee(value, key, collection);
2151
+ });
2152
+ return result;
2153
+ }
2154
+
2155
+ module.exports = baseMap;
2156
+
2157
+
2158
+ /***/ },
2159
+ /* 36 */
2160
+ /***/ function(module, exports, __webpack_require__) {
2161
+
2162
+ var isLength = __webpack_require__(32),
2163
+ isNative = __webpack_require__(38),
2164
+ isObjectLike = __webpack_require__(39);
2165
+
2166
+ /** `Object#toString` result references. */
2167
+ var arrayTag = '[object Array]';
2168
+
2169
+ /** Used for native method references. */
2170
+ var objectProto = Object.prototype;
2171
+
2172
+ /**
2173
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2174
+ * of values.
2175
+ */
2176
+ var objToString = objectProto.toString;
2177
+
2178
+ /* Native method references for those with the same name as other `lodash` methods. */
2179
+ var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
2180
+
2181
+ /**
2182
+ * Checks if `value` is classified as an `Array` object.
1831
2183
  *
1832
2184
  * @static
1833
2185
  * @memberOf _
1834
- * @alias foldl, inject
1835
- * @category Collection
1836
- * @param {Array|Object|string} collection The collection to iterate over.
1837
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
1838
- * @param {*} [accumulator] The initial value.
1839
- * @param {*} [thisArg] The `this` binding of `iteratee`.
1840
- * @returns {*} Returns the accumulated value.
2186
+ * @category Lang
2187
+ * @param {*} value The value to check.
2188
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
1841
2189
  * @example
1842
2190
  *
1843
- * _.reduce([1, 2], function(sum, n) {
1844
- * return sum + n;
1845
- * });
1846
- * // => 3
2191
+ * _.isArray([1, 2, 3]);
2192
+ * // => true
1847
2193
  *
1848
- * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
1849
- * result[key] = n * 3;
1850
- * return result;
1851
- * }, {});
1852
- * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
2194
+ * _.isArray(function() { return arguments; }());
2195
+ * // => false
1853
2196
  */
1854
- var reduce = createReduce(arrayReduce, baseEach);
2197
+ var isArray = nativeIsArray || function(value) {
2198
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2199
+ };
1855
2200
 
1856
- module.exports = reduce;
2201
+ module.exports = isArray;
1857
2202
 
1858
2203
 
1859
2204
  /***/ },
1860
- /* 25 */
2205
+ /* 37 */
2206
+ /***/ function(module, exports, __webpack_require__) {
2207
+
2208
+ /**
2209
+ * The base implementation of `_.isFunction` without support for environments
2210
+ * with incorrect `typeof` results.
2211
+ *
2212
+ * @private
2213
+ * @param {*} value The value to check.
2214
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2215
+ */
2216
+ function baseIsFunction(value) {
2217
+ // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2218
+ // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2219
+ return typeof value == 'function' || false;
2220
+ }
2221
+
2222
+ module.exports = baseIsFunction;
2223
+
2224
+
2225
+ /***/ },
2226
+ /* 38 */
1861
2227
  /***/ function(module, exports, __webpack_require__) {
1862
2228
 
2229
+ var escapeRegExp = __webpack_require__(61),
2230
+ isObjectLike = __webpack_require__(39);
2231
+
2232
+ /** `Object#toString` result references. */
2233
+ var funcTag = '[object Function]';
2234
+
2235
+ /** Used to detect host constructors (Safari > 5). */
2236
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
2237
+
2238
+ /** Used for native method references. */
2239
+ var objectProto = Object.prototype;
2240
+
2241
+ /** Used to resolve the decompiled source of functions. */
2242
+ var fnToString = Function.prototype.toString;
2243
+
2244
+ /**
2245
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2246
+ * of values.
2247
+ */
2248
+ var objToString = objectProto.toString;
2249
+
2250
+ /** Used to detect if a method is native. */
2251
+ var reIsNative = RegExp('^' +
2252
+ escapeRegExp(objToString)
2253
+ .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2254
+ );
2255
+
1863
2256
  /**
1864
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
1865
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
2257
+ * Checks if `value` is a native function.
1866
2258
  *
1867
2259
  * @static
1868
2260
  * @memberOf _
1869
2261
  * @category Lang
1870
2262
  * @param {*} value The value to check.
1871
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
2263
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1872
2264
  * @example
1873
2265
  *
1874
- * _.isObject({});
1875
- * // => true
1876
- *
1877
- * _.isObject([1, 2, 3]);
2266
+ * _.isNative(Array.prototype.push);
1878
2267
  * // => true
1879
2268
  *
1880
- * _.isObject(1);
2269
+ * _.isNative(_);
1881
2270
  * // => false
1882
2271
  */
1883
- function isObject(value) {
1884
- // Avoid a V8 JIT bug in Chrome 19-20.
1885
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
1886
- var type = typeof value;
1887
- return type == 'function' || (!!value && type == 'object');
2272
+ function isNative(value) {
2273
+ if (value == null) {
2274
+ return false;
2275
+ }
2276
+ if (objToString.call(value) == funcTag) {
2277
+ return reIsNative.test(fnToString.call(value));
2278
+ }
2279
+ return isObjectLike(value) && reIsHostCtor.test(value);
1888
2280
  }
1889
2281
 
1890
- module.exports = isObject;
2282
+ module.exports = isNative;
1891
2283
 
1892
2284
 
1893
2285
  /***/ },
1894
- /* 26 */
2286
+ /* 39 */
1895
2287
  /***/ function(module, exports, __webpack_require__) {
1896
2288
 
1897
- var arrayCopy = __webpack_require__(52),
1898
- arrayEach = __webpack_require__(47),
1899
- baseCopy = __webpack_require__(53),
1900
- baseForOwn = __webpack_require__(32),
1901
- initCloneArray = __webpack_require__(54),
1902
- initCloneByTag = __webpack_require__(55),
1903
- initCloneObject = __webpack_require__(56),
1904
- isArray = __webpack_require__(44),
1905
- isObject = __webpack_require__(25),
1906
- keys = __webpack_require__(17);
2289
+ /**
2290
+ * Checks if `value` is object-like.
2291
+ *
2292
+ * @private
2293
+ * @param {*} value The value to check.
2294
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2295
+ */
2296
+ function isObjectLike(value) {
2297
+ return !!value && typeof value == 'object';
2298
+ }
2299
+
2300
+ module.exports = isObjectLike;
2301
+
2302
+
2303
+ /***/ },
2304
+ /* 40 */
2305
+ /***/ function(module, exports, __webpack_require__) {
2306
+
2307
+ var arrayCopy = __webpack_require__(62),
2308
+ arrayEach = __webpack_require__(26),
2309
+ baseAssign = __webpack_require__(63),
2310
+ baseForOwn = __webpack_require__(46),
2311
+ initCloneArray = __webpack_require__(64),
2312
+ initCloneByTag = __webpack_require__(65),
2313
+ initCloneObject = __webpack_require__(66),
2314
+ isArray = __webpack_require__(36),
2315
+ isObject = __webpack_require__(25);
1907
2316
 
1908
2317
  /** `Object#toString` result references. */
1909
2318
  var argsTag = '[object Arguments]',
@@ -1974,7 +2383,7 @@ return /******/ (function(modules) { // webpackBootstrap
1974
2383
  if (customizer) {
1975
2384
  result = object ? customizer(value, key, object) : customizer(value);
1976
2385
  }
1977
- if (typeof result != 'undefined') {
2386
+ if (result !== undefined) {
1978
2387
  return result;
1979
2388
  }
1980
2389
  if (!isObject(value)) {
@@ -1993,7 +2402,7 @@ return /******/ (function(modules) { // webpackBootstrap
1993
2402
  if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
1994
2403
  result = initCloneObject(isFunc ? {} : value);
1995
2404
  if (!isDeep) {
1996
- return baseCopy(value, result, keys(value));
2405
+ return baseAssign(result, value);
1997
2406
  }
1998
2407
  } else {
1999
2408
  return cloneableTags[tag]
@@ -2026,10 +2435,10 @@ return /******/ (function(modules) { // webpackBootstrap
2026
2435
 
2027
2436
 
2028
2437
  /***/ },
2029
- /* 27 */
2438
+ /* 41 */
2030
2439
  /***/ function(module, exports, __webpack_require__) {
2031
2440
 
2032
- var identity = __webpack_require__(57);
2441
+ var identity = __webpack_require__(59);
2033
2442
 
2034
2443
  /**
2035
2444
  * A specialized version of `baseCallback` which only supports `this` binding
@@ -2045,7 +2454,7 @@ return /******/ (function(modules) { // webpackBootstrap
2045
2454
  if (typeof func != 'function') {
2046
2455
  return identity;
2047
2456
  }
2048
- if (typeof thisArg == 'undefined') {
2457
+ if (thisArg === undefined) {
2049
2458
  return func;
2050
2459
  }
2051
2460
  switch (argCount) {
@@ -2071,11 +2480,11 @@ return /******/ (function(modules) { // webpackBootstrap
2071
2480
 
2072
2481
 
2073
2482
  /***/ },
2074
- /* 28 */
2483
+ /* 42 */
2075
2484
  /***/ function(module, exports, __webpack_require__) {
2076
2485
 
2077
- var isIndex = __webpack_require__(58),
2078
- isLength = __webpack_require__(35),
2486
+ var isArrayLike = __webpack_require__(44),
2487
+ isIndex = __webpack_require__(67),
2079
2488
  isObject = __webpack_require__(25);
2080
2489
 
2081
2490
  /**
@@ -2092,13 +2501,9 @@ return /******/ (function(modules) { // webpackBootstrap
2092
2501
  return false;
2093
2502
  }
2094
2503
  var type = typeof index;
2095
- if (type == 'number') {
2096
- var length = object.length,
2097
- prereq = isLength(length) && isIndex(index, length);
2098
- } else {
2099
- prereq = type == 'string' && index in object;
2100
- }
2101
- if (prereq) {
2504
+ if (type == 'number'
2505
+ ? (isArrayLike(object) && isIndex(index, object.length))
2506
+ : (type == 'string' && index in object)) {
2102
2507
  var other = object[index];
2103
2508
  return value === value ? (value === other) : (other !== other);
2104
2509
  }
@@ -2109,110 +2514,112 @@ return /******/ (function(modules) { // webpackBootstrap
2109
2514
 
2110
2515
 
2111
2516
  /***/ },
2112
- /* 29 */
2517
+ /* 43 */
2113
2518
  /***/ function(module, exports, __webpack_require__) {
2114
2519
 
2520
+ var baseCallback = __webpack_require__(34),
2521
+ baseForOwn = __webpack_require__(46);
2522
+
2115
2523
  /**
2116
- * The base implementation of `_.isFunction` without support for environments
2117
- * with incorrect `typeof` results.
2524
+ * Creates a function for `_.mapKeys` or `_.mapValues`.
2118
2525
  *
2119
2526
  * @private
2120
- * @param {*} value The value to check.
2121
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
2527
+ * @param {boolean} [isMapKeys] Specify mapping keys instead of values.
2528
+ * @returns {Function} Returns the new map function.
2122
2529
  */
2123
- function baseIsFunction(value) {
2124
- // Avoid a Chakra JIT bug in compatibility modes of IE 11.
2125
- // See https://github.com/jashkenas/underscore/issues/1621 for more details.
2126
- return typeof value == 'function' || false;
2530
+ function createObjectMapper(isMapKeys) {
2531
+ return function(object, iteratee, thisArg) {
2532
+ var result = {};
2533
+ iteratee = baseCallback(iteratee, thisArg, 3);
2534
+
2535
+ baseForOwn(object, function(value, key, object) {
2536
+ var mapped = iteratee(value, key, object);
2537
+ key = isMapKeys ? mapped : key;
2538
+ value = isMapKeys ? value : mapped;
2539
+ result[key] = value;
2540
+ });
2541
+ return result;
2542
+ };
2127
2543
  }
2128
2544
 
2129
- module.exports = baseIsFunction;
2545
+ module.exports = createObjectMapper;
2130
2546
 
2131
2547
 
2132
2548
  /***/ },
2133
- /* 30 */
2549
+ /* 44 */
2134
2550
  /***/ function(module, exports, __webpack_require__) {
2135
2551
 
2136
- var escapeRegExp = __webpack_require__(59),
2137
- isObjectLike = __webpack_require__(31);
2138
-
2139
- /** `Object#toString` result references. */
2140
- var funcTag = '[object Function]';
2141
-
2142
- /** Used to detect host constructors (Safari > 5). */
2143
- var reHostCtor = /^\[object .+?Constructor\]$/;
2144
-
2145
- /** Used for native method references. */
2146
- var objectProto = Object.prototype;
2147
-
2148
- /** Used to resolve the decompiled source of functions. */
2149
- var fnToString = Function.prototype.toString;
2150
-
2151
- /**
2152
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2153
- * of values.
2154
- */
2155
- var objToString = objectProto.toString;
2156
-
2157
- /** Used to detect if a method is native. */
2158
- var reNative = RegExp('^' +
2159
- escapeRegExp(objToString)
2160
- .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
2161
- );
2552
+ var getLength = __webpack_require__(31),
2553
+ isLength = __webpack_require__(32);
2162
2554
 
2163
2555
  /**
2164
- * Checks if `value` is a native function.
2556
+ * Checks if `value` is array-like.
2165
2557
  *
2166
- * @static
2167
- * @memberOf _
2168
- * @category Lang
2558
+ * @private
2169
2559
  * @param {*} value The value to check.
2170
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
2171
- * @example
2172
- *
2173
- * _.isNative(Array.prototype.push);
2174
- * // => true
2175
- *
2176
- * _.isNative(_);
2177
- * // => false
2560
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
2178
2561
  */
2179
- function isNative(value) {
2180
- if (value == null) {
2181
- return false;
2182
- }
2183
- if (objToString.call(value) == funcTag) {
2184
- return reNative.test(fnToString.call(value));
2185
- }
2186
- return isObjectLike(value) && reHostCtor.test(value);
2562
+ function isArrayLike(value) {
2563
+ return value != null && isLength(getLength(value));
2187
2564
  }
2188
2565
 
2189
- module.exports = isNative;
2566
+ module.exports = isArrayLike;
2190
2567
 
2191
2568
 
2192
2569
  /***/ },
2193
- /* 31 */
2570
+ /* 45 */
2194
2571
  /***/ function(module, exports, __webpack_require__) {
2195
2572
 
2573
+ var isArguments = __webpack_require__(68),
2574
+ isArray = __webpack_require__(36),
2575
+ isIndex = __webpack_require__(67),
2576
+ isLength = __webpack_require__(32),
2577
+ keysIn = __webpack_require__(69),
2578
+ support = __webpack_require__(70);
2579
+
2580
+ /** Used for native method references. */
2581
+ var objectProto = Object.prototype;
2582
+
2583
+ /** Used to check objects for own properties. */
2584
+ var hasOwnProperty = objectProto.hasOwnProperty;
2585
+
2196
2586
  /**
2197
- * Checks if `value` is object-like.
2587
+ * A fallback implementation of `Object.keys` which creates an array of the
2588
+ * own enumerable property names of `object`.
2198
2589
  *
2199
2590
  * @private
2200
- * @param {*} value The value to check.
2201
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
2591
+ * @param {Object} object The object to query.
2592
+ * @returns {Array} Returns the array of property names.
2202
2593
  */
2203
- function isObjectLike(value) {
2204
- return !!value && typeof value == 'object';
2594
+ function shimKeys(object) {
2595
+ var props = keysIn(object),
2596
+ propsLength = props.length,
2597
+ length = propsLength && object.length;
2598
+
2599
+ var allowIndexes = length && isLength(length) &&
2600
+ (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2601
+
2602
+ var index = -1,
2603
+ result = [];
2604
+
2605
+ while (++index < propsLength) {
2606
+ var key = props[index];
2607
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2608
+ result.push(key);
2609
+ }
2610
+ }
2611
+ return result;
2205
2612
  }
2206
2613
 
2207
- module.exports = isObjectLike;
2614
+ module.exports = shimKeys;
2208
2615
 
2209
2616
 
2210
2617
  /***/ },
2211
- /* 32 */
2618
+ /* 46 */
2212
2619
  /***/ function(module, exports, __webpack_require__) {
2213
2620
 
2214
- var baseFor = __webpack_require__(60),
2215
- keys = __webpack_require__(17);
2621
+ var baseFor = __webpack_require__(71),
2622
+ keys = __webpack_require__(21);
2216
2623
 
2217
2624
  /**
2218
2625
  * The base implementation of `_.forOwn` without support for callback
@@ -2231,10 +2638,10 @@ return /******/ (function(modules) { // webpackBootstrap
2231
2638
 
2232
2639
 
2233
2640
  /***/ },
2234
- /* 33 */
2641
+ /* 47 */
2235
2642
  /***/ function(module, exports, __webpack_require__) {
2236
2643
 
2237
- var bindCallback = __webpack_require__(27);
2644
+ var bindCallback = __webpack_require__(41);
2238
2645
 
2239
2646
  /**
2240
2647
  * Creates a function for `_.forOwn` or `_.forOwnRight`.
@@ -2245,7 +2652,7 @@ return /******/ (function(modules) { // webpackBootstrap
2245
2652
  */
2246
2653
  function createForOwn(objectFunc) {
2247
2654
  return function(object, iteratee, thisArg) {
2248
- if (typeof iteratee != 'function' || typeof thisArg != 'undefined') {
2655
+ if (typeof iteratee != 'function' || thisArg !== undefined) {
2249
2656
  iteratee = bindCallback(iteratee, thisArg, 3);
2250
2657
  }
2251
2658
  return objectFunc(object, iteratee);
@@ -2256,127 +2663,123 @@ return /******/ (function(modules) { // webpackBootstrap
2256
2663
 
2257
2664
 
2258
2665
  /***/ },
2259
- /* 34 */
2666
+ /* 48 */
2260
2667
  /***/ function(module, exports, __webpack_require__) {
2261
2668
 
2262
- var baseMatches = __webpack_require__(61),
2263
- baseMatchesProperty = __webpack_require__(62),
2264
- baseProperty = __webpack_require__(63),
2265
- bindCallback = __webpack_require__(27),
2266
- identity = __webpack_require__(57);
2669
+ var baseCallback = __webpack_require__(34),
2670
+ baseFind = __webpack_require__(72);
2267
2671
 
2268
2672
  /**
2269
- * The base implementation of `_.callback` which supports specifying the
2270
- * number of arguments to provide to `func`.
2673
+ * Creates a `_.findKey` or `_.findLastKey` function.
2271
2674
  *
2272
2675
  * @private
2273
- * @param {*} [func=_.identity] The value to convert to a callback.
2274
- * @param {*} [thisArg] The `this` binding of `func`.
2275
- * @param {number} [argCount] The number of arguments to provide to `func`.
2276
- * @returns {Function} Returns the callback.
2676
+ * @param {Function} objectFunc The function to iterate over an object.
2677
+ * @returns {Function} Returns the new find function.
2277
2678
  */
2278
- function baseCallback(func, thisArg, argCount) {
2279
- var type = typeof func;
2280
- if (type == 'function') {
2281
- return typeof thisArg == 'undefined'
2282
- ? func
2283
- : bindCallback(func, thisArg, argCount);
2284
- }
2285
- if (func == null) {
2286
- return identity;
2287
- }
2288
- if (type == 'object') {
2289
- return baseMatches(func);
2290
- }
2291
- return typeof thisArg == 'undefined'
2292
- ? baseProperty(func + '')
2293
- : baseMatchesProperty(func + '', thisArg);
2679
+ function createFindKey(objectFunc) {
2680
+ return function(object, predicate, thisArg) {
2681
+ predicate = baseCallback(predicate, thisArg, 3);
2682
+ return baseFind(object, predicate, objectFunc, true);
2683
+ };
2294
2684
  }
2295
2685
 
2296
- module.exports = baseCallback;
2686
+ module.exports = createFindKey;
2297
2687
 
2298
2688
 
2299
2689
  /***/ },
2300
- /* 35 */
2690
+ /* 49 */
2301
2691
  /***/ function(module, exports, __webpack_require__) {
2302
2692
 
2693
+ var indexOfNaN = __webpack_require__(73);
2694
+
2303
2695
  /**
2304
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
2305
- * of an array-like value.
2696
+ * The base implementation of `_.indexOf` without support for binary searches.
2697
+ *
2698
+ * @private
2699
+ * @param {Array} array The array to search.
2700
+ * @param {*} value The value to search for.
2701
+ * @param {number} fromIndex The index to search from.
2702
+ * @returns {number} Returns the index of the matched value, else `-1`.
2306
2703
  */
2307
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2704
+ function baseIndexOf(array, value, fromIndex) {
2705
+ if (value !== value) {
2706
+ return indexOfNaN(array, fromIndex);
2707
+ }
2708
+ var index = fromIndex - 1,
2709
+ length = array.length;
2710
+
2711
+ while (++index < length) {
2712
+ if (array[index] === value) {
2713
+ return index;
2714
+ }
2715
+ }
2716
+ return -1;
2717
+ }
2718
+
2719
+ module.exports = baseIndexOf;
2720
+
2721
+
2722
+ /***/ },
2723
+ /* 50 */
2724
+ /***/ function(module, exports, __webpack_require__) {
2725
+
2726
+ var isObject = __webpack_require__(25);
2308
2727
 
2309
2728
  /**
2310
- * Checks if `value` is a valid array-like length.
2311
- *
2312
- * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
2729
+ * Checks if `value` is in `cache` mimicking the return signature of
2730
+ * `_.indexOf` by returning `0` if the value is found, else `-1`.
2313
2731
  *
2314
2732
  * @private
2315
- * @param {*} value The value to check.
2316
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2733
+ * @param {Object} cache The cache to search.
2734
+ * @param {*} value The value to search for.
2735
+ * @returns {number} Returns `0` if `value` is found, else `-1`.
2317
2736
  */
2318
- function isLength(value) {
2319
- return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2737
+ function cacheIndexOf(cache, value) {
2738
+ var data = cache.data,
2739
+ result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
2740
+
2741
+ return result ? 0 : -1;
2320
2742
  }
2321
2743
 
2322
- module.exports = isLength;
2744
+ module.exports = cacheIndexOf;
2323
2745
 
2324
2746
 
2325
2747
  /***/ },
2326
- /* 36 */
2748
+ /* 51 */
2327
2749
  /***/ function(module, exports, __webpack_require__) {
2328
2750
 
2329
- var isArguments = __webpack_require__(43),
2330
- isArray = __webpack_require__(44),
2331
- isIndex = __webpack_require__(58),
2332
- isLength = __webpack_require__(35),
2333
- keysIn = __webpack_require__(64),
2334
- support = __webpack_require__(65);
2335
-
2336
- /** Used for native method references. */
2337
- var objectProto = Object.prototype;
2751
+ /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(74),
2752
+ constant = __webpack_require__(75),
2753
+ isNative = __webpack_require__(38);
2338
2754
 
2339
- /** Used to check objects for own properties. */
2340
- var hasOwnProperty = objectProto.hasOwnProperty;
2755
+ /** Native method references. */
2756
+ var Set = isNative(Set = global.Set) && Set;
2757
+
2758
+ /* Native method references for those with the same name as other `lodash` methods. */
2759
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2341
2760
 
2342
2761
  /**
2343
- * A fallback implementation of `Object.keys` which creates an array of the
2344
- * own enumerable property names of `object`.
2762
+ * Creates a `Set` cache object to optimize linear searches of large arrays.
2345
2763
  *
2346
2764
  * @private
2347
- * @param {Object} object The object to inspect.
2348
- * @returns {Array} Returns the array of property names.
2765
+ * @param {Array} [values] The values to cache.
2766
+ * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2349
2767
  */
2350
- function shimKeys(object) {
2351
- var props = keysIn(object),
2352
- propsLength = props.length,
2353
- length = propsLength && object.length;
2354
-
2355
- var allowIndexes = length && isLength(length) &&
2356
- (isArray(object) || (support.nonEnumArgs && isArguments(object)));
2357
-
2358
- var index = -1,
2359
- result = [];
2768
+ var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2769
+ return new SetCache(values);
2770
+ };
2360
2771
 
2361
- while (++index < propsLength) {
2362
- var key = props[index];
2363
- if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
2364
- result.push(key);
2365
- }
2366
- }
2367
- return result;
2368
- }
2772
+ module.exports = createCache;
2369
2773
 
2370
- module.exports = shimKeys;
2371
-
2774
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2372
2775
 
2373
2776
  /***/ },
2374
- /* 37 */
2777
+ /* 52 */
2375
2778
  /***/ function(module, exports, __webpack_require__) {
2376
2779
 
2377
- var baseIndexOf = __webpack_require__(40),
2378
- cacheIndexOf = __webpack_require__(41),
2379
- createCache = __webpack_require__(42);
2780
+ var baseIndexOf = __webpack_require__(49),
2781
+ cacheIndexOf = __webpack_require__(50),
2782
+ createCache = __webpack_require__(51);
2380
2783
 
2381
2784
  /**
2382
2785
  * The base implementation of `_.uniq` without support for callback shorthands
@@ -2434,7 +2837,7 @@ return /******/ (function(modules) { // webpackBootstrap
2434
2837
 
2435
2838
 
2436
2839
  /***/ },
2437
- /* 38 */
2840
+ /* 53 */
2438
2841
  /***/ function(module, exports, __webpack_require__) {
2439
2842
 
2440
2843
  /**
@@ -2469,1136 +2872,1280 @@ return /******/ (function(modules) { // webpackBootstrap
2469
2872
 
2470
2873
 
2471
2874
  /***/ },
2472
- /* 39 */
2875
+ /* 54 */
2473
2876
  /***/ function(module, exports, __webpack_require__) {
2474
2877
 
2475
- var baseCallback = __webpack_require__(34),
2476
- baseFind = __webpack_require__(66);
2878
+ var getLength = __webpack_require__(31),
2879
+ isLength = __webpack_require__(32),
2880
+ toObject = __webpack_require__(78);
2477
2881
 
2478
2882
  /**
2479
- * Creates a `_.findKey` or `_.findLastKey` function.
2883
+ * Creates a `baseEach` or `baseEachRight` function.
2480
2884
  *
2481
2885
  * @private
2482
- * @param {Function} objectFunc The function to iterate over an object.
2483
- * @returns {Function} Returns the new find function.
2886
+ * @param {Function} eachFunc The function to iterate over a collection.
2887
+ * @param {boolean} [fromRight] Specify iterating from right to left.
2888
+ * @returns {Function} Returns the new base function.
2484
2889
  */
2485
- function createFindKey(objectFunc) {
2486
- return function(object, predicate, thisArg) {
2487
- predicate = baseCallback(predicate, thisArg, 3);
2488
- return baseFind(object, predicate, objectFunc, true);
2890
+ function createBaseEach(eachFunc, fromRight) {
2891
+ return function(collection, iteratee) {
2892
+ var length = collection ? getLength(collection) : 0;
2893
+ if (!isLength(length)) {
2894
+ return eachFunc(collection, iteratee);
2895
+ }
2896
+ var index = fromRight ? length : -1,
2897
+ iterable = toObject(collection);
2898
+
2899
+ while ((fromRight ? index-- : ++index < length)) {
2900
+ if (iteratee(iterable[index], index, iterable) === false) {
2901
+ break;
2902
+ }
2903
+ }
2904
+ return collection;
2489
2905
  };
2490
2906
  }
2491
2907
 
2492
- module.exports = createFindKey;
2908
+ module.exports = createBaseEach;
2493
2909
 
2494
2910
 
2495
2911
  /***/ },
2496
- /* 40 */
2912
+ /* 55 */
2497
2913
  /***/ function(module, exports, __webpack_require__) {
2498
2914
 
2499
- var indexOfNaN = __webpack_require__(67);
2500
-
2501
2915
  /**
2502
- * The base implementation of `_.indexOf` without support for binary searches.
2916
+ * The base implementation of `_.reduce` and `_.reduceRight` without support
2917
+ * for callback shorthands and `this` binding, which iterates over `collection`
2918
+ * using the provided `eachFunc`.
2503
2919
  *
2504
2920
  * @private
2505
- * @param {Array} array The array to search.
2506
- * @param {*} value The value to search for.
2507
- * @param {number} fromIndex The index to search from.
2508
- * @returns {number} Returns the index of the matched value, else `-1`.
2921
+ * @param {Array|Object|string} collection The collection to iterate over.
2922
+ * @param {Function} iteratee The function invoked per iteration.
2923
+ * @param {*} accumulator The initial value.
2924
+ * @param {boolean} initFromCollection Specify using the first or last element
2925
+ * of `collection` as the initial value.
2926
+ * @param {Function} eachFunc The function to iterate over `collection`.
2927
+ * @returns {*} Returns the accumulated value.
2509
2928
  */
2510
- function baseIndexOf(array, value, fromIndex) {
2511
- if (value !== value) {
2512
- return indexOfNaN(array, fromIndex);
2513
- }
2514
- var index = fromIndex - 1,
2515
- length = array.length;
2516
-
2517
- while (++index < length) {
2518
- if (array[index] === value) {
2519
- return index;
2520
- }
2521
- }
2522
- return -1;
2929
+ function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
2930
+ eachFunc(collection, function(value, index, collection) {
2931
+ accumulator = initFromCollection
2932
+ ? (initFromCollection = false, value)
2933
+ : iteratee(accumulator, value, index, collection);
2934
+ });
2935
+ return accumulator;
2523
2936
  }
2524
2937
 
2525
- module.exports = baseIndexOf;
2938
+ module.exports = baseReduce;
2526
2939
 
2527
2940
 
2528
2941
  /***/ },
2529
- /* 41 */
2942
+ /* 56 */
2530
2943
  /***/ function(module, exports, __webpack_require__) {
2531
2944
 
2532
- var isObject = __webpack_require__(25);
2533
-
2534
2945
  /**
2535
- * Checks if `value` is in `cache` mimicking the return signature of
2536
- * `_.indexOf` by returning `0` if the value is found, else `-1`.
2946
+ * The base implementation of `_.property` without support for deep paths.
2537
2947
  *
2538
2948
  * @private
2539
- * @param {Object} cache The cache to search.
2540
- * @param {*} value The value to search for.
2541
- * @returns {number} Returns `0` if `value` is found, else `-1`.
2949
+ * @param {string} key The key of the property to get.
2950
+ * @returns {Function} Returns the new function.
2542
2951
  */
2543
- function cacheIndexOf(cache, value) {
2544
- var data = cache.data,
2545
- result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
2546
-
2547
- return result ? 0 : -1;
2952
+ function baseProperty(key) {
2953
+ return function(object) {
2954
+ return object == null ? undefined : object[key];
2955
+ };
2548
2956
  }
2549
2957
 
2550
- module.exports = cacheIndexOf;
2958
+ module.exports = baseProperty;
2551
2959
 
2552
2960
 
2553
2961
  /***/ },
2554
- /* 42 */
2962
+ /* 57 */
2555
2963
  /***/ function(module, exports, __webpack_require__) {
2556
2964
 
2557
- /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(68),
2558
- constant = __webpack_require__(69),
2559
- isNative = __webpack_require__(30);
2560
-
2561
- /** Native method references. */
2562
- var Set = isNative(Set = global.Set) && Set;
2563
-
2564
- /* Native method references for those with the same name as other `lodash` methods. */
2565
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
2965
+ var baseIsMatch = __webpack_require__(76),
2966
+ constant = __webpack_require__(75),
2967
+ isStrictComparable = __webpack_require__(77),
2968
+ keys = __webpack_require__(21),
2969
+ toObject = __webpack_require__(78);
2566
2970
 
2567
2971
  /**
2568
- * Creates a `Set` cache object to optimize linear searches of large arrays.
2972
+ * The base implementation of `_.matches` which does not clone `source`.
2569
2973
  *
2570
2974
  * @private
2571
- * @param {Array} [values] The values to cache.
2572
- * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
2975
+ * @param {Object} source The object of property values to match.
2976
+ * @returns {Function} Returns the new function.
2573
2977
  */
2574
- var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
2575
- return new SetCache(values);
2576
- };
2978
+ function baseMatches(source) {
2979
+ var props = keys(source),
2980
+ length = props.length;
2577
2981
 
2578
- module.exports = createCache;
2982
+ if (!length) {
2983
+ return constant(true);
2984
+ }
2985
+ if (length == 1) {
2986
+ var key = props[0],
2987
+ value = source[key];
2579
2988
 
2580
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2989
+ if (isStrictComparable(value)) {
2990
+ return function(object) {
2991
+ if (object == null) {
2992
+ return false;
2993
+ }
2994
+ return object[key] === value && (value !== undefined || (key in toObject(object)));
2995
+ };
2996
+ }
2997
+ }
2998
+ var values = Array(length),
2999
+ strictCompareFlags = Array(length);
3000
+
3001
+ while (length--) {
3002
+ value = source[props[length]];
3003
+ values[length] = value;
3004
+ strictCompareFlags[length] = isStrictComparable(value);
3005
+ }
3006
+ return function(object) {
3007
+ return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
3008
+ };
3009
+ }
3010
+
3011
+ module.exports = baseMatches;
3012
+
2581
3013
 
2582
3014
  /***/ },
2583
- /* 43 */
3015
+ /* 58 */
2584
3016
  /***/ function(module, exports, __webpack_require__) {
2585
3017
 
2586
- var isLength = __webpack_require__(35),
2587
- isObjectLike = __webpack_require__(31);
2588
-
2589
- /** `Object#toString` result references. */
2590
- var argsTag = '[object Arguments]';
2591
-
2592
- /** Used for native method references. */
2593
- var objectProto = Object.prototype;
3018
+ var baseGet = __webpack_require__(79),
3019
+ baseIsEqual = __webpack_require__(80),
3020
+ baseSlice = __webpack_require__(81),
3021
+ isArray = __webpack_require__(36),
3022
+ isKey = __webpack_require__(82),
3023
+ isStrictComparable = __webpack_require__(77),
3024
+ last = __webpack_require__(83),
3025
+ toObject = __webpack_require__(78),
3026
+ toPath = __webpack_require__(84);
2594
3027
 
2595
3028
  /**
2596
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2597
- * of values.
3029
+ * The base implementation of `_.matchesProperty` which does not which does
3030
+ * not clone `value`.
3031
+ *
3032
+ * @private
3033
+ * @param {string} path The path of the property to get.
3034
+ * @param {*} value The value to compare.
3035
+ * @returns {Function} Returns the new function.
2598
3036
  */
2599
- var objToString = objectProto.toString;
3037
+ function baseMatchesProperty(path, value) {
3038
+ var isArr = isArray(path),
3039
+ isCommon = isKey(path) && isStrictComparable(value),
3040
+ pathKey = (path + '');
3041
+
3042
+ path = toPath(path);
3043
+ return function(object) {
3044
+ if (object == null) {
3045
+ return false;
3046
+ }
3047
+ var key = pathKey;
3048
+ object = toObject(object);
3049
+ if ((isArr || !isCommon) && !(key in object)) {
3050
+ object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
3051
+ if (object == null) {
3052
+ return false;
3053
+ }
3054
+ key = last(path);
3055
+ object = toObject(object);
3056
+ }
3057
+ return object[key] === value
3058
+ ? (value !== undefined || (key in object))
3059
+ : baseIsEqual(value, object[key], null, true);
3060
+ };
3061
+ }
2600
3062
 
3063
+ module.exports = baseMatchesProperty;
3064
+
3065
+
3066
+ /***/ },
3067
+ /* 59 */
3068
+ /***/ function(module, exports, __webpack_require__) {
3069
+
2601
3070
  /**
2602
- * Checks if `value` is classified as an `arguments` object.
3071
+ * This method returns the first argument provided to it.
2603
3072
  *
2604
3073
  * @static
2605
3074
  * @memberOf _
2606
- * @category Lang
2607
- * @param {*} value The value to check.
2608
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3075
+ * @category Utility
3076
+ * @param {*} value Any value.
3077
+ * @returns {*} Returns `value`.
2609
3078
  * @example
2610
3079
  *
2611
- * _.isArguments(function() { return arguments; }());
2612
- * // => true
3080
+ * var object = { 'user': 'fred' };
2613
3081
  *
2614
- * _.isArguments([1, 2, 3]);
2615
- * // => false
3082
+ * _.identity(object) === object;
3083
+ * // => true
2616
3084
  */
2617
- function isArguments(value) {
2618
- var length = isObjectLike(value) ? value.length : undefined;
2619
- return isLength(length) && objToString.call(value) == argsTag;
3085
+ function identity(value) {
3086
+ return value;
2620
3087
  }
2621
3088
 
2622
- module.exports = isArguments;
3089
+ module.exports = identity;
2623
3090
 
2624
3091
 
2625
3092
  /***/ },
2626
- /* 44 */
3093
+ /* 60 */
2627
3094
  /***/ function(module, exports, __webpack_require__) {
2628
3095
 
2629
- var isLength = __webpack_require__(35),
2630
- isNative = __webpack_require__(30),
2631
- isObjectLike = __webpack_require__(31);
3096
+ var baseProperty = __webpack_require__(56),
3097
+ basePropertyDeep = __webpack_require__(85),
3098
+ isKey = __webpack_require__(82);
2632
3099
 
2633
- /** `Object#toString` result references. */
2634
- var arrayTag = '[object Array]';
3100
+ /**
3101
+ * Creates a function which returns the property value at `path` on a
3102
+ * given object.
3103
+ *
3104
+ * @static
3105
+ * @memberOf _
3106
+ * @category Utility
3107
+ * @param {Array|string} path The path of the property to get.
3108
+ * @returns {Function} Returns the new function.
3109
+ * @example
3110
+ *
3111
+ * var objects = [
3112
+ * { 'a': { 'b': { 'c': 2 } } },
3113
+ * { 'a': { 'b': { 'c': 1 } } }
3114
+ * ];
3115
+ *
3116
+ * _.map(objects, _.property('a.b.c'));
3117
+ * // => [2, 1]
3118
+ *
3119
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
3120
+ * // => [1, 2]
3121
+ */
3122
+ function property(path) {
3123
+ return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
3124
+ }
2635
3125
 
2636
- /** Used for native method references. */
2637
- var objectProto = Object.prototype;
3126
+ module.exports = property;
3127
+
3128
+
3129
+ /***/ },
3130
+ /* 61 */
3131
+ /***/ function(module, exports, __webpack_require__) {
3132
+
3133
+ var baseToString = __webpack_require__(86);
2638
3134
 
2639
3135
  /**
2640
- * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
2641
- * of values.
3136
+ * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3137
+ * In addition to special characters the forward slash is escaped to allow for
3138
+ * easier `eval` use and `Function` compilation.
2642
3139
  */
2643
- var objToString = objectProto.toString;
2644
-
2645
- /* Native method references for those with the same name as other `lodash` methods. */
2646
- var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;
3140
+ var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3141
+ reHasRegExpChars = RegExp(reRegExpChars.source);
2647
3142
 
2648
3143
  /**
2649
- * Checks if `value` is classified as an `Array` object.
3144
+ * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3145
+ * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
2650
3146
  *
2651
3147
  * @static
2652
3148
  * @memberOf _
2653
- * @category Lang
2654
- * @param {*} value The value to check.
2655
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3149
+ * @category String
3150
+ * @param {string} [string=''] The string to escape.
3151
+ * @returns {string} Returns the escaped string.
2656
3152
  * @example
2657
3153
  *
2658
- * _.isArray([1, 2, 3]);
2659
- * // => true
2660
- *
2661
- * _.isArray(function() { return arguments; }());
2662
- * // => false
3154
+ * _.escapeRegExp('[lodash](https://lodash.com/)');
3155
+ * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
2663
3156
  */
2664
- var isArray = nativeIsArray || function(value) {
2665
- return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
2666
- };
3157
+ function escapeRegExp(string) {
3158
+ string = baseToString(string);
3159
+ return (string && reHasRegExpChars.test(string))
3160
+ ? string.replace(reRegExpChars, '\\$&')
3161
+ : string;
3162
+ }
2667
3163
 
2668
- module.exports = isArray;
3164
+ module.exports = escapeRegExp;
2669
3165
 
2670
3166
 
2671
3167
  /***/ },
2672
- /* 45 */
3168
+ /* 62 */
2673
3169
  /***/ function(module, exports, __webpack_require__) {
2674
3170
 
2675
3171
  /**
2676
- * A specialized version of `_.map` for arrays without support for callback
2677
- * shorthands and `this` binding.
3172
+ * Copies the values of `source` to `array`.
2678
3173
  *
2679
3174
  * @private
2680
- * @param {Array} array The array to iterate over.
2681
- * @param {Function} iteratee The function invoked per iteration.
2682
- * @returns {Array} Returns the new mapped array.
3175
+ * @param {Array} source The array to copy values from.
3176
+ * @param {Array} [array=[]] The array to copy values to.
3177
+ * @returns {Array} Returns `array`.
2683
3178
  */
2684
- function arrayMap(array, iteratee) {
3179
+ function arrayCopy(source, array) {
2685
3180
  var index = -1,
2686
- length = array.length,
2687
- result = Array(length);
3181
+ length = source.length;
2688
3182
 
3183
+ array || (array = Array(length));
2689
3184
  while (++index < length) {
2690
- result[index] = iteratee(array[index], index, array);
3185
+ array[index] = source[index];
2691
3186
  }
2692
- return result;
3187
+ return array;
2693
3188
  }
2694
3189
 
2695
- module.exports = arrayMap;
3190
+ module.exports = arrayCopy;
2696
3191
 
2697
3192
 
2698
3193
  /***/ },
2699
- /* 46 */
3194
+ /* 63 */
2700
3195
  /***/ function(module, exports, __webpack_require__) {
2701
3196
 
2702
- var baseEach = __webpack_require__(48);
3197
+ var baseCopy = __webpack_require__(87),
3198
+ getSymbols = __webpack_require__(88),
3199
+ isNative = __webpack_require__(38),
3200
+ keys = __webpack_require__(21);
3201
+
3202
+ /** Native method references. */
3203
+ var preventExtensions = isNative(preventExtensions = Object.preventExtensions) && preventExtensions;
3204
+
3205
+ /** Used as `baseAssign`. */
3206
+ var nativeAssign = (function() {
3207
+ // Avoid `Object.assign` in Firefox 34-37 which have an early implementation
3208
+ // with a now defunct try/catch behavior. See https://bugzilla.mozilla.org/show_bug.cgi?id=1103344
3209
+ // for more details.
3210
+ //
3211
+ // Use `Object.preventExtensions` on a plain object instead of simply using
3212
+ // `Object('x')` because Chrome and IE fail to throw an error when attempting
3213
+ // to assign values to readonly indexes of strings.
3214
+ var func = preventExtensions && isNative(func = Object.assign) && func;
3215
+ try {
3216
+ if (func) {
3217
+ var object = preventExtensions({ '1': 0 });
3218
+ object[0] = 1;
3219
+ }
3220
+ } catch(e) {
3221
+ // Only attempt in strict mode.
3222
+ try { func(object, 'xo'); } catch(e) {}
3223
+ return !object[1] && func;
3224
+ }
3225
+ return false;
3226
+ }());
2703
3227
 
2704
3228
  /**
2705
- * The base implementation of `_.map` without support for callback shorthands
2706
- * and `this` binding.
3229
+ * The base implementation of `_.assign` without support for argument juggling,
3230
+ * multiple sources, and `customizer` functions.
2707
3231
  *
2708
3232
  * @private
2709
- * @param {Array|Object|string} collection The collection to iterate over.
2710
- * @param {Function} iteratee The function invoked per iteration.
2711
- * @returns {Array} Returns the new mapped array.
3233
+ * @param {Object} object The destination object.
3234
+ * @param {Object} source The source object.
3235
+ * @returns {Object} Returns `object`.
2712
3236
  */
2713
- function baseMap(collection, iteratee) {
2714
- var result = [];
2715
- baseEach(collection, function(value, key, collection) {
2716
- result.push(iteratee(value, key, collection));
2717
- });
2718
- return result;
2719
- }
3237
+ var baseAssign = nativeAssign || function(object, source) {
3238
+ return source == null
3239
+ ? object
3240
+ : baseCopy(source, getSymbols(source), baseCopy(source, keys(source), object));
3241
+ };
2720
3242
 
2721
- module.exports = baseMap;
3243
+ module.exports = baseAssign;
2722
3244
 
2723
3245
 
2724
3246
  /***/ },
2725
- /* 47 */
3247
+ /* 64 */
2726
3248
  /***/ function(module, exports, __webpack_require__) {
2727
3249
 
3250
+ /** Used for native method references. */
3251
+ var objectProto = Object.prototype;
3252
+
3253
+ /** Used to check objects for own properties. */
3254
+ var hasOwnProperty = objectProto.hasOwnProperty;
3255
+
2728
3256
  /**
2729
- * A specialized version of `_.forEach` for arrays without support for callback
2730
- * shorthands and `this` binding.
3257
+ * Initializes an array clone.
2731
3258
  *
2732
3259
  * @private
2733
- * @param {Array} array The array to iterate over.
2734
- * @param {Function} iteratee The function invoked per iteration.
2735
- * @returns {Array} Returns `array`.
3260
+ * @param {Array} array The array to clone.
3261
+ * @returns {Array} Returns the initialized clone.
2736
3262
  */
2737
- function arrayEach(array, iteratee) {
2738
- var index = -1,
2739
- length = array.length;
3263
+ function initCloneArray(array) {
3264
+ var length = array.length,
3265
+ result = new array.constructor(length);
2740
3266
 
2741
- while (++index < length) {
2742
- if (iteratee(array[index], index, array) === false) {
2743
- break;
2744
- }
3267
+ // Add array properties assigned by `RegExp#exec`.
3268
+ if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
3269
+ result.index = array.index;
3270
+ result.input = array.input;
2745
3271
  }
2746
- return array;
3272
+ return result;
2747
3273
  }
2748
3274
 
2749
- module.exports = arrayEach;
3275
+ module.exports = initCloneArray;
2750
3276
 
2751
3277
 
2752
3278
  /***/ },
2753
- /* 48 */
3279
+ /* 65 */
2754
3280
  /***/ function(module, exports, __webpack_require__) {
2755
3281
 
2756
- var baseForOwn = __webpack_require__(32),
2757
- createBaseEach = __webpack_require__(70);
3282
+ var bufferClone = __webpack_require__(89);
2758
3283
 
2759
- /**
2760
- * The base implementation of `_.forEach` without support for callback
2761
- * shorthands and `this` binding.
2762
- *
2763
- * @private
2764
- * @param {Array|Object|string} collection The collection to iterate over.
2765
- * @param {Function} iteratee The function invoked per iteration.
2766
- * @returns {Array|Object|string} Returns `collection`.
2767
- */
2768
- var baseEach = createBaseEach(baseForOwn);
3284
+ /** `Object#toString` result references. */
3285
+ var boolTag = '[object Boolean]',
3286
+ dateTag = '[object Date]',
3287
+ numberTag = '[object Number]',
3288
+ regexpTag = '[object RegExp]',
3289
+ stringTag = '[object String]';
2769
3290
 
2770
- module.exports = baseEach;
2771
-
2772
-
2773
- /***/ },
2774
- /* 49 */
2775
- /***/ function(module, exports, __webpack_require__) {
2776
-
2777
- var bindCallback = __webpack_require__(27),
2778
- isArray = __webpack_require__(44);
3291
+ var arrayBufferTag = '[object ArrayBuffer]',
3292
+ float32Tag = '[object Float32Array]',
3293
+ float64Tag = '[object Float64Array]',
3294
+ int8Tag = '[object Int8Array]',
3295
+ int16Tag = '[object Int16Array]',
3296
+ int32Tag = '[object Int32Array]',
3297
+ uint8Tag = '[object Uint8Array]',
3298
+ uint8ClampedTag = '[object Uint8ClampedArray]',
3299
+ uint16Tag = '[object Uint16Array]',
3300
+ uint32Tag = '[object Uint32Array]';
3301
+
3302
+ /** Used to match `RegExp` flags from their coerced string values. */
3303
+ var reFlags = /\w*$/;
2779
3304
 
2780
3305
  /**
2781
- * Creates a function for `_.forEach` or `_.forEachRight`.
3306
+ * Initializes an object clone based on its `toStringTag`.
3307
+ *
3308
+ * **Note:** This function only supports cloning values with tags of
3309
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
2782
3310
  *
2783
3311
  * @private
2784
- * @param {Function} arrayFunc The function to iterate over an array.
2785
- * @param {Function} eachFunc The function to iterate over a collection.
2786
- * @returns {Function} Returns the new each function.
3312
+ * @param {Object} object The object to clone.
3313
+ * @param {string} tag The `toStringTag` of the object to clone.
3314
+ * @param {boolean} [isDeep] Specify a deep clone.
3315
+ * @returns {Object} Returns the initialized clone.
2787
3316
  */
2788
- function createForEach(arrayFunc, eachFunc) {
2789
- return function(collection, iteratee, thisArg) {
2790
- return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
2791
- ? arrayFunc(collection, iteratee)
2792
- : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
2793
- };
3317
+ function initCloneByTag(object, tag, isDeep) {
3318
+ var Ctor = object.constructor;
3319
+ switch (tag) {
3320
+ case arrayBufferTag:
3321
+ return bufferClone(object);
3322
+
3323
+ case boolTag:
3324
+ case dateTag:
3325
+ return new Ctor(+object);
3326
+
3327
+ case float32Tag: case float64Tag:
3328
+ case int8Tag: case int16Tag: case int32Tag:
3329
+ case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
3330
+ var buffer = object.buffer;
3331
+ return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3332
+
3333
+ case numberTag:
3334
+ case stringTag:
3335
+ return new Ctor(object);
3336
+
3337
+ case regexpTag:
3338
+ var result = new Ctor(object.source, reFlags.exec(object));
3339
+ result.lastIndex = object.lastIndex;
3340
+ }
3341
+ return result;
2794
3342
  }
2795
3343
 
2796
- module.exports = createForEach;
3344
+ module.exports = initCloneByTag;
2797
3345
 
2798
3346
 
2799
3347
  /***/ },
2800
- /* 50 */
3348
+ /* 66 */
2801
3349
  /***/ function(module, exports, __webpack_require__) {
2802
3350
 
2803
3351
  /**
2804
- * A specialized version of `_.reduce` for arrays without support for callback
2805
- * shorthands and `this` binding.
3352
+ * Initializes an object clone.
2806
3353
  *
2807
3354
  * @private
2808
- * @param {Array} array The array to iterate over.
2809
- * @param {Function} iteratee The function invoked per iteration.
2810
- * @param {*} [accumulator] The initial value.
2811
- * @param {boolean} [initFromArray] Specify using the first element of `array`
2812
- * as the initial value.
2813
- * @returns {*} Returns the accumulated value.
3355
+ * @param {Object} object The object to clone.
3356
+ * @returns {Object} Returns the initialized clone.
2814
3357
  */
2815
- function arrayReduce(array, iteratee, accumulator, initFromArray) {
2816
- var index = -1,
2817
- length = array.length;
2818
-
2819
- if (initFromArray && length) {
2820
- accumulator = array[++index];
2821
- }
2822
- while (++index < length) {
2823
- accumulator = iteratee(accumulator, array[index], index, array);
3358
+ function initCloneObject(object) {
3359
+ var Ctor = object.constructor;
3360
+ if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3361
+ Ctor = Object;
2824
3362
  }
2825
- return accumulator;
3363
+ return new Ctor;
2826
3364
  }
2827
3365
 
2828
- module.exports = arrayReduce;
3366
+ module.exports = initCloneObject;
2829
3367
 
2830
3368
 
2831
3369
  /***/ },
2832
- /* 51 */
3370
+ /* 67 */
2833
3371
  /***/ function(module, exports, __webpack_require__) {
2834
3372
 
2835
- var baseCallback = __webpack_require__(34),
2836
- baseReduce = __webpack_require__(71),
2837
- isArray = __webpack_require__(44);
3373
+ /**
3374
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3375
+ * of an array-like value.
3376
+ */
3377
+ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
2838
3378
 
2839
3379
  /**
2840
- * Creates a function for `_.reduce` or `_.reduceRight`.
3380
+ * Checks if `value` is a valid array-like index.
2841
3381
  *
2842
3382
  * @private
2843
- * @param {Function} arrayFunc The function to iterate over an array.
2844
- * @param {Function} eachFunc The function to iterate over a collection.
2845
- * @returns {Function} Returns the new each function.
2846
- */
2847
- function createReduce(arrayFunc, eachFunc) {
2848
- return function(collection, iteratee, accumulator, thisArg) {
2849
- var initFromArray = arguments.length < 3;
2850
- return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection))
2851
- ? arrayFunc(collection, iteratee, accumulator, initFromArray)
2852
- : baseReduce(collection, baseCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
2853
- };
3383
+ * @param {*} value The value to check.
3384
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3385
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3386
+ */
3387
+ function isIndex(value, length) {
3388
+ value = +value;
3389
+ length = length == null ? MAX_SAFE_INTEGER : length;
3390
+ return value > -1 && value % 1 == 0 && value < length;
2854
3391
  }
2855
3392
 
2856
- module.exports = createReduce;
3393
+ module.exports = isIndex;
2857
3394
 
2858
3395
 
2859
3396
  /***/ },
2860
- /* 52 */
3397
+ /* 68 */
2861
3398
  /***/ function(module, exports, __webpack_require__) {
2862
3399
 
3400
+ var isArrayLike = __webpack_require__(44),
3401
+ isObjectLike = __webpack_require__(39);
3402
+
3403
+ /** `Object#toString` result references. */
3404
+ var argsTag = '[object Arguments]';
3405
+
3406
+ /** Used for native method references. */
3407
+ var objectProto = Object.prototype;
3408
+
2863
3409
  /**
2864
- * Copies the values of `source` to `array`.
2865
- *
2866
- * @private
2867
- * @param {Array} source The array to copy values from.
2868
- * @param {Array} [array=[]] The array to copy values to.
2869
- * @returns {Array} Returns `array`.
3410
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
3411
+ * of values.
2870
3412
  */
2871
- function arrayCopy(source, array) {
2872
- var index = -1,
2873
- length = source.length;
3413
+ var objToString = objectProto.toString;
2874
3414
 
2875
- array || (array = Array(length));
2876
- while (++index < length) {
2877
- array[index] = source[index];
2878
- }
2879
- return array;
3415
+ /**
3416
+ * Checks if `value` is classified as an `arguments` object.
3417
+ *
3418
+ * @static
3419
+ * @memberOf _
3420
+ * @category Lang
3421
+ * @param {*} value The value to check.
3422
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
3423
+ * @example
3424
+ *
3425
+ * _.isArguments(function() { return arguments; }());
3426
+ * // => true
3427
+ *
3428
+ * _.isArguments([1, 2, 3]);
3429
+ * // => false
3430
+ */
3431
+ function isArguments(value) {
3432
+ return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
2880
3433
  }
2881
3434
 
2882
- module.exports = arrayCopy;
3435
+ module.exports = isArguments;
2883
3436
 
2884
3437
 
2885
3438
  /***/ },
2886
- /* 53 */
3439
+ /* 69 */
2887
3440
  /***/ function(module, exports, __webpack_require__) {
2888
3441
 
3442
+ var isArguments = __webpack_require__(68),
3443
+ isArray = __webpack_require__(36),
3444
+ isIndex = __webpack_require__(67),
3445
+ isLength = __webpack_require__(32),
3446
+ isObject = __webpack_require__(25),
3447
+ support = __webpack_require__(70);
3448
+
3449
+ /** Used for native method references. */
3450
+ var objectProto = Object.prototype;
3451
+
3452
+ /** Used to check objects for own properties. */
3453
+ var hasOwnProperty = objectProto.hasOwnProperty;
3454
+
2889
3455
  /**
2890
- * Copies the properties of `source` to `object`.
3456
+ * Creates an array of the own and inherited enumerable property names of `object`.
2891
3457
  *
2892
- * @private
2893
- * @param {Object} source The object to copy properties from.
2894
- * @param {Object} [object={}] The object to copy properties to.
2895
- * @param {Array} props The property names to copy.
2896
- * @returns {Object} Returns `object`.
3458
+ * **Note:** Non-object values are coerced to objects.
3459
+ *
3460
+ * @static
3461
+ * @memberOf _
3462
+ * @category Object
3463
+ * @param {Object} object The object to query.
3464
+ * @returns {Array} Returns the array of property names.
3465
+ * @example
3466
+ *
3467
+ * function Foo() {
3468
+ * this.a = 1;
3469
+ * this.b = 2;
3470
+ * }
3471
+ *
3472
+ * Foo.prototype.c = 3;
3473
+ *
3474
+ * _.keysIn(new Foo);
3475
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
2897
3476
  */
2898
- function baseCopy(source, object, props) {
2899
- if (!props) {
2900
- props = object;
2901
- object = {};
3477
+ function keysIn(object) {
3478
+ if (object == null) {
3479
+ return [];
2902
3480
  }
2903
- var index = -1,
2904
- length = props.length;
3481
+ if (!isObject(object)) {
3482
+ object = Object(object);
3483
+ }
3484
+ var length = object.length;
3485
+ length = (length && isLength(length) &&
3486
+ (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3487
+
3488
+ var Ctor = object.constructor,
3489
+ index = -1,
3490
+ isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3491
+ result = Array(length),
3492
+ skipIndexes = length > 0;
2905
3493
 
2906
3494
  while (++index < length) {
2907
- var key = props[index];
2908
- object[key] = source[key];
3495
+ result[index] = (index + '');
2909
3496
  }
2910
- return object;
3497
+ for (var key in object) {
3498
+ if (!(skipIndexes && isIndex(key, length)) &&
3499
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3500
+ result.push(key);
3501
+ }
3502
+ }
3503
+ return result;
2911
3504
  }
2912
3505
 
2913
- module.exports = baseCopy;
3506
+ module.exports = keysIn;
2914
3507
 
2915
3508
 
2916
3509
  /***/ },
2917
- /* 54 */
3510
+ /* 70 */
2918
3511
  /***/ function(module, exports, __webpack_require__) {
2919
3512
 
2920
- /** Used for native method references. */
3513
+ /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
2921
3514
  var objectProto = Object.prototype;
2922
3515
 
2923
- /** Used to check objects for own properties. */
2924
- var hasOwnProperty = objectProto.hasOwnProperty;
3516
+ /** Used to detect DOM support. */
3517
+ var document = (document = global.window) && document.document;
3518
+
3519
+ /** Native method references. */
3520
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
2925
3521
 
2926
3522
  /**
2927
- * Initializes an array clone.
3523
+ * An object environment feature flags.
2928
3524
  *
2929
- * @private
2930
- * @param {Array} array The array to clone.
2931
- * @returns {Array} Returns the initialized clone.
3525
+ * @static
3526
+ * @memberOf _
3527
+ * @type Object
2932
3528
  */
2933
- function initCloneArray(array) {
2934
- var length = array.length,
2935
- result = new array.constructor(length);
3529
+ var support = {};
2936
3530
 
2937
- // Add array properties assigned by `RegExp#exec`.
2938
- if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
2939
- result.index = array.index;
2940
- result.input = array.input;
3531
+ (function(x) {
3532
+ var Ctor = function() { this.x = x; },
3533
+ args = arguments,
3534
+ object = { '0': x, 'length': x },
3535
+ props = [];
3536
+
3537
+ Ctor.prototype = { 'valueOf': x, 'y': x };
3538
+ for (var key in new Ctor) { props.push(key); }
3539
+
3540
+ /**
3541
+ * Detect if functions can be decompiled by `Function#toString`
3542
+ * (all but Firefox OS certified apps, older Opera mobile browsers, and
3543
+ * the PlayStation 3; forced `false` for Windows 8 apps).
3544
+ *
3545
+ * @memberOf _.support
3546
+ * @type boolean
3547
+ */
3548
+ support.funcDecomp = /\bthis\b/.test(function() { return this; });
3549
+
3550
+ /**
3551
+ * Detect if `Function#name` is supported (all but IE).
3552
+ *
3553
+ * @memberOf _.support
3554
+ * @type boolean
3555
+ */
3556
+ support.funcNames = typeof Function.name == 'string';
3557
+
3558
+ /**
3559
+ * Detect if the DOM is supported.
3560
+ *
3561
+ * @memberOf _.support
3562
+ * @type boolean
3563
+ */
3564
+ try {
3565
+ support.dom = document.createDocumentFragment().nodeType === 11;
3566
+ } catch(e) {
3567
+ support.dom = false;
2941
3568
  }
2942
- return result;
2943
- }
2944
3569
 
2945
- module.exports = initCloneArray;
2946
-
3570
+ /**
3571
+ * Detect if `arguments` object indexes are non-enumerable.
3572
+ *
3573
+ * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3574
+ * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3575
+ * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3576
+ * checks for indexes that exceed the number of function parameters and
3577
+ * whose associated argument values are `0`.
3578
+ *
3579
+ * @memberOf _.support
3580
+ * @type boolean
3581
+ */
3582
+ try {
3583
+ support.nonEnumArgs = !propertyIsEnumerable.call(args, 1);
3584
+ } catch(e) {
3585
+ support.nonEnumArgs = true;
3586
+ }
3587
+ }(1, 0));
3588
+
3589
+ module.exports = support;
3590
+
3591
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
2947
3592
 
2948
3593
  /***/ },
2949
- /* 55 */
3594
+ /* 71 */
2950
3595
  /***/ function(module, exports, __webpack_require__) {
2951
3596
 
2952
- var bufferClone = __webpack_require__(72);
2953
-
2954
- /** `Object#toString` result references. */
2955
- var boolTag = '[object Boolean]',
2956
- dateTag = '[object Date]',
2957
- numberTag = '[object Number]',
2958
- regexpTag = '[object RegExp]',
2959
- stringTag = '[object String]';
3597
+ var createBaseFor = __webpack_require__(90);
2960
3598
 
2961
- var arrayBufferTag = '[object ArrayBuffer]',
2962
- float32Tag = '[object Float32Array]',
2963
- float64Tag = '[object Float64Array]',
2964
- int8Tag = '[object Int8Array]',
2965
- int16Tag = '[object Int16Array]',
2966
- int32Tag = '[object Int32Array]',
2967
- uint8Tag = '[object Uint8Array]',
2968
- uint8ClampedTag = '[object Uint8ClampedArray]',
2969
- uint16Tag = '[object Uint16Array]',
2970
- uint32Tag = '[object Uint32Array]';
3599
+ /**
3600
+ * The base implementation of `baseForIn` and `baseForOwn` which iterates
3601
+ * over `object` properties returned by `keysFunc` invoking `iteratee` for
3602
+ * each property. Iteratee functions may exit iteration early by explicitly
3603
+ * returning `false`.
3604
+ *
3605
+ * @private
3606
+ * @param {Object} object The object to iterate over.
3607
+ * @param {Function} iteratee The function invoked per iteration.
3608
+ * @param {Function} keysFunc The function to get the keys of `object`.
3609
+ * @returns {Object} Returns `object`.
3610
+ */
3611
+ var baseFor = createBaseFor();
2971
3612
 
2972
- /** Used to match `RegExp` flags from their coerced string values. */
2973
- var reFlags = /\w*$/;
3613
+ module.exports = baseFor;
3614
+
3615
+
3616
+ /***/ },
3617
+ /* 72 */
3618
+ /***/ function(module, exports, __webpack_require__) {
3619
+
3620
+ /**
3621
+ * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3622
+ * without support for callback shorthands and `this` binding, which iterates
3623
+ * over `collection` using the provided `eachFunc`.
3624
+ *
3625
+ * @private
3626
+ * @param {Array|Object|string} collection The collection to search.
3627
+ * @param {Function} predicate The function invoked per iteration.
3628
+ * @param {Function} eachFunc The function to iterate over `collection`.
3629
+ * @param {boolean} [retKey] Specify returning the key of the found element
3630
+ * instead of the element itself.
3631
+ * @returns {*} Returns the found element or its key, else `undefined`.
3632
+ */
3633
+ function baseFind(collection, predicate, eachFunc, retKey) {
3634
+ var result;
3635
+ eachFunc(collection, function(value, key, collection) {
3636
+ if (predicate(value, key, collection)) {
3637
+ result = retKey ? key : value;
3638
+ return false;
3639
+ }
3640
+ });
3641
+ return result;
3642
+ }
2974
3643
 
3644
+ module.exports = baseFind;
3645
+
3646
+
3647
+ /***/ },
3648
+ /* 73 */
3649
+ /***/ function(module, exports, __webpack_require__) {
3650
+
2975
3651
  /**
2976
- * Initializes an object clone based on its `toStringTag`.
2977
- *
2978
- * **Note:** This function only supports cloning values with tags of
2979
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
2980
- *
3652
+ * Gets the index at which the first occurrence of `NaN` is found in `array`.
2981
3653
  *
2982
3654
  * @private
2983
- * @param {Object} object The object to clone.
2984
- * @param {string} tag The `toStringTag` of the object to clone.
2985
- * @param {boolean} [isDeep] Specify a deep clone.
2986
- * @returns {Object} Returns the initialized clone.
3655
+ * @param {Array} array The array to search.
3656
+ * @param {number} fromIndex The index to search from.
3657
+ * @param {boolean} [fromRight] Specify iterating from right to left.
3658
+ * @returns {number} Returns the index of the matched `NaN`, else `-1`.
2987
3659
  */
2988
- function initCloneByTag(object, tag, isDeep) {
2989
- var Ctor = object.constructor;
2990
- switch (tag) {
2991
- case arrayBufferTag:
2992
- return bufferClone(object);
2993
-
2994
- case boolTag:
2995
- case dateTag:
2996
- return new Ctor(+object);
2997
-
2998
- case float32Tag: case float64Tag:
2999
- case int8Tag: case int16Tag: case int32Tag:
3000
- case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
3001
- var buffer = object.buffer;
3002
- return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
3003
-
3004
- case numberTag:
3005
- case stringTag:
3006
- return new Ctor(object);
3660
+ function indexOfNaN(array, fromIndex, fromRight) {
3661
+ var length = array.length,
3662
+ index = fromIndex + (fromRight ? 0 : -1);
3007
3663
 
3008
- case regexpTag:
3009
- var result = new Ctor(object.source, reFlags.exec(object));
3010
- result.lastIndex = object.lastIndex;
3664
+ while ((fromRight ? index-- : ++index < length)) {
3665
+ var other = array[index];
3666
+ if (other !== other) {
3667
+ return index;
3668
+ }
3011
3669
  }
3012
- return result;
3670
+ return -1;
3013
3671
  }
3014
3672
 
3015
- module.exports = initCloneByTag;
3673
+ module.exports = indexOfNaN;
3016
3674
 
3017
3675
 
3018
3676
  /***/ },
3019
- /* 56 */
3677
+ /* 74 */
3020
3678
  /***/ function(module, exports, __webpack_require__) {
3021
3679
 
3680
+ /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(91),
3681
+ isNative = __webpack_require__(38);
3682
+
3683
+ /** Native method references. */
3684
+ var Set = isNative(Set = global.Set) && Set;
3685
+
3686
+ /* Native method references for those with the same name as other `lodash` methods. */
3687
+ var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
3688
+
3022
3689
  /**
3023
- * Initializes an object clone.
3690
+ *
3691
+ * Creates a cache object to store unique values.
3024
3692
  *
3025
3693
  * @private
3026
- * @param {Object} object The object to clone.
3027
- * @returns {Object} Returns the initialized clone.
3694
+ * @param {Array} [values] The values to cache.
3028
3695
  */
3029
- function initCloneObject(object) {
3030
- var Ctor = object.constructor;
3031
- if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
3032
- Ctor = Object;
3696
+ function SetCache(values) {
3697
+ var length = values ? values.length : 0;
3698
+
3699
+ this.data = { 'hash': nativeCreate(null), 'set': new Set };
3700
+ while (length--) {
3701
+ this.push(values[length]);
3033
3702
  }
3034
- return new Ctor;
3035
3703
  }
3036
3704
 
3037
- module.exports = initCloneObject;
3038
-
3705
+ // Add functions to the `Set` cache.
3706
+ SetCache.prototype.push = cachePush;
3707
+
3708
+ module.exports = SetCache;
3709
+
3710
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3039
3711
 
3040
3712
  /***/ },
3041
- /* 57 */
3713
+ /* 75 */
3042
3714
  /***/ function(module, exports, __webpack_require__) {
3043
3715
 
3044
3716
  /**
3045
- * This method returns the first argument provided to it.
3717
+ * Creates a function that returns `value`.
3046
3718
  *
3047
3719
  * @static
3048
3720
  * @memberOf _
3049
3721
  * @category Utility
3050
- * @param {*} value Any value.
3051
- * @returns {*} Returns `value`.
3722
+ * @param {*} value The value to return from the new function.
3723
+ * @returns {Function} Returns the new function.
3052
3724
  * @example
3053
3725
  *
3054
3726
  * var object = { 'user': 'fred' };
3727
+ * var getter = _.constant(object);
3055
3728
  *
3056
- * _.identity(object) === object;
3729
+ * getter() === object;
3057
3730
  * // => true
3058
3731
  */
3059
- function identity(value) {
3060
- return value;
3732
+ function constant(value) {
3733
+ return function() {
3734
+ return value;
3735
+ };
3061
3736
  }
3062
3737
 
3063
- module.exports = identity;
3738
+ module.exports = constant;
3064
3739
 
3065
3740
 
3066
3741
  /***/ },
3067
- /* 58 */
3742
+ /* 76 */
3068
3743
  /***/ function(module, exports, __webpack_require__) {
3069
3744
 
3070
- /**
3071
- * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
3072
- * of an array-like value.
3073
- */
3074
- var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
3745
+ var baseIsEqual = __webpack_require__(80);
3075
3746
 
3076
3747
  /**
3077
- * Checks if `value` is a valid array-like index.
3748
+ * The base implementation of `_.isMatch` without support for callback
3749
+ * shorthands and `this` binding.
3078
3750
  *
3079
3751
  * @private
3080
- * @param {*} value The value to check.
3081
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
3082
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
3752
+ * @param {Object} object The object to inspect.
3753
+ * @param {Array} props The source property names to match.
3754
+ * @param {Array} values The source values to match.
3755
+ * @param {Array} strictCompareFlags Strict comparison flags for source values.
3756
+ * @param {Function} [customizer] The function to customize comparing objects.
3757
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3083
3758
  */
3084
- function isIndex(value, length) {
3085
- value = +value;
3086
- length = length == null ? MAX_SAFE_INTEGER : length;
3087
- return value > -1 && value % 1 == 0 && value < length;
3088
- }
3089
-
3090
- module.exports = isIndex;
3091
-
3092
-
3093
- /***/ },
3094
- /* 59 */
3095
- /***/ function(module, exports, __webpack_require__) {
3096
-
3097
- var baseToString = __webpack_require__(73);
3759
+ function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3760
+ var index = -1,
3761
+ length = props.length,
3762
+ noCustomizer = !customizer;
3098
3763
 
3099
- /**
3100
- * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
3101
- * In addition to special characters the forward slash is escaped to allow for
3102
- * easier `eval` use and `Function` compilation.
3103
- */
3104
- var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
3105
- reHasRegExpChars = RegExp(reRegExpChars.source);
3764
+ while (++index < length) {
3765
+ if ((noCustomizer && strictCompareFlags[index])
3766
+ ? values[index] !== object[props[index]]
3767
+ : !(props[index] in object)
3768
+ ) {
3769
+ return false;
3770
+ }
3771
+ }
3772
+ index = -1;
3773
+ while (++index < length) {
3774
+ var key = props[index],
3775
+ objValue = object[key],
3776
+ srcValue = values[index];
3106
3777
 
3107
- /**
3108
- * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
3109
- * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
3110
- *
3111
- * @static
3112
- * @memberOf _
3113
- * @category String
3114
- * @param {string} [string=''] The string to escape.
3115
- * @returns {string} Returns the escaped string.
3116
- * @example
3117
- *
3118
- * _.escapeRegExp('[lodash](https://lodash.com/)');
3119
- * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
3120
- */
3121
- function escapeRegExp(string) {
3122
- string = baseToString(string);
3123
- return (string && reHasRegExpChars.test(string))
3124
- ? string.replace(reRegExpChars, '\\$&')
3125
- : string;
3778
+ if (noCustomizer && strictCompareFlags[index]) {
3779
+ var result = objValue !== undefined || (key in object);
3780
+ } else {
3781
+ result = customizer ? customizer(objValue, srcValue, key) : undefined;
3782
+ if (result === undefined) {
3783
+ result = baseIsEqual(srcValue, objValue, customizer, true);
3784
+ }
3785
+ }
3786
+ if (!result) {
3787
+ return false;
3788
+ }
3789
+ }
3790
+ return true;
3126
3791
  }
3127
3792
 
3128
- module.exports = escapeRegExp;
3793
+ module.exports = baseIsMatch;
3129
3794
 
3130
3795
 
3131
3796
  /***/ },
3132
- /* 60 */
3797
+ /* 77 */
3133
3798
  /***/ function(module, exports, __webpack_require__) {
3134
3799
 
3135
- var createBaseFor = __webpack_require__(74);
3800
+ var isObject = __webpack_require__(25);
3136
3801
 
3137
3802
  /**
3138
- * The base implementation of `baseForIn` and `baseForOwn` which iterates
3139
- * over `object` properties returned by `keysFunc` invoking `iteratee` for
3140
- * each property. Iterator functions may exit iteration early by explicitly
3141
- * returning `false`.
3803
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3142
3804
  *
3143
3805
  * @private
3144
- * @param {Object} object The object to iterate over.
3145
- * @param {Function} iteratee The function invoked per iteration.
3146
- * @param {Function} keysFunc The function to get the keys of `object`.
3147
- * @returns {Object} Returns `object`.
3806
+ * @param {*} value The value to check.
3807
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
3808
+ * equality comparisons, else `false`.
3148
3809
  */
3149
- var baseFor = createBaseFor();
3810
+ function isStrictComparable(value) {
3811
+ return value === value && !isObject(value);
3812
+ }
3150
3813
 
3151
- module.exports = baseFor;
3814
+ module.exports = isStrictComparable;
3152
3815
 
3153
3816
 
3154
3817
  /***/ },
3155
- /* 61 */
3818
+ /* 78 */
3156
3819
  /***/ function(module, exports, __webpack_require__) {
3157
3820
 
3158
- var baseIsMatch = __webpack_require__(75),
3159
- constant = __webpack_require__(69),
3160
- isStrictComparable = __webpack_require__(76),
3161
- keys = __webpack_require__(17),
3162
- toObject = __webpack_require__(77);
3821
+ var isObject = __webpack_require__(25);
3163
3822
 
3164
3823
  /**
3165
- * The base implementation of `_.matches` which does not clone `source`.
3824
+ * Converts `value` to an object if it is not one.
3166
3825
  *
3167
3826
  * @private
3168
- * @param {Object} source The object of property values to match.
3169
- * @returns {Function} Returns the new function.
3827
+ * @param {*} value The value to process.
3828
+ * @returns {Object} Returns the object.
3170
3829
  */
3171
- function baseMatches(source) {
3172
- var props = keys(source),
3173
- length = props.length;
3174
-
3175
- if (!length) {
3176
- return constant(true);
3177
- }
3178
- if (length == 1) {
3179
- var key = props[0],
3180
- value = source[key];
3181
-
3182
- if (isStrictComparable(value)) {
3183
- return function(object) {
3184
- return object != null && object[key] === value &&
3185
- (typeof value != 'undefined' || (key in toObject(object)));
3186
- };
3187
- }
3188
- }
3189
- var values = Array(length),
3190
- strictCompareFlags = Array(length);
3191
-
3192
- while (length--) {
3193
- value = source[props[length]];
3194
- values[length] = value;
3195
- strictCompareFlags[length] = isStrictComparable(value);
3196
- }
3197
- return function(object) {
3198
- return object != null && baseIsMatch(toObject(object), props, values, strictCompareFlags);
3199
- };
3830
+ function toObject(value) {
3831
+ return isObject(value) ? value : Object(value);
3200
3832
  }
3201
3833
 
3202
- module.exports = baseMatches;
3834
+ module.exports = toObject;
3203
3835
 
3204
3836
 
3205
3837
  /***/ },
3206
- /* 62 */
3838
+ /* 79 */
3207
3839
  /***/ function(module, exports, __webpack_require__) {
3208
3840
 
3209
- var baseIsEqual = __webpack_require__(78),
3210
- isStrictComparable = __webpack_require__(76),
3211
- toObject = __webpack_require__(77);
3841
+ var toObject = __webpack_require__(78);
3212
3842
 
3213
3843
  /**
3214
- * The base implementation of `_.matchesProperty` which does not coerce `key`
3215
- * to a string.
3844
+ * The base implementation of `get` without support for string paths
3845
+ * and default values.
3216
3846
  *
3217
3847
  * @private
3218
- * @param {string} key The key of the property to get.
3219
- * @param {*} value The value to compare.
3220
- * @returns {Function} Returns the new function.
3848
+ * @param {Object} object The object to query.
3849
+ * @param {Array} path The path of the property to get.
3850
+ * @param {string} [pathKey] The key representation of path.
3851
+ * @returns {*} Returns the resolved value.
3221
3852
  */
3222
- function baseMatchesProperty(key, value) {
3223
- if (isStrictComparable(value)) {
3224
- return function(object) {
3225
- return object != null && object[key] === value &&
3226
- (typeof value != 'undefined' || (key in toObject(object)));
3227
- };
3853
+ function baseGet(object, path, pathKey) {
3854
+ if (object == null) {
3855
+ return;
3228
3856
  }
3229
- return function(object) {
3230
- return object != null && baseIsEqual(value, object[key], null, true);
3231
- };
3857
+ if (pathKey !== undefined && pathKey in toObject(object)) {
3858
+ path = [pathKey];
3859
+ }
3860
+ var index = -1,
3861
+ length = path.length;
3862
+
3863
+ while (object != null && ++index < length) {
3864
+ object = object[path[index]];
3865
+ }
3866
+ return (index && index == length) ? object : undefined;
3232
3867
  }
3233
3868
 
3234
- module.exports = baseMatchesProperty;
3869
+ module.exports = baseGet;
3235
3870
 
3236
3871
 
3237
3872
  /***/ },
3238
- /* 63 */
3873
+ /* 80 */
3239
3874
  /***/ function(module, exports, __webpack_require__) {
3240
3875
 
3876
+ var baseIsEqualDeep = __webpack_require__(92);
3877
+
3241
3878
  /**
3242
- * The base implementation of `_.property` which does not coerce `key` to a string.
3879
+ * The base implementation of `_.isEqual` without support for `this` binding
3880
+ * `customizer` functions.
3243
3881
  *
3244
3882
  * @private
3245
- * @param {string} key The key of the property to get.
3246
- * @returns {Function} Returns the new function.
3883
+ * @param {*} value The value to compare.
3884
+ * @param {*} other The other value to compare.
3885
+ * @param {Function} [customizer] The function to customize comparing values.
3886
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
3887
+ * @param {Array} [stackA] Tracks traversed `value` objects.
3888
+ * @param {Array} [stackB] Tracks traversed `other` objects.
3889
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3247
3890
  */
3248
- function baseProperty(key) {
3249
- return function(object) {
3250
- return object == null ? undefined : object[key];
3251
- };
3891
+ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3892
+ // Exit early for identical values.
3893
+ if (value === other) {
3894
+ return true;
3895
+ }
3896
+ var valType = typeof value,
3897
+ othType = typeof other;
3898
+
3899
+ // Exit early for unlike primitive values.
3900
+ if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3901
+ value == null || other == null) {
3902
+ // Return `false` unless both values are `NaN`.
3903
+ return value !== value && other !== other;
3904
+ }
3905
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
3252
3906
  }
3253
3907
 
3254
- module.exports = baseProperty;
3908
+ module.exports = baseIsEqual;
3255
3909
 
3256
3910
 
3257
3911
  /***/ },
3258
- /* 64 */
3912
+ /* 81 */
3259
3913
  /***/ function(module, exports, __webpack_require__) {
3260
3914
 
3261
- var isArguments = __webpack_require__(43),
3262
- isArray = __webpack_require__(44),
3263
- isIndex = __webpack_require__(58),
3264
- isLength = __webpack_require__(35),
3265
- isObject = __webpack_require__(25),
3266
- support = __webpack_require__(65);
3267
-
3268
- /** Used for native method references. */
3269
- var objectProto = Object.prototype;
3270
-
3271
- /** Used to check objects for own properties. */
3272
- var hasOwnProperty = objectProto.hasOwnProperty;
3273
-
3274
3915
  /**
3275
- * Creates an array of the own and inherited enumerable property names of `object`.
3276
- *
3277
- * **Note:** Non-object values are coerced to objects.
3916
+ * The base implementation of `_.slice` without an iteratee call guard.
3278
3917
  *
3279
- * @static
3280
- * @memberOf _
3281
- * @category Object
3282
- * @param {Object} object The object to inspect.
3283
- * @returns {Array} Returns the array of property names.
3284
- * @example
3285
- *
3286
- * function Foo() {
3287
- * this.a = 1;
3288
- * this.b = 2;
3289
- * }
3290
- *
3291
- * Foo.prototype.c = 3;
3292
- *
3293
- * _.keysIn(new Foo);
3294
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
3918
+ * @private
3919
+ * @param {Array} array The array to slice.
3920
+ * @param {number} [start=0] The start position.
3921
+ * @param {number} [end=array.length] The end position.
3922
+ * @returns {Array} Returns the slice of `array`.
3295
3923
  */
3296
- function keysIn(object) {
3297
- if (object == null) {
3298
- return [];
3924
+ function baseSlice(array, start, end) {
3925
+ var index = -1,
3926
+ length = array.length;
3927
+
3928
+ start = start == null ? 0 : (+start || 0);
3929
+ if (start < 0) {
3930
+ start = -start > length ? 0 : (length + start);
3299
3931
  }
3300
- if (!isObject(object)) {
3301
- object = Object(object);
3932
+ end = (end === undefined || end > length) ? length : (+end || 0);
3933
+ if (end < 0) {
3934
+ end += length;
3302
3935
  }
3303
- var length = object.length;
3304
- length = (length && isLength(length) &&
3305
- (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0;
3306
-
3307
- var Ctor = object.constructor,
3308
- index = -1,
3309
- isProto = typeof Ctor == 'function' && Ctor.prototype === object,
3310
- result = Array(length),
3311
- skipIndexes = length > 0;
3936
+ length = start > end ? 0 : ((end - start) >>> 0);
3937
+ start >>>= 0;
3312
3938
 
3939
+ var result = Array(length);
3313
3940
  while (++index < length) {
3314
- result[index] = (index + '');
3315
- }
3316
- for (var key in object) {
3317
- if (!(skipIndexes && isIndex(key, length)) &&
3318
- !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3319
- result.push(key);
3320
- }
3941
+ result[index] = array[index + start];
3321
3942
  }
3322
3943
  return result;
3323
3944
  }
3324
3945
 
3325
- module.exports = keysIn;
3946
+ module.exports = baseSlice;
3326
3947
 
3327
3948
 
3328
3949
  /***/ },
3329
- /* 65 */
3950
+ /* 82 */
3330
3951
  /***/ function(module, exports, __webpack_require__) {
3331
3952
 
3332
- /* WEBPACK VAR INJECTION */(function(global) {/** Used for native method references. */
3333
- var objectProto = Object.prototype;
3334
-
3335
- /** Used to detect DOM support. */
3336
- var document = (document = global.window) && document.document;
3953
+ var isArray = __webpack_require__(36),
3954
+ toObject = __webpack_require__(78);
3337
3955
 
3338
- /** Native method references. */
3339
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
3956
+ /** Used to match property names within property paths. */
3957
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
3958
+ reIsPlainProp = /^\w*$/;
3340
3959
 
3341
3960
  /**
3342
- * An object environment feature flags.
3961
+ * Checks if `value` is a property name and not a property path.
3343
3962
  *
3344
- * @static
3345
- * @memberOf _
3346
- * @type Object
3963
+ * @private
3964
+ * @param {*} value The value to check.
3965
+ * @param {Object} [object] The object to query keys on.
3966
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3347
3967
  */
3348
- var support = {};
3349
-
3350
- (function(x) {
3351
-
3352
- /**
3353
- * Detect if functions can be decompiled by `Function#toString`
3354
- * (all but Firefox OS certified apps, older Opera mobile browsers, and
3355
- * the PlayStation 3; forced `false` for Windows 8 apps).
3356
- *
3357
- * @memberOf _.support
3358
- * @type boolean
3359
- */
3360
- support.funcDecomp = /\bthis\b/.test(function() { return this; });
3361
-
3362
- /**
3363
- * Detect if `Function#name` is supported (all but IE).
3364
- *
3365
- * @memberOf _.support
3366
- * @type boolean
3367
- */
3368
- support.funcNames = typeof Function.name == 'string';
3369
-
3370
- /**
3371
- * Detect if the DOM is supported.
3372
- *
3373
- * @memberOf _.support
3374
- * @type boolean
3375
- */
3376
- try {
3377
- support.dom = document.createDocumentFragment().nodeType === 11;
3378
- } catch(e) {
3379
- support.dom = false;
3968
+ function isKey(value, object) {
3969
+ var type = typeof value;
3970
+ if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
3971
+ return true;
3380
3972
  }
3381
-
3382
- /**
3383
- * Detect if `arguments` object indexes are non-enumerable.
3384
- *
3385
- * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object
3386
- * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat
3387
- * `arguments` object indexes as non-enumerable and fail `hasOwnProperty`
3388
- * checks for indexes that exceed their function's formal parameters with
3389
- * associated values of `0`.
3390
- *
3391
- * @memberOf _.support
3392
- * @type boolean
3393
- */
3394
- try {
3395
- support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);
3396
- } catch(e) {
3397
- support.nonEnumArgs = true;
3973
+ if (isArray(value)) {
3974
+ return false;
3398
3975
  }
3399
- }(0, 0));
3400
-
3401
- module.exports = support;
3976
+ var result = !reIsDeepProp.test(value);
3977
+ return result || (object != null && value in toObject(object));
3978
+ }
3402
3979
 
3403
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3980
+ module.exports = isKey;
3981
+
3404
3982
 
3405
3983
  /***/ },
3406
- /* 66 */
3984
+ /* 83 */
3407
3985
  /***/ function(module, exports, __webpack_require__) {
3408
3986
 
3409
3987
  /**
3410
- * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
3411
- * without support for callback shorthands and `this` binding, which iterates
3412
- * over `collection` using the provided `eachFunc`.
3988
+ * Gets the last element of `array`.
3413
3989
  *
3414
- * @private
3415
- * @param {Array|Object|string} collection The collection to search.
3416
- * @param {Function} predicate The function invoked per iteration.
3417
- * @param {Function} eachFunc The function to iterate over `collection`.
3418
- * @param {boolean} [retKey] Specify returning the key of the found element
3419
- * instead of the element itself.
3420
- * @returns {*} Returns the found element or its key, else `undefined`.
3990
+ * @static
3991
+ * @memberOf _
3992
+ * @category Array
3993
+ * @param {Array} array The array to query.
3994
+ * @returns {*} Returns the last element of `array`.
3995
+ * @example
3996
+ *
3997
+ * _.last([1, 2, 3]);
3998
+ * // => 3
3421
3999
  */
3422
- function baseFind(collection, predicate, eachFunc, retKey) {
3423
- var result;
3424
- eachFunc(collection, function(value, key, collection) {
3425
- if (predicate(value, key, collection)) {
3426
- result = retKey ? key : value;
3427
- return false;
3428
- }
3429
- });
3430
- return result;
4000
+ function last(array) {
4001
+ var length = array ? array.length : 0;
4002
+ return length ? array[length - 1] : undefined;
3431
4003
  }
3432
4004
 
3433
- module.exports = baseFind;
4005
+ module.exports = last;
3434
4006
 
3435
4007
 
3436
4008
  /***/ },
3437
- /* 67 */
4009
+ /* 84 */
3438
4010
  /***/ function(module, exports, __webpack_require__) {
3439
4011
 
4012
+ var baseToString = __webpack_require__(86),
4013
+ isArray = __webpack_require__(36);
4014
+
4015
+ /** Used to match property names within property paths. */
4016
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
4017
+
4018
+ /** Used to match backslashes in property paths. */
4019
+ var reEscapeChar = /\\(\\)?/g;
4020
+
3440
4021
  /**
3441
- * Gets the index at which the first occurrence of `NaN` is found in `array`.
4022
+ * Converts `value` to property path array if it is not one.
3442
4023
  *
3443
4024
  * @private
3444
- * @param {Array} array The array to search.
3445
- * @param {number} fromIndex The index to search from.
3446
- * @param {boolean} [fromRight] Specify iterating from right to left.
3447
- * @returns {number} Returns the index of the matched `NaN`, else `-1`.
4025
+ * @param {*} value The value to process.
4026
+ * @returns {Array} Returns the property path array.
3448
4027
  */
3449
- function indexOfNaN(array, fromIndex, fromRight) {
3450
- var length = array.length,
3451
- index = fromIndex + (fromRight ? 0 : -1);
3452
-
3453
- while ((fromRight ? index-- : ++index < length)) {
3454
- var other = array[index];
3455
- if (other !== other) {
3456
- return index;
3457
- }
4028
+ function toPath(value) {
4029
+ if (isArray(value)) {
4030
+ return value;
3458
4031
  }
3459
- return -1;
4032
+ var result = [];
4033
+ baseToString(value).replace(rePropName, function(match, number, quote, string) {
4034
+ result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
4035
+ });
4036
+ return result;
3460
4037
  }
3461
4038
 
3462
- module.exports = indexOfNaN;
4039
+ module.exports = toPath;
3463
4040
 
3464
4041
 
3465
4042
  /***/ },
3466
- /* 68 */
4043
+ /* 85 */
3467
4044
  /***/ function(module, exports, __webpack_require__) {
3468
4045
 
3469
- /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(79),
3470
- isNative = __webpack_require__(30);
3471
-
3472
- /** Native method references. */
3473
- var Set = isNative(Set = global.Set) && Set;
3474
-
3475
- /* Native method references for those with the same name as other `lodash` methods. */
3476
- var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;
4046
+ var baseGet = __webpack_require__(79),
4047
+ toPath = __webpack_require__(84);
3477
4048
 
3478
4049
  /**
3479
- *
3480
- * Creates a cache object to store unique values.
4050
+ * A specialized version of `baseProperty` which supports deep paths.
3481
4051
  *
3482
4052
  * @private
3483
- * @param {Array} [values] The values to cache.
4053
+ * @param {Array|string} path The path of the property to get.
4054
+ * @returns {Function} Returns the new function.
3484
4055
  */
3485
- function SetCache(values) {
3486
- var length = values ? values.length : 0;
3487
-
3488
- this.data = { 'hash': nativeCreate(null), 'set': new Set };
3489
- while (length--) {
3490
- this.push(values[length]);
3491
- }
3492
- }
3493
-
3494
- // Add functions to the `Set` cache.
3495
- SetCache.prototype.push = cachePush;
3496
-
3497
- module.exports = SetCache;
4056
+ function basePropertyDeep(path) {
4057
+ var pathKey = (path + '');
4058
+ path = toPath(path);
4059
+ return function(object) {
4060
+ return baseGet(object, path, pathKey);
4061
+ };
4062
+ }
3498
4063
 
3499
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4064
+ module.exports = basePropertyDeep;
4065
+
3500
4066
 
3501
4067
  /***/ },
3502
- /* 69 */
4068
+ /* 86 */
3503
4069
  /***/ function(module, exports, __webpack_require__) {
3504
4070
 
3505
4071
  /**
3506
- * Creates a function that returns `value`.
3507
- *
3508
- * @static
3509
- * @memberOf _
3510
- * @category Utility
3511
- * @param {*} value The value to return from the new function.
3512
- * @returns {Function} Returns the new function.
3513
- * @example
3514
- *
3515
- * var object = { 'user': 'fred' };
3516
- * var getter = _.constant(object);
4072
+ * Converts `value` to a string if it is not one. An empty string is returned
4073
+ * for `null` or `undefined` values.
3517
4074
  *
3518
- * getter() === object;
3519
- * // => true
4075
+ * @private
4076
+ * @param {*} value The value to process.
4077
+ * @returns {string} Returns the string.
3520
4078
  */
3521
- function constant(value) {
3522
- return function() {
4079
+ function baseToString(value) {
4080
+ if (typeof value == 'string') {
3523
4081
  return value;
3524
- };
4082
+ }
4083
+ return value == null ? '' : (value + '');
3525
4084
  }
3526
4085
 
3527
- module.exports = constant;
4086
+ module.exports = baseToString;
3528
4087
 
3529
4088
 
3530
4089
  /***/ },
3531
- /* 70 */
4090
+ /* 87 */
3532
4091
  /***/ function(module, exports, __webpack_require__) {
3533
4092
 
3534
- var isLength = __webpack_require__(35),
3535
- toObject = __webpack_require__(77);
3536
-
3537
4093
  /**
3538
- * Creates a `baseEach` or `baseEachRight` function.
4094
+ * Copies properties of `source` to `object`.
3539
4095
  *
3540
4096
  * @private
3541
- * @param {Function} eachFunc The function to iterate over a collection.
3542
- * @param {boolean} [fromRight] Specify iterating from right to left.
3543
- * @returns {Function} Returns the new base function.
4097
+ * @param {Object} source The object to copy properties from.
4098
+ * @param {Array} props The property names to copy.
4099
+ * @param {Object} [object={}] The object to copy properties to.
4100
+ * @returns {Object} Returns `object`.
3544
4101
  */
3545
- function createBaseEach(eachFunc, fromRight) {
3546
- return function(collection, iteratee) {
3547
- var length = collection ? collection.length : 0;
3548
- if (!isLength(length)) {
3549
- return eachFunc(collection, iteratee);
3550
- }
3551
- var index = fromRight ? length : -1,
3552
- iterable = toObject(collection);
4102
+ function baseCopy(source, props, object) {
4103
+ object || (object = {});
3553
4104
 
3554
- while ((fromRight ? index-- : ++index < length)) {
3555
- if (iteratee(iterable[index], index, iterable) === false) {
3556
- break;
3557
- }
3558
- }
3559
- return collection;
3560
- };
4105
+ var index = -1,
4106
+ length = props.length;
4107
+
4108
+ while (++index < length) {
4109
+ var key = props[index];
4110
+ object[key] = source[key];
4111
+ }
4112
+ return object;
3561
4113
  }
3562
4114
 
3563
- module.exports = createBaseEach;
4115
+ module.exports = baseCopy;
3564
4116
 
3565
4117
 
3566
4118
  /***/ },
3567
- /* 71 */
4119
+ /* 88 */
3568
4120
  /***/ function(module, exports, __webpack_require__) {
3569
4121
 
4122
+ var constant = __webpack_require__(75),
4123
+ isNative = __webpack_require__(38),
4124
+ toObject = __webpack_require__(78);
4125
+
4126
+ /** Native method references. */
4127
+ var getOwnPropertySymbols = isNative(getOwnPropertySymbols = Object.getOwnPropertySymbols) && getOwnPropertySymbols;
4128
+
3570
4129
  /**
3571
- * The base implementation of `_.reduce` and `_.reduceRight` without support
3572
- * for callback shorthands and `this` binding, which iterates over `collection`
3573
- * using the provided `eachFunc`.
4130
+ * Creates an array of the own symbols of `object`.
3574
4131
  *
3575
4132
  * @private
3576
- * @param {Array|Object|string} collection The collection to iterate over.
3577
- * @param {Function} iteratee The function invoked per iteration.
3578
- * @param {*} accumulator The initial value.
3579
- * @param {boolean} initFromCollection Specify using the first or last element
3580
- * of `collection` as the initial value.
3581
- * @param {Function} eachFunc The function to iterate over `collection`.
3582
- * @returns {*} Returns the accumulated value.
4133
+ * @param {Object} object The object to query.
4134
+ * @returns {Array} Returns the array of symbols.
3583
4135
  */
3584
- function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
3585
- eachFunc(collection, function(value, index, collection) {
3586
- accumulator = initFromCollection
3587
- ? (initFromCollection = false, value)
3588
- : iteratee(accumulator, value, index, collection);
3589
- });
3590
- return accumulator;
3591
- }
4136
+ var getSymbols = !getOwnPropertySymbols ? constant([]) : function(object) {
4137
+ return getOwnPropertySymbols(toObject(object));
4138
+ };
3592
4139
 
3593
- module.exports = baseReduce;
4140
+ module.exports = getSymbols;
3594
4141
 
3595
4142
 
3596
4143
  /***/ },
3597
- /* 72 */
4144
+ /* 89 */
3598
4145
  /***/ function(module, exports, __webpack_require__) {
3599
4146
 
3600
- /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(69),
3601
- isNative = __webpack_require__(30);
4147
+ /* WEBPACK VAR INJECTION */(function(global) {var constant = __webpack_require__(75),
4148
+ isNative = __webpack_require__(38);
3602
4149
 
3603
4150
  /** Native method references. */
3604
4151
  var ArrayBuffer = isNative(ArrayBuffer = global.ArrayBuffer) && ArrayBuffer,
@@ -3656,32 +4203,10 @@ return /******/ (function(modules) { // webpackBootstrap
3656
4203
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3657
4204
 
3658
4205
  /***/ },
3659
- /* 73 */
3660
- /***/ function(module, exports, __webpack_require__) {
3661
-
3662
- /**
3663
- * Converts `value` to a string if it is not one. An empty string is returned
3664
- * for `null` or `undefined` values.
3665
- *
3666
- * @private
3667
- * @param {*} value The value to process.
3668
- * @returns {string} Returns the string.
3669
- */
3670
- function baseToString(value) {
3671
- if (typeof value == 'string') {
3672
- return value;
3673
- }
3674
- return value == null ? '' : (value + '');
3675
- }
3676
-
3677
- module.exports = baseToString;
3678
-
3679
-
3680
- /***/ },
3681
- /* 74 */
4206
+ /* 90 */
3682
4207
  /***/ function(module, exports, __webpack_require__) {
3683
4208
 
3684
- var toObject = __webpack_require__(77);
4209
+ var toObject = __webpack_require__(78);
3685
4210
 
3686
4211
  /**
3687
4212
  * Creates a base function for `_.forIn` or `_.forInRight`.
@@ -3711,143 +4236,7 @@ return /******/ (function(modules) { // webpackBootstrap
3711
4236
 
3712
4237
 
3713
4238
  /***/ },
3714
- /* 75 */
3715
- /***/ function(module, exports, __webpack_require__) {
3716
-
3717
- var baseIsEqual = __webpack_require__(78);
3718
-
3719
- /**
3720
- * The base implementation of `_.isMatch` without support for callback
3721
- * shorthands and `this` binding.
3722
- *
3723
- * @private
3724
- * @param {Object} object The object to inspect.
3725
- * @param {Array} props The source property names to match.
3726
- * @param {Array} values The source values to match.
3727
- * @param {Array} strictCompareFlags Strict comparison flags for source values.
3728
- * @param {Function} [customizer] The function to customize comparing objects.
3729
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3730
- */
3731
- function baseIsMatch(object, props, values, strictCompareFlags, customizer) {
3732
- var index = -1,
3733
- length = props.length,
3734
- noCustomizer = !customizer;
3735
-
3736
- while (++index < length) {
3737
- if ((noCustomizer && strictCompareFlags[index])
3738
- ? values[index] !== object[props[index]]
3739
- : !(props[index] in object)
3740
- ) {
3741
- return false;
3742
- }
3743
- }
3744
- index = -1;
3745
- while (++index < length) {
3746
- var key = props[index],
3747
- objValue = object[key],
3748
- srcValue = values[index];
3749
-
3750
- if (noCustomizer && strictCompareFlags[index]) {
3751
- var result = typeof objValue != 'undefined' || (key in object);
3752
- } else {
3753
- result = customizer ? customizer(objValue, srcValue, key) : undefined;
3754
- if (typeof result == 'undefined') {
3755
- result = baseIsEqual(srcValue, objValue, customizer, true);
3756
- }
3757
- }
3758
- if (!result) {
3759
- return false;
3760
- }
3761
- }
3762
- return true;
3763
- }
3764
-
3765
- module.exports = baseIsMatch;
3766
-
3767
-
3768
- /***/ },
3769
- /* 76 */
3770
- /***/ function(module, exports, __webpack_require__) {
3771
-
3772
- var isObject = __webpack_require__(25);
3773
-
3774
- /**
3775
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
3776
- *
3777
- * @private
3778
- * @param {*} value The value to check.
3779
- * @returns {boolean} Returns `true` if `value` if suitable for strict
3780
- * equality comparisons, else `false`.
3781
- */
3782
- function isStrictComparable(value) {
3783
- return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value));
3784
- }
3785
-
3786
- module.exports = isStrictComparable;
3787
-
3788
-
3789
- /***/ },
3790
- /* 77 */
3791
- /***/ function(module, exports, __webpack_require__) {
3792
-
3793
- var isObject = __webpack_require__(25);
3794
-
3795
- /**
3796
- * Converts `value` to an object if it is not one.
3797
- *
3798
- * @private
3799
- * @param {*} value The value to process.
3800
- * @returns {Object} Returns the object.
3801
- */
3802
- function toObject(value) {
3803
- return isObject(value) ? value : Object(value);
3804
- }
3805
-
3806
- module.exports = toObject;
3807
-
3808
-
3809
- /***/ },
3810
- /* 78 */
3811
- /***/ function(module, exports, __webpack_require__) {
3812
-
3813
- var baseIsEqualDeep = __webpack_require__(80);
3814
-
3815
- /**
3816
- * The base implementation of `_.isEqual` without support for `this` binding
3817
- * `customizer` functions.
3818
- *
3819
- * @private
3820
- * @param {*} value The value to compare.
3821
- * @param {*} other The other value to compare.
3822
- * @param {Function} [customizer] The function to customize comparing values.
3823
- * @param {boolean} [isLoose] Specify performing partial comparisons.
3824
- * @param {Array} [stackA] Tracks traversed `value` objects.
3825
- * @param {Array} [stackB] Tracks traversed `other` objects.
3826
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3827
- */
3828
- function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
3829
- // Exit early for identical values.
3830
- if (value === other) {
3831
- // Treat `+0` vs. `-0` as not equal.
3832
- return value !== 0 || (1 / value == 1 / other);
3833
- }
3834
- var valType = typeof value,
3835
- othType = typeof other;
3836
-
3837
- // Exit early for unlike primitive values.
3838
- if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') ||
3839
- value == null || other == null) {
3840
- // Return `false` unless both values are `NaN`.
3841
- return value !== value && other !== other;
3842
- }
3843
- return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
3844
- }
3845
-
3846
- module.exports = baseIsEqual;
3847
-
3848
-
3849
- /***/ },
3850
- /* 79 */
4239
+ /* 91 */
3851
4240
  /***/ function(module, exports, __webpack_require__) {
3852
4241
 
3853
4242
  var isObject = __webpack_require__(25);
@@ -3873,19 +4262,18 @@ return /******/ (function(modules) { // webpackBootstrap
3873
4262
 
3874
4263
 
3875
4264
  /***/ },
3876
- /* 80 */
4265
+ /* 92 */
3877
4266
  /***/ function(module, exports, __webpack_require__) {
3878
4267
 
3879
- var equalArrays = __webpack_require__(81),
3880
- equalByTag = __webpack_require__(82),
3881
- equalObjects = __webpack_require__(83),
3882
- isArray = __webpack_require__(44),
3883
- isTypedArray = __webpack_require__(84);
4268
+ var equalArrays = __webpack_require__(93),
4269
+ equalByTag = __webpack_require__(94),
4270
+ equalObjects = __webpack_require__(95),
4271
+ isArray = __webpack_require__(36),
4272
+ isTypedArray = __webpack_require__(96);
3884
4273
 
3885
4274
  /** `Object#toString` result references. */
3886
4275
  var argsTag = '[object Arguments]',
3887
4276
  arrayTag = '[object Array]',
3888
- funcTag = '[object Function]',
3889
4277
  objectTag = '[object Object]';
3890
4278
 
3891
4279
  /** Used for native method references. */
@@ -3937,27 +4325,23 @@ return /******/ (function(modules) { // webpackBootstrap
3937
4325
  othIsArr = isTypedArray(other);
3938
4326
  }
3939
4327
  }
3940
- var objIsObj = (objTag == objectTag || (isLoose && objTag == funcTag)),
3941
- othIsObj = (othTag == objectTag || (isLoose && othTag == funcTag)),
4328
+ var objIsObj = objTag == objectTag,
4329
+ othIsObj = othTag == objectTag,
3942
4330
  isSameTag = objTag == othTag;
3943
4331
 
3944
4332
  if (isSameTag && !(objIsArr || objIsObj)) {
3945
4333
  return equalByTag(object, other, objTag);
3946
4334
  }
3947
- if (isLoose) {
3948
- if (!isSameTag && !(objIsObj && othIsObj)) {
3949
- return false;
3950
- }
3951
- } else {
4335
+ if (!isLoose) {
3952
4336
  var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
3953
4337
  othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
3954
4338
 
3955
4339
  if (valWrapped || othWrapped) {
3956
4340
  return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
3957
4341
  }
3958
- if (!isSameTag) {
3959
- return false;
3960
- }
4342
+ }
4343
+ if (!isSameTag) {
4344
+ return false;
3961
4345
  }
3962
4346
  // Assume cyclic values are equal.
3963
4347
  // For more information on detecting circular references see https://es5.github.io/#JO.
@@ -3986,7 +4370,7 @@ return /******/ (function(modules) { // webpackBootstrap
3986
4370
 
3987
4371
 
3988
4372
  /***/ },
3989
- /* 81 */
4373
+ /* 93 */
3990
4374
  /***/ function(module, exports, __webpack_require__) {
3991
4375
 
3992
4376
  /**
@@ -4023,7 +4407,7 @@ return /******/ (function(modules) { // webpackBootstrap
4023
4407
  ? customizer(othValue, arrValue, index)
4024
4408
  : customizer(arrValue, othValue, index);
4025
4409
  }
4026
- if (typeof result == 'undefined') {
4410
+ if (result === undefined) {
4027
4411
  // Recursively compare arrays (susceptible to call stack limits).
4028
4412
  if (isLoose) {
4029
4413
  var othIndex = othLength;
@@ -4046,7 +4430,7 @@ return /******/ (function(modules) { // webpackBootstrap
4046
4430
 
4047
4431
 
4048
4432
  /***/ },
4049
- /* 82 */
4433
+ /* 94 */
4050
4434
  /***/ function(module, exports, __webpack_require__) {
4051
4435
 
4052
4436
  /** `Object#toString` result references. */
@@ -4085,8 +4469,7 @@ return /******/ (function(modules) { // webpackBootstrap
4085
4469
  // Treat `NaN` vs. `NaN` as equal.
4086
4470
  return (object != +object)
4087
4471
  ? other != +other
4088
- // But, treat `-0` vs. `+0` as not equal.
4089
- : (object == 0 ? ((1 / object) == (1 / other)) : object == +other);
4472
+ : object == +other;
4090
4473
 
4091
4474
  case regexpTag:
4092
4475
  case stringTag:
@@ -4101,10 +4484,10 @@ return /******/ (function(modules) { // webpackBootstrap
4101
4484
 
4102
4485
 
4103
4486
  /***/ },
4104
- /* 83 */
4487
+ /* 95 */
4105
4488
  /***/ function(module, exports, __webpack_require__) {
4106
4489
 
4107
- var keys = __webpack_require__(17);
4490
+ var keys = __webpack_require__(21);
4108
4491
 
4109
4492
  /** Used for native method references. */
4110
4493
  var objectProto = Object.prototype;
@@ -4152,7 +4535,7 @@ return /******/ (function(modules) { // webpackBootstrap
4152
4535
  ? customizer(othValue, objValue, key)
4153
4536
  : customizer(objValue, othValue, key);
4154
4537
  }
4155
- if (typeof result == 'undefined') {
4538
+ if (result === undefined) {
4156
4539
  // Recursively compare objects (susceptible to call stack limits).
4157
4540
  result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB);
4158
4541
  }
@@ -4181,11 +4564,11 @@ return /******/ (function(modules) { // webpackBootstrap
4181
4564
 
4182
4565
 
4183
4566
  /***/ },
4184
- /* 84 */
4567
+ /* 96 */
4185
4568
  /***/ function(module, exports, __webpack_require__) {
4186
4569
 
4187
- var isLength = __webpack_require__(35),
4188
- isObjectLike = __webpack_require__(31);
4570
+ var isLength = __webpack_require__(32),
4571
+ isObjectLike = __webpack_require__(39);
4189
4572
 
4190
4573
  /** `Object#toString` result references. */
4191
4574
  var argsTag = '[object Arguments]',