lodash-rails 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -18,6 +18,6 @@ Add the necessary library to `app/assets/javascripts/application.js`:
18
18
 
19
19
  ## What's included?
20
20
 
21
- * Lo-Dash 0.9.1 (lodash, lodash.min)
21
+ * Lo-Dash 0.9.2 (lodash, lodash.min)
22
22
 
23
23
  Copyright Richard Hubers, released under the MIT License.
@@ -1,5 +1,5 @@
1
1
  module LoDash
2
2
  module Rails
3
- VERSION = "0.9.1"
3
+ VERSION = "0.9.2"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lo-Dash v0.9.1 <http://lodash.com>
2
+ * Lo-Dash v0.9.2 <http://lodash.com>
3
3
  * (c) 2012 John-David Dalton <http://allyoucanleet.com/>
4
4
  * Based on Underscore.js 1.4.2 <http://underscorejs.org>
5
5
  * (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
@@ -18,13 +18,14 @@
18
18
 
19
19
  /** Used for array and object method references */
20
20
  var arrayRef = [],
21
- objectRef = {};
21
+ // avoid a Closure Compiler bug by creatively creating an object
22
+ objectRef = new function(){};
22
23
 
23
24
  /** Used to generate unique IDs */
24
25
  var idCounter = 0;
25
26
 
26
27
  /** Used internally to indicate various things */
27
- var indicatorObject = {};
28
+ var indicatorObject = objectRef;
28
29
 
29
30
  /** Used by `cachedContains` as the default size when optimizations are enabled for large arrays */
30
31
  var largeArraySize = 30;
@@ -32,7 +33,7 @@
32
33
  /** Used to restore the original `_` reference in `noConflict` */
33
34
  var oldDash = window._;
34
35
 
35
- /** Used to detect delimiter values that should be processed by `tokenizeEvaluate` */
36
+ /** Used to detect template delimiter values that require a with-statement */
36
37
  var reComplexDelimiter = /[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/;
37
38
 
38
39
  /** Used to match HTML entities */
@@ -56,7 +57,16 @@
56
57
  .replace(/valueOf|for [^\]]+/g, '.+?') + '$'
57
58
  );
58
59
 
59
- /** Used to ensure capturing order and avoid matches for undefined delimiters */
60
+ /**
61
+ * Used to match ES6 template delimiters
62
+ * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6
63
+ */
64
+ var reEsTemplate = /\$\{((?:(?=\\?)\\?[\s\S])*?)}/g;
65
+
66
+ /** Used to match "interpolate" template delimiters */
67
+ var reInterpolate = /<%=([\s\S]+?)%>/g;
68
+
69
+ /** Used to ensure capturing order of template delimiters */
60
70
  var reNoMatch = /($^)/;
61
71
 
62
72
  /** Used to match HTML characters */
@@ -277,7 +287,7 @@
277
287
  * @memberOf _.templateSettings
278
288
  * @type RegExp
279
289
  */
280
- 'interpolate': /<%=([\s\S]+?)%>/g,
290
+ 'interpolate': reInterpolate,
281
291
 
282
292
  /**
283
293
  * Used to reference the data object in the template text.
@@ -318,7 +328,7 @@
318
328
 
319
329
  // add support for accessing string characters by index if needed
320
330
  ' <% if (noCharByIndex) { %>\n' +
321
- ' if (toString.call(iteratee) == stringClass) {\n' +
331
+ ' if (isString(iteratee)) {\n' +
322
332
  ' iteratee = iteratee.split(\'\')\n' +
323
333
  ' }' +
324
334
  ' <% } %>\n' +
@@ -436,13 +446,13 @@
436
446
  /*--------------------------------------------------------------------------*/
437
447
 
438
448
  /**
439
- * Creates a function optimized for searching large arrays for a given `value`,
449
+ * Creates a function optimized to search large arrays for a given `value`,
440
450
  * starting at `fromIndex`, using strict equality for comparisons, i.e. `===`.
441
451
  *
442
452
  * @private
443
453
  * @param {Array} array The array to search.
444
454
  * @param {Mixed} value The value to search for.
445
- * @param {Number} [fromIndex=0] The index to start searching from.
455
+ * @param {Number} [fromIndex=0] The index to search from.
446
456
  * @param {Number} [largeSize=30] The length at which an array is considered large.
447
457
  * @returns {Boolean} Returns `true` if `value` is found, else `false`.
448
458
  */
@@ -450,14 +460,14 @@
450
460
  fromIndex || (fromIndex = 0);
451
461
 
452
462
  var length = array.length,
453
- isLarge = (length - fromIndex) >= (largeSize || largeArraySize),
454
- cache = isLarge ? {} : array;
463
+ isLarge = (length - fromIndex) >= (largeSize || largeArraySize);
455
464
 
456
465
  if (isLarge) {
457
- // init value cache
458
- var index = fromIndex - 1;
466
+ var cache = {},
467
+ index = fromIndex - 1;
468
+
459
469
  while (++index < length) {
460
- // manually coerce `value` to string because `hasOwnProperty`, in some
470
+ // manually coerce `value` to a string because `hasOwnProperty`, in some
461
471
  // older versions of Firefox, coerces objects incorrectly
462
472
  var key = array[index] + '';
463
473
  (hasOwnProperty.call(cache, key) ? cache[key] : (cache[key] = [])).push(array[index]);
@@ -468,10 +478,22 @@
468
478
  var key = value + '';
469
479
  return hasOwnProperty.call(cache, key) && indexOf(cache[key], value) > -1;
470
480
  }
471
- return indexOf(cache, value, fromIndex) > -1;
481
+ return indexOf(array, value, fromIndex) > -1;
472
482
  }
473
483
  }
474
484
 
485
+ /**
486
+ * Used by `_.max` and `_.min` as the default `callback` when a given
487
+ * `collection` is a string value.
488
+ *
489
+ * @private
490
+ * @param {String} value The character to inspect.
491
+ * @returns {Number} Returns the code unit of given character.
492
+ */
493
+ function charAtCallback(value) {
494
+ return value.charCodeAt(0);
495
+ }
496
+
475
497
  /**
476
498
  * Used by `sortBy` to compare transformed `collection` values, stable sorting
477
499
  * them in ascending order.
@@ -544,7 +566,7 @@
544
566
  // mimic the constructor's `return` behavior
545
567
  // http://es5.github.com/#x13.2.2
546
568
  var result = func.apply(thisBinding, args);
547
- return result && objectTypes[typeof result]
569
+ return isObject(result)
548
570
  ? result
549
571
  : thisBinding
550
572
  }
@@ -619,14 +641,14 @@
619
641
 
620
642
  // create the function factory
621
643
  var factory = Function(
622
- 'createCallback, hasOwnProperty, isArguments, objectTypes, nativeKeys, ' +
623
- 'propertyIsEnumerable, stringClass, toString',
644
+ 'createCallback, hasOwnProperty, isArguments, isString, objectTypes, ' +
645
+ 'nativeKeys, propertyIsEnumerable',
624
646
  'return function(' + args + ') {\n' + iteratorTemplate(data) + '\n}'
625
647
  );
626
648
  // return the compiled function
627
649
  return factory(
628
- createCallback, hasOwnProperty, isArguments, objectTypes, nativeKeys,
629
- propertyIsEnumerable, stringClass, toString
650
+ createCallback, hasOwnProperty, isArguments, isString, objectTypes,
651
+ nativeKeys, propertyIsEnumerable
630
652
  );
631
653
  }
632
654
 
@@ -879,7 +901,7 @@
879
901
  deep = false;
880
902
  }
881
903
  // inspect [[Class]]
882
- var isObj = objectTypes[typeof value];
904
+ var isObj = isObject(value);
883
905
  if (isObj) {
884
906
  // don't clone `arguments` objects, functions, or non-object Objects
885
907
  var className = toString.call(value);
@@ -1564,15 +1586,10 @@
1564
1586
  * // => ['one', 'two', 'three'] (order is not guaranteed)
1565
1587
  */
1566
1588
  var keys = !nativeKeys ? shimKeys : function(object) {
1567
- var type = typeof object;
1568
-
1569
1589
  // avoid iterating over the `prototype` property
1570
- if (type == 'function' && propertyIsEnumerable.call(object, 'prototype')) {
1571
- return shimKeys(object);
1572
- }
1573
- return object && objectTypes[type]
1574
- ? nativeKeys(object)
1575
- : [];
1590
+ return typeof object == 'function' && propertyIsEnumerable.call(object, 'prototype')
1591
+ ? shimKeys(object)
1592
+ : (isObject(object) ? nativeKeys(object) : []);
1576
1593
  };
1577
1594
 
1578
1595
  /**
@@ -1613,7 +1630,7 @@
1613
1630
  stackA = args[3],
1614
1631
  stackB = args[4];
1615
1632
 
1616
- if (indicator !== indicatorObject) {
1633
+ if (indicator !== objectRef) {
1617
1634
  stackA = [];
1618
1635
  stackB = [];
1619
1636
  length = args.length;
@@ -1641,7 +1658,7 @@
1641
1658
  : (isPlainObject(value) ? value : {})
1642
1659
  );
1643
1660
  // recursively merge objects and arrays (susceptible to call stack limits)
1644
- object[key] = merge(value, source, indicatorObject, stackA, stackB);
1661
+ object[key] = merge(value, source, objectRef, stackA, stackB);
1645
1662
  }
1646
1663
  } else if (source != null) {
1647
1664
  object[key] = source;
@@ -1792,7 +1809,8 @@
1792
1809
 
1793
1810
  /**
1794
1811
  * Checks if a given `target` element is present in a `collection` using strict
1795
- * equality for comparisons, i.e. `===`.
1812
+ * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used
1813
+ * as the offset from the end of the collection.
1796
1814
  *
1797
1815
  * @static
1798
1816
  * @memberOf _
@@ -1800,28 +1818,35 @@
1800
1818
  * @category Collections
1801
1819
  * @param {Array|Object|String} collection The collection to iterate over.
1802
1820
  * @param {Mixed} target The value to check for.
1821
+ * @param {Number} [fromIndex=0] The index to search from.
1803
1822
  * @returns {Boolean} Returns `true` if the `target` element is found, else `false`.
1804
1823
  * @example
1805
1824
  *
1806
- * _.contains([1, 2, 3], 3);
1825
+ * _.contains([1, 2, 3], 1);
1807
1826
  * // => true
1808
1827
  *
1828
+ * _.contains([1, 2, 3], 1, 2);
1829
+ * // => false
1830
+ *
1809
1831
  * _.contains({ 'name': 'moe', 'age': 40 }, 'moe');
1810
1832
  * // => true
1811
1833
  *
1812
1834
  * _.contains('curly', 'ur');
1813
1835
  * // => true
1814
1836
  */
1815
- function contains(collection, target) {
1816
- var length = collection ? collection.length : 0;
1837
+ function contains(collection, target, fromIndex) {
1838
+ var index = -1,
1839
+ length = collection ? collection.length : 0;
1840
+
1841
+ fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0;
1817
1842
  if (typeof length == 'number') {
1818
- return (toString.call(collection) == stringClass
1819
- ? collection.indexOf(target)
1820
- : indexOf(collection, target)
1843
+ return (isString(collection)
1844
+ ? collection.indexOf(target, fromIndex)
1845
+ : indexOf(collection, target, fromIndex)
1821
1846
  ) > -1;
1822
1847
  }
1823
1848
  return some(collection, function(value) {
1824
- return value === target;
1849
+ return ++index >= fromIndex && value === target;
1825
1850
  });
1826
1851
  }
1827
1852
 
@@ -1883,9 +1908,21 @@
1883
1908
  function every(collection, callback, thisArg) {
1884
1909
  var result = true;
1885
1910
  callback = createCallback(callback, thisArg);
1886
- forEach(collection, function(value, index, collection) {
1887
- return (result = !!callback(value, index, collection));
1888
- });
1911
+
1912
+ if (isArray(collection)) {
1913
+ var index = -1,
1914
+ length = collection.length;
1915
+
1916
+ while (++index < length) {
1917
+ if (!(result = !!callback(collection[index], index, collection))) {
1918
+ break;
1919
+ }
1920
+ }
1921
+ } else {
1922
+ forEach(collection, function(value, index, collection) {
1923
+ return (result = !!callback(value, index, collection));
1924
+ });
1925
+ }
1889
1926
  return result;
1890
1927
  }
1891
1928
 
@@ -1941,8 +1978,11 @@
1941
1978
  function find(collection, callback, thisArg) {
1942
1979
  var result;
1943
1980
  callback = createCallback(callback, thisArg);
1944
- some(collection, function(value, index, collection) {
1945
- return callback(value, index, collection) && (result = value, true);
1981
+ forEach(collection, function(value, index, collection) {
1982
+ if (callback(value, index, collection)) {
1983
+ result = value;
1984
+ return false;
1985
+ }
1946
1986
  });
1947
1987
  return result;
1948
1988
  }
@@ -2109,8 +2149,11 @@
2109
2149
  length = collection ? collection.length : 0,
2110
2150
  result = computed;
2111
2151
 
2112
- if (callback || typeof length != 'number') {
2113
- callback = createCallback(callback, thisArg);
2152
+ if (callback || !isArray(collection)) {
2153
+ callback = !callback && isString(collection)
2154
+ ? charAtCallback
2155
+ : createCallback(callback, thisArg);
2156
+
2114
2157
  forEach(collection, function(value, index, collection) {
2115
2158
  var current = callback(value, index, collection);
2116
2159
  if (current > computed) {
@@ -2152,8 +2195,11 @@
2152
2195
  length = collection ? collection.length : 0,
2153
2196
  result = computed;
2154
2197
 
2155
- if (callback || typeof length != 'number') {
2156
- callback = createCallback(callback, thisArg);
2198
+ if (callback || !isArray(collection)) {
2199
+ callback = !callback && isString(collection)
2200
+ ? charAtCallback
2201
+ : createCallback(callback, thisArg);
2202
+
2157
2203
  forEach(collection, function(value, index, collection) {
2158
2204
  var current = callback(value, index, collection);
2159
2205
  if (current < computed) {
@@ -2257,7 +2303,7 @@
2257
2303
  if (typeof length != 'number') {
2258
2304
  var props = keys(collection);
2259
2305
  length = props.length;
2260
- } else if (noCharByIndex && toString.call(collection) == stringClass) {
2306
+ } else if (noCharByIndex && isString(collection)) {
2261
2307
  iteratee = collection.split('');
2262
2308
  }
2263
2309
  forEach(collection, function(value, index, collection) {
@@ -2367,9 +2413,21 @@
2367
2413
  function some(collection, callback, thisArg) {
2368
2414
  var result;
2369
2415
  callback = createCallback(callback, thisArg);
2370
- forEach(collection, function(value, index, collection) {
2371
- return !(result = callback(value, index, collection));
2372
- });
2416
+
2417
+ if (isArray(collection)) {
2418
+ var index = -1,
2419
+ length = collection.length;
2420
+
2421
+ while (++index < length) {
2422
+ if (result = callback(collection[index], index, collection)) {
2423
+ break;
2424
+ }
2425
+ }
2426
+ } else {
2427
+ forEach(collection, function(value, index, collection) {
2428
+ return !(result = callback(value, index, collection));
2429
+ });
2430
+ }
2373
2431
  return !!result;
2374
2432
  }
2375
2433
 
@@ -2432,7 +2490,7 @@
2432
2490
  */
2433
2491
  function toArray(collection) {
2434
2492
  if (collection && typeof collection.length == 'number') {
2435
- return (noArraySliceOnStrings ? toString.call(collection) == stringClass : typeof collection == 'string')
2493
+ return (noArraySliceOnStrings ? isString(collection) : typeof collection == 'string')
2436
2494
  ? collection.split('')
2437
2495
  : slice.call(collection);
2438
2496
  }
@@ -2610,8 +2668,8 @@
2610
2668
  * @category Arrays
2611
2669
  * @param {Array} array The array to search.
2612
2670
  * @param {Mixed} value The value to search for.
2613
- * @param {Boolean|Number} [fromIndex=0] The index to start searching from or
2614
- * `true` to perform a binary search on a sorted `array`.
2671
+ * @param {Boolean|Number} [fromIndex=0] The index to search from or `true` to
2672
+ * perform a binary search on a sorted `array`.
2615
2673
  * @returns {Number} Returns the index of the matched value or `-1`.
2616
2674
  * @example
2617
2675
  *
@@ -2650,7 +2708,7 @@
2650
2708
  * @memberOf _
2651
2709
  * @category Arrays
2652
2710
  * @param {Array} array The array to query.
2653
- * @param {Number} [n] The number of elements to return.
2711
+ * @param {Number} [n=1] The number of elements to exclude.
2654
2712
  * @param- {Object} [guard] Internally used to allow this method to work with
2655
2713
  * others like `_.map` without using their callback `index` argument for `n`.
2656
2714
  * @returns {Array} Returns all but the last element or `n` elements of `array`.
@@ -2726,15 +2784,16 @@
2726
2784
  }
2727
2785
 
2728
2786
  /**
2729
- * Gets the index at which the last occurrence of `value` is found using
2730
- * strict equality for comparisons, i.e. `===`.
2787
+ * Gets the index at which the last occurrence of `value` is found using strict
2788
+ * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used
2789
+ * as the offset from the end of the collection.
2731
2790
  *
2732
2791
  * @static
2733
2792
  * @memberOf _
2734
2793
  * @category Arrays
2735
2794
  * @param {Array} array The array to search.
2736
2795
  * @param {Mixed} value The value to search for.
2737
- * @param {Number} [fromIndex=array.length-1] The index to start searching from.
2796
+ * @param {Number} [fromIndex=array.length-1] The index to search from.
2738
2797
  * @returns {Number} Returns the index of the matched value or `-1`.
2739
2798
  * @example
2740
2799
  *
@@ -2849,7 +2908,7 @@
2849
2908
  * @alias drop, tail
2850
2909
  * @category Arrays
2851
2910
  * @param {Array} array The array to query.
2852
- * @param {Number} [n] The number of elements to return.
2911
+ * @param {Number} [n=1] The number of elements to exclude.
2853
2912
  * @param- {Object} [guard] Internally used to allow this method to work with
2854
2913
  * others like `_.map` without using their callback `index` argument for `n`.
2855
2914
  * @returns {Array} Returns all but the first value or `n` values of `array`.
@@ -2981,6 +3040,11 @@
2981
3040
  callback = isSorted;
2982
3041
  isSorted = false;
2983
3042
  }
3043
+ // init value cache for large arrays
3044
+ var isLarge = !isSorted && length > 74;
3045
+ if (isLarge) {
3046
+ var cache = {};
3047
+ }
2984
3048
  if (callback) {
2985
3049
  seen = [];
2986
3050
  callback = createCallback(callback, thisArg);
@@ -2989,11 +3053,16 @@
2989
3053
  var value = array[index],
2990
3054
  computed = callback ? callback(value, index, array) : value;
2991
3055
 
3056
+ if (isLarge) {
3057
+ // manually coerce `computed` to a string because `hasOwnProperty`, in
3058
+ // some older versions of Firefox, coerces objects incorrectly
3059
+ seen = hasOwnProperty.call(cache, computed + '') ? cache[computed] : (cache[computed] = []);
3060
+ }
2992
3061
  if (isSorted
2993
3062
  ? !index || seen[seen.length - 1] !== computed
2994
3063
  : indexOf(seen, computed) < 0
2995
3064
  ) {
2996
- if (callback) {
3065
+ if (callback || isLarge) {
2997
3066
  seen.push(computed);
2998
3067
  }
2999
3068
  result.push(value);
@@ -3062,8 +3131,9 @@
3062
3131
  /*--------------------------------------------------------------------------*/
3063
3132
 
3064
3133
  /**
3065
- * Creates a function that is restricted to executing only after it is
3066
- * called `n` times.
3134
+ * Creates a function that is restricted to executing `func` only after it is
3135
+ * called `n` times. The `func` is executed with the `this` binding of the
3136
+ * created function.
3067
3137
  *
3068
3138
  * @static
3069
3139
  * @memberOf _
@@ -3159,6 +3229,7 @@
3159
3229
  * Creates a function that is the composition of the passed functions,
3160
3230
  * where each function consumes the return value of the function that follows.
3161
3231
  * In math terms, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`.
3232
+ * Each function is executed with the `this` binding of the composed function.
3162
3233
  *
3163
3234
  * @static
3164
3235
  * @memberOf _
@@ -3316,7 +3387,8 @@
3316
3387
  * Creates a function that memoizes the result of `func`. If `resolver` is
3317
3388
  * passed, it will be used to determine the cache key for storing the result
3318
3389
  * based on the arguments passed to the memoized function. By default, the first
3319
- * argument passed to the memoized function is used as the cache key.
3390
+ * argument passed to the memoized function is used as the cache key. The `func`
3391
+ * is executed with the `this` binding of the memoized function.
3320
3392
  *
3321
3393
  * @static
3322
3394
  * @memberOf _
@@ -3341,8 +3413,9 @@
3341
3413
  }
3342
3414
 
3343
3415
  /**
3344
- * Creates a function that is restricted to one execution. Repeat calls to
3345
- * the function will return the value of the first call.
3416
+ * Creates a function that is restricted to execute `func` once. Repeat calls to
3417
+ * the function will return the value of the first call. The `func` is executed
3418
+ * with the `this` binding of the created function.
3346
3419
  *
3347
3420
  * @static
3348
3421
  * @memberOf _
@@ -3375,8 +3448,8 @@
3375
3448
 
3376
3449
  /**
3377
3450
  * Creates a function that, when called, invokes `func` with any additional
3378
- * `partial` arguments prepended to those passed to the new function. This method
3379
- * is similar to `bind`, except it does **not** alter the `this` binding.
3451
+ * `partial` arguments prepended to those passed to the new function. This
3452
+ * method is similar to `bind`, except it does **not** alter the `this` binding.
3380
3453
  *
3381
3454
  * @static
3382
3455
  * @memberOf _
@@ -3446,8 +3519,9 @@
3446
3519
 
3447
3520
  /**
3448
3521
  * Creates a function that passes `value` to the `wrapper` function as its
3449
- * first argument. Additional arguments passed to the new function are appended
3450
- * to those passed to the `wrapper` function.
3522
+ * first argument. Additional arguments passed to the function are appended
3523
+ * to those passed to the `wrapper` function. The `wrapper` is executed with
3524
+ * the `this` binding of the created function.
3451
3525
  *
3452
3526
  * @static
3453
3527
  * @memberOf _
@@ -3671,7 +3745,11 @@
3671
3745
  *
3672
3746
  * // using the "escape" delimiter to escape HTML in data property values
3673
3747
  * _.template('<b><%- value %></b>', { 'value': '<script>' });
3674
- * // => '<b>&lt;script></b>'
3748
+ * // => '<b>&lt;script&gt;</b>'
3749
+ *
3750
+ * // using the ES6 delimiter as an alternative to the default "interpolate" delimiter
3751
+ * _.template('hello ${ name }', { 'name': 'curly' });
3752
+ * // => 'hello curly'
3675
3753
  *
3676
3754
  * // using the internal `print` function in "evaluate" delimiters
3677
3755
  * _.template('<% print("hello " + epithet); %>!', { 'epithet': 'stooge' });
@@ -3679,7 +3757,7 @@
3679
3757
  *
3680
3758
  * // using custom template delimiters
3681
3759
  * _.templateSettings = {
3682
- * 'interpolate': /\{\{([\s\S]+?)\}\}/g
3760
+ * 'interpolate': /{{([\s\S]+?)}}/g
3683
3761
  * };
3684
3762
  *
3685
3763
  * _.template('hello {{ name }}!', { 'name': 'mustache' });
@@ -3717,8 +3795,9 @@
3717
3795
 
3718
3796
  var isEvaluating,
3719
3797
  result,
3720
- index = 0,
3721
3798
  settings = lodash.templateSettings,
3799
+ index = 0,
3800
+ interpolate = options.interpolate || settings.interpolate || reNoMatch,
3722
3801
  source = "__p += '",
3723
3802
  variable = options.variable || settings.variable,
3724
3803
  hasVariable = variable;
@@ -3726,11 +3805,14 @@
3726
3805
  // compile regexp to match each delimiter
3727
3806
  var reDelimiters = RegExp(
3728
3807
  (options.escape || settings.escape || reNoMatch).source + '|' +
3729
- (options.interpolate || settings.interpolate || reNoMatch).source + '|' +
3808
+ interpolate.source + '|' +
3809
+ (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
3730
3810
  (options.evaluate || settings.evaluate || reNoMatch).source + '|$'
3731
3811
  , 'g');
3732
3812
 
3733
- text.replace(reDelimiters, function(match, escapeValue, interpolateValue, evaluateValue, offset) {
3813
+ text.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
3814
+ interpolateValue || (interpolateValue = esTemplateValue);
3815
+
3734
3816
  // escape characters that cannot be included in string literals
3735
3817
  source += text.slice(index, offset).replace(reUnescapedString, escapeStringChar);
3736
3818
 
@@ -3975,7 +4057,7 @@
3975
4057
  * @memberOf _
3976
4058
  * @type String
3977
4059
  */
3978
- lodash.VERSION = '0.9.1';
4060
+ lodash.VERSION = '0.9.2';
3979
4061
 
3980
4062
  // assign static methods
3981
4063
  lodash.after = after;
@@ -1,39 +1,40 @@
1
1
  /*!
2
- Lo-Dash 0.9.1 lodash.com/license
2
+ Lo-Dash 0.9.2 lodash.com/license
3
3
  Underscore.js 1.4.2 underscorejs.org/LICENSE
4
4
  */
5
- ;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||Q),s=i?{}:e;if(i)for(n=t-1;++n<r;){var o=e[n]+"";(dt.call(s,o)?s[o]:s[o]=[]).push(e[n])}return function(e){if(i){var n=e+"";return dt.call(s,n)&&-1<j(s[n],e)}return-1<j(s,e,t)}}function u(e,n){var r=e.b,i=n.b,e=e.a,n=n.a;if(e!==n){if(e>n||e===t)return 1;if(e<n||n===t)return-1}return r<i?-1:1}function a(e,t,n){function r(){var u=arguments
6
- ,a=s?this:t;return i||(e=t[o]),n.length&&(u=u.length?n.concat(gt.call(u)):n),this instanceof r?(p.prototype=e.prototype,a=new p,(u=e.apply(a,u))&&$t[typeof u]?u:a):e.apply(a,u)}var i=S(e),s=!n,o=e;return s&&(n=t),r}function f(e,n){return e?"function"!=typeof e?function(t){return t[e]}:n!==t?function(t,r,i){return e.call(n,t,r,i)}:e:U}function l(){for(var e={b:"",c:"",e:Ht,f:Xt,g:"",h:Ft,i:Rt,j:ft,k:"",l:n},t,r=0;t=arguments[r];r++)for(var i in t)e[i]=t[i];t=e.a,e.d=/^[^,]+/.exec(t)[0],r="var h,w,j="+
7
- e.d+",r="+e.d+";if(!"+e.d+")return r;"+e.k+";",e.b?(r+="var k=j.length;h=-1;if(typeof k=='number'){",e.i&&(r+="if(v.call(j)==t){j=j.split('')}"),r+="while(++h<k){w=j[h];"+e.b+"}}else {"):e.h&&(r+="var k=j.length;h=-1;if(k&&i(j)){while(++h<k){w=j[h+=''];"+e.g+"}}else {"),e.e||(r+="var s=typeof j=='function'&&q.call(j,'prototype');");if(e.f&&e.l)r+="var o=-1,p=n[typeof j]?l(j):[],k=p.length;while(++o<k){h=p[o];",e.e||(r+="if(!(s&&h=='prototype')){"),r+="w=j[h];"+e.g+"",e.e||(r+="}");else{r+="for(h in j){"
8
- ;if(!e.e||e.l)r+="if(",e.e||(r+="!(s&&h=='prototype')"),!e.e&&e.l&&(r+="&&"),e.l&&(r+="g.call(j,h)"),r+="){";r+="w=j[h];"+e.g+";";if(!e.e||e.l)r+="}"}r+="}";if(e.e){r+="var f=j.constructor;";for(i=0;7>i;i++)r+="h='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===j)&&"),r+="g.call(j,h)){w=j[h];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return r",Function("e,g,i,n,l,q,t,v","return function("+t+"){"+r+"}")(f,dt,v,$t,xt,mt,Pt,yt)}function c(e){return"\\"+Jt[e]}function h(e){return en
9
- [e]}function p(){}function d(e){return tn[e]}function v(e){return yt.call(e)==kt}function m(e){var t=i;if(!e||"object"!=typeof e||v(e))return t;var n=e.constructor;return(!Ut||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!S(n)||n instanceof n)?Bt?(Yt(e,function(e,n,r){return t=!dt.call(r,n),i}),t===i):(Yt(e,function(e,n){t=n}),t===i||dt.call(e,t)):t}function g(e){var t=[];return Zt(e,function(e,n){t.push(n)}),t}function y(e,t,n,s,o){if(e==r)return e;n&&(t=i);if(n=$t[typeof e]){var u=
10
- yt.call(e);if(!Vt[u]||It&&v(e))return e;var a=u==Lt,n=a||(u==_t?on(e):n)}if(!n||!t)return n?a?gt.call(e):rn({},e):e;n=e.constructor;switch(u){case At:case Ot:return new n(+e);case Mt:case Pt:return new n(e);case Dt:return n(e.source,rt.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?an:Zt)(e,function(e,n){f[n]=y(e,t,r,s,o)}),f}function b(e){var t=[];return Yt(e,function(e,n){S(e)&&t.push(n)}),t.sort()}function w(e){var t=
11
- {};return Zt(e,function(e,n){t[e]=n}),t}function E(e,t,s,o){if(e===t)return 0!==e||1/e==1/t;if(e==r||t==r)return e===t;var u=yt.call(e);if(u!=yt.call(t))return i;switch(u){case At:case Ot:return+e==+t;case Mt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case Dt:case Pt:return e==t+""}var a=u==Lt||u==kt;if(It&&!a&&(a=v(e))&&!v(t))return i;if(!a){if(e.__wrapped__||t.__wrapped__)return E(e.__wrapped__||e,t.__wrapped__||t);if(u!=_t||Ut&&("function"!=typeof e.toString&&"string"==typeof (e+"")||"function"!=typeof
12
- t.toString&&"string"==typeof (t+"")))return i;var u=e.constructor,f=t.constructor;if(u!=f&&(!S(u)||!(u instanceof u&&S(f)&&f instanceof f)))return i}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=E(e[l],t[l],s,o)););return f}for(var c in e)if(dt.call(e,c)&&(l++,!dt.call(t,c)||!E(e[c],t[c],s,o)))return i;for(c in t)if(dt.call(t,c)&&!(l--))return i;if(Ht)for(;7>++u;)if(c=ft[u],dt.call(e,c)&&(!dt.call
13
- (t,c)||!E(e[c],t[c],s,o)))return i;return n}function S(e){return"function"==typeof e}function x(e,t,n){var i=arguments,s=0,o=2,u=i[3],a=i[4];n!==K&&(u=[],a=[],o=i.length);for(;++s<o;)Zt(i[s],function(t,n){var i,s,o;if(t&&((s=sn(t))||on(t))){for(var f=u.length;f--;)if(i=u[f]==t)break;i?e[n]=a[f]:(u.push(t),a.push(o=(o=e[n],s)?sn(o)?o:[]:on(o)?o:{}),e[n]=x(o,t,K,u,a))}else t!=r&&(e[n]=t)});return e}function T(e){var t=[];return Zt(e,function(e){t.push(e)}),t}function N(e,t){return"number"==typeof (
14
- e?e.length:0)?-1<(yt.call(e)==Pt?e.indexOf(t):j(e,t)):P(e,function(e){return e===t})}function C(e,t,r){var i=n,t=f(t,r);return an(e,function(e,n,r){return i=!!t(e,n,r)}),i}function k(e,t,n){var r=[],t=f(t,n);return an(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r}function L(e,t,r){var i,t=f(t,r);return P(e,function(e,r,s){return t(e,r,s)&&(i=e,n)}),i}function A(e,t,n){var r=-1,i=e?e.length:0,s=Array("number"==typeof i?i:0),t=f(t,n);if(sn(e))for(;++r<i;)s[r]=t(e[r],r,e);else an(e,function(e,n,i){s[++r
15
- ]=t(e,n,i)});return s}function O(e,t,n){var r=-Infinity,i=-1,s=e?e.length:0,o=r;if(t||"number"!=typeof s)t=f(t,n),an(e,function(e,n,i){n=t(e,n,i),n>r&&(r=n,o=e)});else for(;++i<s;)e[i]>o&&(o=e[i]);return o}function M(e,t){var n=[];return an(e,function(e){n.push(e[t])}),n}function _(e,t,n,r){var s=3>arguments.length,t=f(t,r);return an(e,function(e,r,o){n=s?(s=i,e):t(n,e,r,o)}),n}function D(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if("number"!=typeof o)var a=un(e),o=a.length;else Rt&&yt
16
- .call(e)==Pt&&(s=e.split(""));return an(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function P(e,t,n){var r,t=f(t,n);return an(e,function(e,n,i){return!(r=t(e,n,i))}),!!r}function H(e,t,n){if(e)return t==r||n?e[0]:gt.call(e,0,t)}function B(e,t){for(var n=-1,r=e?e.length:0,i=[];++n<r;){var s=e[n];sn(s)?vt.apply(i,t?s:B(s)):i.push(s)}return i}function j(e,t,n){var r=-1,i=e?e.length:0;if("number"==typeof n)r=(0>n?Tt(0,i+n):n||0)-1;else if(n)return r=I(e,t),e[r]===t?r:-1;
17
- for(;++r<i;)if(e[r]===t)return r;return-1}function F(e,t,n){return e?gt.call(e,t==r||n?1:t):[]}function I(e,t,n,r){for(var i=0,s=e?e.length:i,n=n?f(n,r):U,t=n(t);i<s;)r=i+s>>>1,n(e[r])<t?i=r+1:s=r;return i}function q(e,t,n,r){var s=-1,o=e?e.length:0,u=[],a=u;"function"==typeof t&&(r=n,n=t,t=i),n&&(a=[],n=f(n,r));for(;++s<o;){var r=e[s],l=n?n(r,s,e):r;if(t?!s||a[a.length-1]!==l:0>j(a,l))n&&a.push(l),u.push(r)}return u}function R(e,t){return Wt||bt&&2<arguments.length?bt.call.apply(bt,arguments):a(
18
- e,t,gt.call(arguments,2))}function U(e){return e}function z(e){an(b(e),function(t){var r=s[t]=e[t];s.prototype[t]=function(){var e=[this.__wrapped__];return vt.apply(e,arguments),e=r.apply(s,e),this.__chain__&&(e=new s(e),e.__chain__=n),e}})}var n=!0,r=null,i=!1,W="object"==typeof exports&&exports,X="object"==typeof global&&global;X.global===X&&(e=X);var V=[],$={},J=0,K={},Q=30,G=e._,Y=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,Z=/&(?:amp|lt|gt|quot|#x27);/g,et=/\b__p\+='';/g
19
- ,tt=/\b(__p\+=)''\+/g,nt=/(__e\(.*?\)|\b__t\))\+'';/g,rt=/\w*$/,it=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g,st=RegExp("^"+($.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),ot=/($^)/,ut=/[&<>"']/g,at=/['\n\r\t\u2028\u2029\\]/g,ft="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),lt=Math.ceil,ct=V.concat,ht=Math.floor,pt=st.test(pt=Object.getPrototypeOf)&&pt,dt=$.hasOwnProperty,vt=V.push,mt=$.propertyIsEnumerable
20
- ,gt=V.slice,yt=$.toString,bt=st.test(bt=gt.bind)&&bt,wt=st.test(wt=Array.isArray)&&wt,Et=e.isFinite,St=e.isNaN,xt=st.test(xt=Object.keys)&&xt,Tt=Math.max,Nt=Math.min,Ct=Math.random,kt="[object Arguments]",Lt="[object Array]",At="[object Boolean]",Ot="[object Date]",Mt="[object Number]",_t="[object Object]",Dt="[object RegExp]",Pt="[object String]",Ht,Bt,jt=(jt={0:1,length:1},V.splice.call(jt,0,1),jt[0]),Ft=n;(function(){function e(){this.x=1}var t=[];e.prototype={valueOf:1,y:1};for(var n in new e
21
- )t.push(n);for(n in arguments)Ft=!n;Ht=!/valueOf/.test(t),Bt="x"!=t[0]})(1);var It=!v(arguments),qt="x"!=gt.call("x")[0],Rt="xx"!="x"[0]+Object("x")[0];try{var Ut=("[object Object]",yt.call(e.document||0)==_t)}catch(zt){}var Wt=bt&&/\n|Opera/.test(bt+yt.call(e.opera)),Xt=xt&&/^.+$|true/.test(xt+!!e.attachEvent),Vt={};Vt[kt]=Vt["[object Function]"]=i,Vt[Lt]=Vt[At]=Vt[Ot]=Vt[Mt]=Vt[_t]=Vt[Dt]=Vt[Pt]=n;var $t={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i},Jt={"\\":"\\","'":"'","\n"
22
- :"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""};var Kt={a:"d,c,u",k:"c=e(c,u)",b:"if(c(w,h,d)===false)return r",g:"if(c(w,h,d)===false)return r"},Qt={l:i,a:"m",k:"for(var a=1,b=arguments.length;a<b;a++){if(j=arguments[a]){",g:"r[h]=w",c:"}}"},Gt={b:r};It&&(v=function(e){return e?dt.call(e,"callee"):i});var Yt=l(Kt,Gt,{l:i}),Zt=l(Kt,Gt),en={"&":"&amp;","<":"&lt;",">":"&gt;"
23
- ,'"':"&quot;","'":"&#x27;"},tn=w(en),nn=l(Qt,{g:"if(r[h]==null)"+Qt.g}),rn=l(Qt),sn=wt||function(e){return yt.call(e)==Lt};S(/x/)&&(S=function(e){return"[object Function]"==yt.call(e)});var on=pt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=pt(t))&&pt(n);return n?e==n||pt(e)==n&&!v(e):m(e)}:m,un=xt?function(e){var t=typeof e;return"function"==t&&mt.call(e,"prototype")?g(e):e&&$t[t]?xt(e):[]}:g,an=l(Kt);s.VERSION="0.9.1",s.after=function(e,t){return 1>e?
24
- t():function(){if(1>--e)return t.apply(this,arguments)}},s.bind=R,s.bindAll=function(e){for(var t=arguments,n=1<t.length?0:(t=b(e),-1),r=t.length;++n<r;){var i=t[n];e[i]=R(e[i],e)}return e},s.chain=function(e){return e=new s(e),e.__chain__=n,e},s.clone=y,s.compact=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;){var i=e[t];i&&r.push(i)}return r},s.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length;n--;)t=[e[n].apply(this,t)];return t[0]}},s.contains=N,s.countBy=
25
- function(e,t,n){var r={},t=f(t,n);return an(e,function(e,n,i){n=t(e,n,i),dt.call(r,n)?r[n]++:r[n]=1}),r},s.debounce=function(e,t,n){function i(){a=r,n||(o=e.apply(u,s))}var s,o,u,a;return function(){var r=n&&!a;return s=arguments,u=this,clearTimeout(a),a=setTimeout(i,t),r&&(o=e.apply(u,s)),o}},s.defaults=nn,s.defer=function(e){var n=gt.call(arguments,1);return setTimeout(function(){e.apply(t,n)},1)},s.delay=function(e,n){var r=gt.call(arguments,2);return setTimeout(function(){e.apply(t,r)},n)},s.
26
- difference=function(e){for(var t=-1,n=e?e.length:0,r=ct.apply(V,arguments),r=o(r,n),i=[];++t<n;){var s=e[t];r(s)||i.push(s)}return i},s.escape=function(e){return e==r?"":(e+"").replace(ut,h)},s.every=C,s.extend=rn,s.filter=k,s.find=L,s.first=H,s.flatten=B,s.forEach=an,s.forIn=Yt,s.forOwn=Zt,s.functions=b,s.groupBy=function(e,t,n){var r={},t=f(t,n);return an(e,function(e,n,i){n=t(e,n,i),(dt.call(r,n)?r[n]:r[n]=[]).push(e)}),r},s.has=function(e,t){return e?dt.call(e,t):i},s.identity=U,s.indexOf=j,s
27
- .initial=function(e,t,n){return e?gt.call(e,0,-(t==r||n?1:t)):[]},s.intersection=function(e){var t=arguments,n=t.length,r={},i=[];return an(e,function(e){if(0>j(i,e)){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=w,s.invoke=function(e,t){var n=gt.call(arguments,2),r="function"==typeof t,i=[];return an(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=v,s.isArray=sn,s.isBoolean=function(e){return e===n||e===i||yt.call(e)==At},s.isDate=function(e){return yt
28
- .call(e)==Ot},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=yt.call(e),s=e.length;return r==Lt||r==Pt||r==kt||It&&v(e)||r==_t&&"number"==typeof s&&S(e.splice)?!s:(Zt(e,function(){return t=i}),t)},s.isEqual=E,s.isFinite=function(e){return Et(e)&&!St(parseFloat(e))},s.isFunction=S,s.isNaN=function(e){return yt.call(e)==Mt&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return yt.call(e)==Mt},s.isObject=function(e){return e?$t
29
- [typeof e]:i},s.isPlainObject=on,s.isRegExp=function(e){return yt.call(e)==Dt},s.isString=function(e){return yt.call(e)==Pt},s.isUndefined=function(e){return e===t},s.keys=un,s.last=function(e,t,n){if(e){var i=e.length;return t==r||n?e[i-1]:gt.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?Tt(0,r+n):Nt(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.lateBind=function(e,t){return a(t,e,gt.call(arguments,2))},s.map=A,s.max=O,s.memoize=function(e,t)
30
- {var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return dt.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=x,s.min=function(e,t,n){var r=Infinity,i=-1,s=e?e.length:0,o=r;if(t||"number"!=typeof s)t=f(t,n),an(e,function(e,n,i){n=t(e,n,i),n<r&&(r=n,o=e)});else for(;++i<s;)e[i]<o&&(o=e[i]);return o},s.mixin=z,s.noConflict=function(){return e._=G,this},s.object=function(e,t){for(var n=-1,r=e?e.length:0,i={};++n<r;){var s=e[n];t?i[s]=t[n]:i[s[0]]=s[1]}return i},s.omit=function(
31
- e,t,n){var r="function"==typeof t,i={};if(r)t=f(t,n);else var s=ct.apply(V,arguments);return Yt(e,function(e,n,o){if(r?!t(e,n,o):0>j(s,n,1))i[n]=e}),i},s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this,arguments),e=r,t)}},s.pairs=function(e){var t=[];return Zt(e,function(e,n){t.push([n,e])}),t},s.partial=function(e){return a(e,gt.call(arguments,1))},s.pick=function(e,t,n){var r={};if("function"!=typeof t)for(var i=0,s=ct.apply(V,arguments),o=s.length;++i<o;){var u=s[i]
32
- ;u in e&&(r[u]=e[u])}else t=f(t,n),Yt(e,function(e,n,i){t(e,n,i)&&(r[n]=e)});return r},s.pluck=M,s.random=function(e,t){return e==r&&t==r&&(t=1),e=+e||0,t==r&&(t=e,e=0),e+ht(Ct()*((+t||0)-e+1))},s.range=function(e,t,n){e=+e||0,n=+n||1,t==r&&(t=e,e=0);for(var i=-1,t=Tt(0,lt((t-e)/n)),s=Array(t);++i<t;)s[i]=e,e+=n;return s},s.reduce=_,s.reduceRight=D,s.reject=function(e,t,n){return t=f(t,n),k(e,function(e,n,r){return!t(e,n,r)})},s.rest=F,s.result=function(e,t){var n=e?e[t]:r;return S(n)?e[t]():n},s
33
- .shuffle=function(e){var t=-1,n=Array(e?e.length:0);return an(e,function(e){var r=ht(Ct()*(++t+1));n[t]=n[r],n[r]=e}),n},s.size=function(e){var t=e?e.length:0;return"number"==typeof t?t:un(e).length},s.some=P,s.sortBy=function(e,t,n){var r=[],t=f(t,n);an(e,function(e,n,i){r.push({a:t(e,n,i),b:n,c:e})}),e=r.length;for(r.sort(u);e--;)r[e]=r[e].c;return r},s.sortedIndex=I,s.tap=function(e,t){return t(e),e},s.template=function(e,t,n){e||(e=""),n||(n={});var r,i,o=0,u=s.templateSettings,a="__p += '",f=
34
- n.variable||u.variable,l=f;e.replace(RegExp((n.escape||u.escape||ot).source+"|"+(n.interpolate||u.interpolate||ot).source+"|"+(n.evaluate||u.evaluate||ot).source+"|$","g"),function(t,n,i,s,u){a+=e.slice(o,u).replace(at,c),a+=n?"'+__e("+n+")+'":s?"';"+s+";__p+='":i?"'+((__t=("+i+"))==null?'':__t)+'":"",r||(r=s||Y.test(n||i)),o=u+t.length}),a+="';",l||(f="obj",r?a="with("+f+"){"+a+"}":(n=RegExp("(\\(\\s*)"+f+"\\."+f+"\\b","g"),a=a.replace(it,"$&"+f+".").replace(n,"$1__d"))),a=(r?a.replace(et,""):a)
35
- .replace(tt,"$1").replace(nt,"$1;"),a="function("+f+"){"+(l?"":f+"||("+f+"={});")+"var __t,__p='',__e=_.escape"+(r?",__j=[].join;function print(){__p+=__j.call(arguments,'')}":(l?"":",__d="+f+"."+f+"||"+f)+";")+a+"return __p}";try{i=Function("_","return "+a)(s)}catch(h){throw h.source=a,h}return t?i(t):(i.source=a,i)},s.throttle=function(e,t){function n(){a=new Date,u=r,s=e.apply(o,i)}var i,s,o,u,a=0;return function(){var r=new Date,f=t-(r-a);return i=arguments,o=this,0>=f?(clearTimeout
36
- (u),a=r,s=e.apply(o,i)):u||(u=setTimeout(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r<e;)i[r]=t.call(n,r);return i},s.toArray=function(e){return e&&"number"==typeof e.length?(qt?yt.call(e)==Pt:"string"==typeof e)?e.split(""):gt.call(e):T(e)},s.unescape=function(e){return e==r?"":(e+"").replace(Z,d)},s.union=function(){return q(ct.apply(V,arguments))},s.uniq=q,s.uniqueId=function(e){var t=J++;return e?e+t:t},s.values=T,s.where=function(e,t){var n=[];return Yt(t,function(e,
37
- t){n.push(t)}),k(e,function(e){for(var r=n.length;r--;){var i=e[n[r]]===t[n[r]];if(!i)break}return!!i})},s.without=function(e){for(var t=-1,n=e?e.length:0,r=o(arguments,1,20),i=[];++t<n;){var s=e[t];r(s)||i.push(s)}return i},s.wrap=function(e,t){return function(){var n=[e];return vt.apply(n,arguments),t.apply(this,n)}},s.zip=function(e){for(var t=-1,n=e?O(M(arguments,"length")):0,r=Array(n);++t<n;)r[t]=M(arguments,t);return r},s.all=C,s.any=P,s.collect=A,s.detect=L,s.drop=F,s.each=an,s.foldl=_,s.
38
- foldr=D,s.head=H,s.include=N,s.inject=_,s.methods=b,s.select=k,s.tail=F,s.take=H,s.unique=q,z(s),s.prototype.chain=function(){return this.__chain__=n,this},s.prototype.value=function(){return this.__wrapped__},an("pop push reverse shift sort splice unshift".split(" "),function(e){var t=V[e];s.prototype[e]=function(){var e=this.__wrapped__;return t.apply(e,arguments),jt&&e.length===0&&delete e[0],this.__chain__&&(e=new s(e),e.__chain__=n),e}}),an(["concat","join","slice"],function(e){var t=V[e];s.
39
- prototype[e]=function(){var e=t.apply(this.__wrapped__,arguments);return this.__chain__&&(e=new s(e),e.__chain__=n),e}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(e._=s,define(function(){return s})):W?"object"==typeof module&&module&&module.exports==W?(module.exports=s)._=s:W._=s:e._=s})(this);
5
+ ;(function(e,t){function s(e){if(e&&e.__wrapped__)return e;if(!(this instanceof s))return new s(e);this.__wrapped__=e}function o(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||Y);if(i)for(var s={},n=t-1;++n<r;){var o=e[n]+"";(yt.call(s,o)?s[o]:s[o]=[]).push(e[n])}return function(n){if(i){var r=n+"";return yt.call(s,r)&&-1<q(s[r],n)}return-1<q(e,n,t)}}function u(e){return e.charCodeAt(0)}function a(e,n){var r=e.b,i=n.b,e=e.a,n=n.a;if(e!==n){if(e>n||e===t)return 1;if(e<n||n===t)return-1}return r<i?-1:1}function f
6
+ (e,t,n){function r(){var u=arguments,a=s?this:t;return i||(e=t[o]),n.length&&(u=u.length?n.concat(Et.call(u)):n),this instanceof r?(d.prototype=e.prototype,a=new d,u=e.apply(a,u),T(u)?u:a):e.apply(a,u)}var i=x(e),s=!n,o=e;return s&&(n=t),r}function l(e,n){return e?"function"!=typeof e?function(t){return t[e]}:n!==t?function(t,r,i){return e.call(n,t,r,i)}:e:X}function c(){for(var e={b:"",c:"",e:It,f:Kt,g:"",h:Ut,i:Xt,j:pt,k:"",l:n},t,r=0;t=arguments[r];r++)for(var i in t)e[i]=t[i];t=e.a,e.d=/^[^,]+/
7
+ .exec(t)[0],r="var h,v,k="+e.d+",s="+e.d+";if(!"+e.d+")return s;"+e.k+";",e.b?(r+="var l=k.length;h=-1;if(typeof l=='number'){",e.i&&(r+="if(j(k)){k=k.split('')}"),r+="while(++h<l){v=k[h];"+e.b+"}}else {"):e.h&&(r+="var l=k.length;h=-1;if(l&&i(k)){while(++h<l){v=k[h+=''];"+e.g+"}}else {"),e.e||(r+="var t=typeof k=='function'&&r.call(k,'prototype');");if(e.f&&e.l)r+="var p=-1,q=o[typeof k]?m(k):[],l=q.length;while(++p<l){h=q[p];",e.e||(r+="if(!(t&&h=='prototype')){"),r+="v=k[h];"+e.g+"",e.e||(r+="}"
8
+ );else{r+="for(h in k){";if(!e.e||e.l)r+="if(",e.e||(r+="!(t&&h=='prototype')"),!e.e&&e.l&&(r+="&&"),e.l&&(r+="g.call(k,h)"),r+="){";r+="v=k[h];"+e.g+";";if(!e.e||e.l)r+="}"}r+="}";if(e.e){r+="var f=k.constructor;";for(i=0;7>i;i++)r+="h='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===k)&&"),r+="g.call(k,h)){v=k[h];"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return s",Function("e,g,i,j,o,m,r","return function("+t+"){"+r+"}")(l,yt,m,N,Gt,kt,wt)}function h(e){return"\\"+Yt[e]}function p
9
+ (e){return sn[e]}function d(){}function v(e){return on[e]}function m(e){return St.call(e)==Mt}function g(e){var t=i;if(!e||"object"!=typeof e||m(e))return t;var n=e.constructor;return(!Vt||"function"==typeof e.toString||"string"!=typeof (e+""))&&(!x(n)||n instanceof n)?qt?(nn(e,function(e,n,r){return t=!yt.call(r,n),i}),t===i):(nn(e,function(e,n){t=n}),t===i||yt.call(e,t)):t}function y(e){var t=[];return rn(e,function(e,n){t.push(n)}),t}function b(e,t,n,s,o){if(e==r)return e;n&&(t=i);if(n=T(e)){var u=
10
+ St.call(e);if(!Qt[u]||zt&&m(e))return e;var a=u==_t,n=a||(u==Bt?ln(e):n)}if(!n||!t)return n?a?Et.call(e):an({},e):e;n=e.constructor;switch(u){case Dt:case Pt:return new n(+e);case Ht:case Ft:return new n(e);case jt:return n(e.source,st.exec(e))}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u];var f=a?n(e.length):{};return s.push(e),o.push(f),(a?hn:rn)(e,function(e,n){f[n]=b(e,t,r,s,o)}),f}function w(e){var t=[];return nn(e,function(e,n){x(e)&&t.push(n)}),t.sort()}function E(e){var t=
11
+ {};return rn(e,function(e,n){t[e]=n}),t}function S(e,t,s,o){if(e===t)return 0!==e||1/e==1/t;if(e==r||t==r)return e===t;var u=St.call(e);if(u!=St.call(t))return i;switch(u){case Dt:case Pt:return+e==+t;case Ht:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case jt:case Ft:return e==t+""}var a=u==_t||u==Mt;if(zt&&!a&&(a=m(e))&&!m(t))return i;if(!a){if(e.__wrapped__||t.__wrapped__)return S(e.__wrapped__||e,t.__wrapped__||t);if(u!=Bt||Vt&&("function"!=typeof e.toString&&"string"==typeof (e+"")||"function"!=typeof
12
+ t.toString&&"string"==typeof (t+"")))return i;var u=e.constructor,f=t.constructor;if(u!=f&&(!x(u)||!(u instanceof u&&x(f)&&f instanceof f)))return i}s||(s=[]),o||(o=[]);for(u=s.length;u--;)if(s[u]==e)return o[u]==t;var u=-1,f=n,l=0;s.push(e),o.push(t);if(a){l=e.length;if(f=l==t.length)for(;l--&&(f=S(e[l],t[l],s,o)););return f}for(var c in e)if(yt.call(e,c)&&(l++,!yt.call(t,c)||!S(e[c],t[c],s,o)))return i;for(c in t)if(yt.call(t,c)&&!(l--))return i;if(It)for(;7>++u;)if(c=pt[u],yt.call(e,c)&&(!yt.call
13
+ (t,c)||!S(e[c],t[c],s,o)))return i;return n}function x(e){return"function"==typeof e}function T(e){return e?Gt[typeof e]:i}function N(e){return St.call(e)==Ft}function C(e,t,n){var i=arguments,s=0,o=2,u=i[3],a=i[4];n!==Q&&(u=[],a=[],o=i.length);for(;++s<o;)rn(i[s],function(t,n){var i,s,o;if(t&&((s=fn(t))||ln(t))){for(var f=u.length;f--;)if(i=u[f]==t)break;i?e[n]=a[f]:(u.push(t),a.push(o=(o=e[n],s)?fn(o)?o:[]:ln(o)?o:{}),e[n]=C(o,t,Q,u,a))}else t!=r&&(e[n]=t)});return e}function k(e){var t=[];return rn
14
+ (e,function(e){t.push(e)}),t}function L(e,t,n){var r=-1,i=e?e.length:0,n=(0>n?Lt(0,i+n):n)||0;return"number"==typeof i?-1<(N(e)?e.indexOf(t,n):q(e,t,n)):j(e,function(e){return++r>=n&&e===t})}function A(e,t,r){var i=n,t=l(t,r);if(fn(e))for(var r=-1,s=e.length;++r<s&&(i=!!t(e[r],r,e)););else hn(e,function(e,n,r){return i=!!t(e,n,r)});return i}function O(e,t,n){var r=[],t=l(t,n);return hn(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r}function M(e,t,n){var r,t=l(t,n);return hn(e,function(e,n,s){if(t(e,n,
15
+ s))return r=e,i}),r}function _(e,t,n){var r=-1,i=e?e.length:0,s=Array("number"==typeof i?i:0),t=l(t,n);if(fn(e))for(;++r<i;)s[r]=t(e[r],r,e);else hn(e,function(e,n,i){s[++r]=t(e,n,i)});return s}function D(e,t,n){var r=-Infinity,i=-1,s=e?e.length:0,o=r;if(t||!fn(e))t=!t&&N(e)?u:l(t,n),hn(e,function(e,n,i){n=t(e,n,i),n>r&&(r=n,o=e)});else for(;++i<s;)e[i]>o&&(o=e[i]);return o}function P(e,t){var n=[];return hn(e,function(e){n.push(e[t])}),n}function H(e,t,n,r){var s=3>arguments.length,t=l(t,r);return hn
16
+ (e,function(e,r,o){n=s?(s=i,e):t(n,e,r,o)}),n}function B(e,t,n,r){var s=e,o=e?e.length:0,u=3>arguments.length;if("number"!=typeof o)var a=cn(e),o=a.length;else Xt&&N(e)&&(s=e.split(""));return hn(e,function(e,f,l){f=a?a[--o]:--o,n=u?(u=i,s[f]):t.call(r,n,s[f],f,l)}),n}function j(e,t,n){var r,t=l(t,n);if(fn(e))for(var n=-1,i=e.length;++n<i&&!(r=t(e[n],n,e)););else hn(e,function(e,n,i){return!(r=t(e,n,i))});return!!r}function F(e,t,n){if(e)return t==r||n?e[0]:Et.call(e,0,t)}function I(e,t){for(var n=-1
17
+ ,r=e?e.length:0,i=[];++n<r;){var s=e[n];fn(s)?bt.apply(i,t?s:I(s)):i.push(s)}return i}function q(e,t,n){var r=-1,i=e?e.length:0;if("number"==typeof n)r=(0>n?Lt(0,i+n):n||0)-1;else if(n)return r=U(e,t),e[r]===t?r:-1;for(;++r<i;)if(e[r]===t)return r;return-1}function R(e,t,n){return e?Et.call(e,t==r||n?1:t):[]}function U(e,t,n,r){for(var i=0,s=e?e.length:i,n=n?l(n,r):X,t=n(t);i<s;)r=i+s>>>1,n(e[r])<t?i=r+1:s=r;return i}function z(e,t,n,r){var s=-1,o=e?e.length:0,u=[],a=u;"function"==typeof t&&(r=n,
18
+ n=t,t=i);var f=!t&&74<o;if(f)var c={};n&&(a=[],n=l(n,r));for(;++s<o;){var r=e[s],h=n?n(r,s,e):r;f&&(a=yt.call(c,h+"")?c[h]:c[h]=[]);if(t?!s||a[a.length-1]!==h:0>q(a,h))(n||f)&&a.push(h),u.push(r)}return u}function W(e,t){return Jt||xt&&2<arguments.length?xt.call.apply(xt,arguments):f(e,t,Et.call(arguments,2))}function X(e){return e}function V(e){hn(w(e),function(t){var r=s[t]=e[t];s.prototype[t]=function(){var e=[this.__wrapped__];return bt.apply(e,arguments),e=r.apply(s,e),this.__chain__&&(e=new
19
+ s(e),e.__chain__=n),e}})}var n=!0,r=null,i=!1,$="object"==typeof exports&&exports,J="object"==typeof global&&global;J.global===J&&(e=J);var K=[],Q=new function(){},G=0,Y=30,Z=e._,et=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,tt=/&(?:amp|lt|gt|quot|#x27);/g,nt=/\b__p\+='';/g,rt=/\b(__p\+=)''\+/g,it=/(__e\(.*?\)|\b__t\))\+'';/g,st=/\w*$/,ot=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g,ut=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g
20
+ ,".+?")+"$"),at=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,ft=/<%=([\s\S]+?)%>/g,lt=/($^)/,ct=/[&<>"']/g,ht=/['\n\r\t\u2028\u2029\\]/g,pt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),dt=Math.ceil,vt=K.concat,mt=Math.floor,gt=ut.test(gt=Object.getPrototypeOf)&&gt,yt=Q.hasOwnProperty,bt=K.push,wt=Q.propertyIsEnumerable,Et=K.slice,St=Q.toString,xt=ut.test(xt=Et.bind)&&xt,Tt=ut.test(Tt=Array.isArray)&&Tt,Nt=e.isFinite,Ct=e.isNaN,kt=ut.test(kt=Object
21
+ .keys)&&kt,Lt=Math.max,At=Math.min,Ot=Math.random,Mt="[object Arguments]",_t="[object Array]",Dt="[object Boolean]",Pt="[object Date]",Ht="[object Number]",Bt="[object Object]",jt="[object RegExp]",Ft="[object String]",It,qt,Rt=(Rt={0:1,length:1},K.splice.call(Rt,0,1),Rt[0]),Ut=n;(function(){function e(){this.x=1}var t=[];e.prototype={valueOf:1,y:1};for(var n in new e)t.push(n);for(n in arguments)Ut=!n;It=!/valueOf/.test(t),qt="x"!=t[0]})(1);var zt=!m(arguments),Wt="x"!=Et.call("x")[0],Xt="xx"!="x"
22
+ [0]+Object("x")[0];try{var Vt=("[object Object]",St.call(e.document||0)==Bt)}catch($t){}var Jt=xt&&/\n|Opera/.test(xt+St.call(e.opera)),Kt=kt&&/^.+$|true/.test(kt+!!e.attachEvent),Qt={};Qt[Mt]=Qt["[object Function]"]=i,Qt[_t]=Qt[Dt]=Qt[Pt]=Qt[Ht]=Qt[Bt]=Qt[jt]=Qt[Ft]=n;var Gt={"boolean":i,"function":n,object:n,number:i,string:i,"undefined":i},Yt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};s.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,
23
+ interpolate:ft,variable:""};var Zt={a:"d,c,u",k:"c=e(c,u)",b:"if(c(v,h,d)===false)return s",g:"if(c(v,h,d)===false)return s"},en={l:i,a:"n",k:"for(var a=1,b=arguments.length;a<b;a++){if(k=arguments[a]){",g:"s[h]=v",c:"}}"},tn={b:r};zt&&(m=function(e){return e?yt.call(e,"callee"):i});var nn=c(Zt,tn,{l:i}),rn=c(Zt,tn),sn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},on=E(sn),un=c(en,{g:"if(s[h]==null)"+en.g}),an=c(en),fn=Tt||function(e){return St.call(e)==_t};x(/x/)&&(x=function(e){
24
+ return"[object Function]"==St.call(e)});var ln=gt?function(e){if(!e||"object"!=typeof e)return i;var t=e.valueOf,n="function"==typeof t&&(n=gt(t))&&gt(n);return n?e==n||gt(e)==n&&!m(e):g(e)}:g,cn=kt?function(e){return"function"==typeof e&&wt.call(e,"prototype")?y(e):T(e)?kt(e):[]}:y,hn=c(Zt);s.VERSION="0.9.2",s.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments)}},s.bind=W,s.bindAll=function(e){for(var t=arguments,n=1<t.length?0:(t=w(e),-1),r=t.length;++n<r;){var i=
25
+ t[n];e[i]=W(e[i],e)}return e},s.chain=function(e){return e=new s(e),e.__chain__=n,e},s.clone=b,s.compact=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;){var i=e[t];i&&r.push(i)}return r},s.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length;n--;)t=[e[n].apply(this,t)];return t[0]}},s.contains=L,s.countBy=function(e,t,n){var r={},t=l(t,n);return hn(e,function(e,n,i){n=t(e,n,i),yt.call(r,n)?r[n]++:r[n]=1}),r},s.debounce=function(e,t,n){function i(){a=r,n||(o=e.apply
26
+ (u,s))}var s,o,u,a;return function(){var r=n&&!a;return s=arguments,u=this,clearTimeout(a),a=setTimeout(i,t),r&&(o=e.apply(u,s)),o}},s.defaults=un,s.defer=function(e){var n=Et.call(arguments,1);return setTimeout(function(){e.apply(t,n)},1)},s.delay=function(e,n){var r=Et.call(arguments,2);return setTimeout(function(){e.apply(t,r)},n)},s.difference=function(e){for(var t=-1,n=e?e.length:0,r=vt.apply(K,arguments),r=o(r,n),i=[];++t<n;){var s=e[t];r(s)||i.push(s)}return i},s.escape=function(e){return e==
27
+ r?"":(e+"").replace(ct,p)},s.every=A,s.extend=an,s.filter=O,s.find=M,s.first=F,s.flatten=I,s.forEach=hn,s.forIn=nn,s.forOwn=rn,s.functions=w,s.groupBy=function(e,t,n){var r={},t=l(t,n);return hn(e,function(e,n,i){n=t(e,n,i),(yt.call(r,n)?r[n]:r[n]=[]).push(e)}),r},s.has=function(e,t){return e?yt.call(e,t):i},s.identity=X,s.indexOf=q,s.initial=function(e,t,n){return e?Et.call(e,0,-(t==r||n?1:t)):[]},s.intersection=function(e){var t=arguments,n=t.length,r={},i=[];return hn(e,function(e){if(0>q(i,e)
28
+ ){for(var s=n;--s;)if(!(r[s]||(r[s]=o(t[s])))(e))return;i.push(e)}}),i},s.invert=E,s.invoke=function(e,t){var n=Et.call(arguments,2),r="function"==typeof t,i=[];return hn(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},s.isArguments=m,s.isArray=fn,s.isBoolean=function(e){return e===n||e===i||St.call(e)==Dt},s.isDate=function(e){return St.call(e)==Pt},s.isElement=function(e){return e?1===e.nodeType:i},s.isEmpty=function(e){var t=n;if(!e)return t;var r=St.call(e),s=e.length;return r==_t||r==Ft||r==
29
+ Mt||zt&&m(e)||r==Bt&&"number"==typeof s&&x(e.splice)?!s:(rn(e,function(){return t=i}),t)},s.isEqual=S,s.isFinite=function(e){return Nt(e)&&!Ct(parseFloat(e))},s.isFunction=x,s.isNaN=function(e){return St.call(e)==Ht&&e!=+e},s.isNull=function(e){return e===r},s.isNumber=function(e){return St.call(e)==Ht},s.isObject=T,s.isPlainObject=ln,s.isRegExp=function(e){return St.call(e)==jt},s.isString=N,s.isUndefined=function(e){return e===t},s.keys=cn,s.last=function(e,t,n){if(e){var i=e.length;return t==r||
30
+ n?e[i-1]:Et.call(e,-t||i)}},s.lastIndexOf=function(e,t,n){var r=e?e.length:0;for("number"==typeof n&&(r=(0>n?Lt(0,r+n):At(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},s.lateBind=function(e,t){return f(t,e,Et.call(arguments,2))},s.map=_,s.max=D,s.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return yt.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},s.merge=C,s.min=function(e,t,n){var r=Infinity,i=-1,s=e?e.length:0,o=r;if(t||!fn(e))t=!t&&N(e)?u:l(t,n)
31
+ ,hn(e,function(e,n,i){n=t(e,n,i),n<r&&(r=n,o=e)});else for(;++i<s;)e[i]<o&&(o=e[i]);return o},s.mixin=V,s.noConflict=function(){return e._=Z,this},s.object=function(e,t){for(var n=-1,r=e?e.length:0,i={};++n<r;){var s=e[n];t?i[s]=t[n]:i[s[0]]=s[1]}return i},s.omit=function(e,t,n){var r="function"==typeof t,i={};if(r)t=l(t,n);else var s=vt.apply(K,arguments);return nn(e,function(e,n,o){if(r?!t(e,n,o):0>q(s,n,1))i[n]=e}),i},s.once=function(e){var t,s=i;return function(){return s?t:(s=n,t=e.apply(this
32
+ ,arguments),e=r,t)}},s.pairs=function(e){var t=[];return rn(e,function(e,n){t.push([n,e])}),t},s.partial=function(e){return f(e,Et.call(arguments,1))},s.pick=function(e,t,n){var r={};if("function"!=typeof t)for(var i=0,s=vt.apply(K,arguments),o=s.length;++i<o;){var u=s[i];u in e&&(r[u]=e[u])}else t=l(t,n),nn(e,function(e,n,i){t(e,n,i)&&(r[n]=e)});return r},s.pluck=P,s.random=function(e,t){return e==r&&t==r&&(t=1),e=+e||0,t==r&&(t=e,e=0),e+mt(Ot()*((+t||0)-e+1))},s.range=function(e,t,n){e=+e||0,n=+
33
+ n||1,t==r&&(t=e,e=0);for(var i=-1,t=Lt(0,dt((t-e)/n)),s=Array(t);++i<t;)s[i]=e,e+=n;return s},s.reduce=H,s.reduceRight=B,s.reject=function(e,t,n){return t=l(t,n),O(e,function(e,n,r){return!t(e,n,r)})},s.rest=R,s.result=function(e,t){var n=e?e[t]:r;return x(n)?e[t]():n},s.shuffle=function(e){var t=-1,n=Array(e?e.length:0);return hn(e,function(e){var r=mt(Ot()*(++t+1));n[t]=n[r],n[r]=e}),n},s.size=function(e){var t=e?e.length:0;return"number"==typeof t?t:cn(e).length},s.some=j,s.sortBy=function(e,t
34
+ ,n){var r=[],t=l(t,n);hn(e,function(e,n,i){r.push({a:t(e,n,i),b:n,c:e})}),e=r.length;for(r.sort(a);e--;)r[e]=r[e].c;return r},s.sortedIndex=U,s.tap=function(e,t){return t(e),e},s.template=function(e,t,n){e||(e=""),n||(n={});var r,i,o=s.templateSettings,u=0,a=n.interpolate||o.interpolate||lt,f="__p += '",l=n.variable||o.variable,c=l;e.replace(RegExp((n.escape||o.escape||lt).source+"|"+a.source+"|"+(a===ft?at:lt).source+"|"+(n.evaluate||o.evaluate||lt).source+"|$","g"),function(t,n,i,s,o,a){i||(i=s
35
+ ),f+=e.slice(u,a).replace(ht,h),f+=n?"'+__e("+n+")+'":o?"';"+o+";__p+='":i?"'+((__t=("+i+"))==null?'':__t)+'":"",r||(r=o||et.test(n||i)),u=a+t.length}),f+="';",c||(l="obj",r?f="with("+l+"){"+f+"}":(n=RegExp("(\\(\\s*)"+l+"\\."+l+"\\b","g"),f=f.replace(ot,"$&"+l+".").replace(n,"$1__d"))),f=(r?f.replace(nt,""):f).replace(rt,"$1").replace(it,"$1;"),f="function("+l+"){"+(c?"":l+"||("+l+"={});")+"var __t,__p='',__e=_.escape"+(r?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":
36
+ (c?"":",__d="+l+"."+l+"||"+l)+";")+f+"return __p}";try{i=Function("_","return "+f)(s)}catch(p){throw p.source=f,p}return t?i(t):(i.source=f,i)},s.throttle=function(e,t){function n(){a=new Date,u=r,s=e.apply(o,i)}var i,s,o,u,a=0;return function(){var r=new Date,f=t-(r-a);return i=arguments,o=this,0>=f?(clearTimeout(u),a=r,s=e.apply(o,i)):u||(u=setTimeout(n,f)),s}},s.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r<e;)i[r]=t.call(n,r);return i},s.toArray=function(e){return e&&"number"==typeof
37
+ e.length?(Wt?N(e):"string"==typeof e)?e.split(""):Et.call(e):k(e)},s.unescape=function(e){return e==r?"":(e+"").replace(tt,v)},s.union=function(){return z(vt.apply(K,arguments))},s.uniq=z,s.uniqueId=function(e){var t=G++;return e?e+t:t},s.values=k,s.where=function(e,t){var n=[];return nn(t,function(e,t){n.push(t)}),O(e,function(e){for(var r=n.length;r--;){var i=e[n[r]]===t[n[r]];if(!i)break}return!!i})},s.without=function(e){for(var t=-1,n=e?e.length:0,r=o(arguments,1,20),i=[];++t<n;){var s=e[t];
38
+ r(s)||i.push(s)}return i},s.wrap=function(e,t){return function(){var n=[e];return bt.apply(n,arguments),t.apply(this,n)}},s.zip=function(e){for(var t=-1,n=e?D(P(arguments,"length")):0,r=Array(n);++t<n;)r[t]=P(arguments,t);return r},s.all=A,s.any=j,s.collect=_,s.detect=M,s.drop=R,s.each=hn,s.foldl=H,s.foldr=B,s.head=F,s.include=L,s.inject=H,s.methods=w,s.select=O,s.tail=R,s.take=F,s.unique=z,V(s),s.prototype.chain=function(){return this.__chain__=n,this},s.prototype.value=function(){return this.__wrapped__
39
+ },hn("pop push reverse shift sort splice unshift".split(" "),function(e){var t=K[e];s.prototype[e]=function(){var e=this.__wrapped__;return t.apply(e,arguments),Rt&&e.length===0&&delete e[0],this.__chain__&&(e=new s(e),e.__chain__=n),e}}),hn(["concat","join","slice"],function(e){var t=K[e];s.prototype[e]=function(){var e=t.apply(this.__wrapped__,arguments);return this.__chain__&&(e=new s(e),e.__chain__=n),e}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(e._=s,define(function(
40
+ ){return s})):$?"object"==typeof module&&module&&module.exports==$?(module.exports=s)._=s:$._=s:e._=s})(this);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lodash-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2012-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties