From f60cc76f3e05f5f1b929e1919af9c89dd0099431 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Mon, 24 Feb 2014 22:39:56 -0800 Subject: [PATCH] Reduce the Underscore build. --- dist/lodash.underscore.js | 253 +++++----------------------------- dist/lodash.underscore.min.js | 71 +++++----- 2 files changed, 67 insertions(+), 257 deletions(-) diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index 83b248dfc..942242a41 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -412,48 +412,6 @@ /*--------------------------------------------------------------------------*/ - /** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} data The metadata array. - * @returns {Function} Returns the new bound function. - */ - function baseBind(data) { - var func = data[0], - thisArg = data[3], - partialArgs = data[4], - partialHolders = data[6]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object use disqualifying optimizations by - // converting it to an array before passing it to `composeArgs` - var index = -1, - length = arguments.length, - args = Array(length); - - while (++index < length) { - args[index] = arguments[index]; - } - args = composeArgs(partialArgs, partialHolders, args); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - return bound; - } - /** * The base implementation of `_.create` without support for assigning * properties to the created object. @@ -550,22 +508,7 @@ if (partialArgs) { args = composeArgs(partialArgs, partialHolders, args); } - if (partialRightArgs) { - args = composeArgsRight(partialRightArgs, partialRightHolders, args); - } - if (isCurry && length < arity) { - bitmask |= PARTIAL_FLAG; - bitmask &= ~PARTIAL_RIGHT_FLAG - if (!isCurryBound) { - bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); - } - var newArity = nativeMax(0, arity - length); - return baseCreateWrapper([func, bitmask, newArity, thisArg, args, null, []]); - } var thisBinding = isBind ? thisArg : this; - if (isBindKey) { - func = thisBinding[key]; - } if (this instanceof bound) { thisBinding = baseCreate(func.prototype); var result = func.apply(thisBinding, args); @@ -592,24 +535,11 @@ } var index = -1, indexOf = getIndexOf(), - isCommon = indexOf === baseIndexOf, - result = [], - valuesLength = values ? values.length : 0; + result = []; - outer: while (++index < length) { var value = array[index]; - - if (isCommon) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === value) { - continue outer; - } - } - result.push(value); - } - else if (indexOf(values, value) < 0) { + if (indexOf(values, value) < 0) { result.push(value); } } @@ -903,35 +833,20 @@ } var index = -1, indexOf = getIndexOf(), - isCommon = !isSorted && indexOf === baseIndexOf, result = [], seen = (callback && !isSorted) ? [] : result; - outer: while (++index < length) { var value = array[index], computed = callback ? callback(value, index, array) : value; - if (isCommon) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (callback) { - seen.push(computed); - } - result.push(value); - } - else if (isSorted) { + if (isSorted) { if (!index || seen !== computed) { seen = computed; result.push(value); } } else if (indexOf(seen, computed) < 0) { - if (callback) { seen.push(computed); } @@ -971,38 +886,6 @@ return result; } - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} partialRightArg An array of arguments to append to those provided. - * @param {Array} partialHolders An array of `partialRightArgs` placeholder indexes. - * @param {Array|Object} args The provided arguments. - * @returns {Array} Returns a new array of composed arguments. - */ - function composeArgsRight(partialRightArgs, partialRightHolders, args) { - var holdersIndex = -1, - holdersLength = partialRightHolders.length, - argsIndex = -1, - argsLength = nativeMax(args.length - holdersLength, 0), - rightIndex = -1, - rightLength = partialRightArgs.length, - result = Array(argsLength + rightLength); - - while (++argsIndex < argsLength) { - result[argsIndex] = args[argsIndex]; - } - var pad = argsIndex; - while (++rightIndex < rightLength) { - result[pad + rightIndex] = partialRightArgs[rightIndex]; - } - while (++holdersIndex < holdersLength) { - result[pad + partialRightHolders[holdersIndex]] = args[argsIndex++]; - } - return result; - } - /** * Creates a function that aggregates a collection, creating an object or * array composed from the results of running each element of the collection @@ -1074,10 +957,6 @@ bitmask &= ~PARTIAL_FLAG; isPartial = partialArgs = false; } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~PARTIAL_RIGHT_FLAG; - isPartialRight = partialRightArgs = false; - } if (arity == null) { arity = isBindKey ? 0 : func.length; } else if (arity < 0) { @@ -1086,14 +965,9 @@ if (isPartial) { partialHolders = getHolders(partialArgs); } - if (isPartialRight) { - partialRightHolders = getHolders(partialRightArgs); - } // fast path for `_.bind` var data = [func, bitmask, arity, thisArg, partialArgs, partialRightArgs, partialHolders, partialRightHolders]; - return (bitmask == BIND_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) - ? baseBind(data) - : baseCreateWrapper(data); + return baseCreateWrapper(data); } /** @@ -1317,21 +1191,9 @@ * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name'); * // => ['barney', 'fred'] */ - function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[0] : undefined; - } + function first(array, n, guard) { + if (n == null || guard) { + return array ? array[0] : undefined; } return slice(array, 0, n > 0 ? n : 0); } @@ -1479,20 +1341,9 @@ * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name'); * // => ['barney', 'fred'] */ - function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - n = length - n; + function initial(array, n, guard) { + var length = array ? array.length : 0; + n = length - ((n == null || guard) ? 1 : n); return slice(array, 0, n > 0 ? n : 0); } @@ -1595,24 +1446,13 @@ * _.last(characters, { 'employer': 'na' }); * // => [{ 'name': 'pebbles', 'employer': 'na', 'blocked': true }] */ - function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[length - 1] : undefined; - } + function last(array, n, guard) { + var length = array ? array.length : 0; + if (n == null || guard) { + return array ? array[length - 1] : undefined; } n = length - n; - return slice(array, n > 0 ? n : 0); + return slice(array, n > 0 ? n : 0); } /** @@ -1763,20 +1603,11 @@ * _.rest(characters, { 'employer': 'slate' }); * // => [{ 'name': 'pebbles', 'employer': 'na', 'blocked': true }] */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else if (callback == null || thisArg) { + function rest(array, n, guard) { + if (n == null || guard) { n = 1; } else { - n = callback > 0 ? callback : 0; + n = n > 0 ? n : 0; } return slice(array, n); } @@ -2202,13 +2033,14 @@ var indexOf = getIndexOf(), length = collection ? collection.length : 0, result = false; + if (length && typeof length == 'number') { - result = indexOf(collection, target) > -1; - } else { - baseEach(collection, function(value) { - return (result = value === target) && breakIndicator; - }); + return indexOf(collection, target) > -1; } + baseEach(collection, function(value) { + return (result = value === target) && breakIndicator; + }); + return result; } @@ -2600,17 +2432,11 @@ length = collection ? collection.length : 0, result = Array(typeof length == 'number' ? length : 0); - if (arguments.length < 3 && typeof length == 'number') { - while (++index < length) { - var value = collection[index]; - result[index] = isFunc ? methodName.call(value) : value[methodName](); - } - } else { - var args = slice(arguments, 2); - baseEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - } + var args = slice(arguments, 2); + baseEach(collection, function(value) { + result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); + }); + return result; } @@ -3348,16 +3174,9 @@ * // => 'hi fred' */ function bind(func, thisArg) { - if (arguments.length < 3) { - return createWrapper(func, BIND_FLAG, null, thisArg); - } - if (func) { - var arity = func[expando] ? func[expando][2] : func.length, - partialArgs = slice(arguments, 2); - - arity -= partialArgs.length; - } - return createWrapper(func, BIND_FLAG | PARTIAL_FLAG, arity, thisArg, partialArgs); + return arguments.length < 3 + ? createWrapper(func, BIND_FLAG, null, thisArg) + : createWrapper(func, BIND_FLAG | PARTIAL_FLAG, null, thisArg, slice(arguments, 2)); } /** @@ -3742,13 +3561,7 @@ * // => 'hi fred' */ function partial(func) { - if (func) { - var arity = func[expando] ? func[expando][2] : func.length, - partialArgs = slice(arguments, 1); - - arity -= partialArgs.length; - } - return createWrapper(func, PARTIAL_FLAG, arity, null, partialArgs); + return createWrapper(func, PARTIAL_FLAG, null, null, slice(arguments, 1)); } /** diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 28a1182f5..94b51373b 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -3,40 +3,37 @@ * Lo-Dash 2.4.1 (Custom Build) lodash.com/license | Underscore.js 1.6.0 underscorejs.org/LICENSE * Build: `lodash underscore -o ./dist/lodash.underscore.js` */ -;(function(){function n(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++te||typeof t=="undefined"){t=1;break n}if(to(t,l)&&f.push(l)}return f}function s(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(;++ti(l,p)&&(e&&l.push(p),a.push(c))}return a}function m(n,r,t){for(var e=r.length,u=-1,o=Qr(t.length-e,0),i=-1,f=n.length,a=Array(o+f);++it&&(t=0),p&&(i=d(u)),s&&(a=d(o)),n=[n,r,t,e,u,o,i,a],r==er||r==(er|fr)?f(n):c(n)}function d(n){for(var r=-1,t=n.length,e=[];++re?Qr(0,u+e):e||0;else if(e)return e=S(r,t),u&&r[e]===t?e:-1;return n(r,t,e)}function E(n,r,t){if(typeof r!="number"&&null!=r){var e=0,u=-1,o=n?n.length:0;for(r=X(r,t,3);++ur?r=Qr(u+r,0):r>u&&(r=u),typeof t=="undefined"?t=u:0>t?t=Qr(u+t,0):t>u&&(t=u),u=t-r||0,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=X(r,t,3),s(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function M(n,r,t,e){var u=3>arguments.length;r=X(r,e,4);var o=-1,i=n?n.length:0; -if(typeof i=="number")for(u&&i&&(t=n[++o]);++oarguments.length;return r=X(r,e,4),g(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function W(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return s(n,function(n){var t;t=++r,t=0+Wr(Zr()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function z(n,r,t){var e;r=X(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++targuments.length)return _(n,er,null,r);if(n)var t=n[lr]?n[lr][2]:n.length,e=O(arguments,2),t=t-e.length;return _(n,er|fr,t,r,e)}function P(n,r,t){var e,u,o,i,f,a,l,c=0,p=false,s=true;if(!H(n))throw new TypeError;if(r=Qr(0,r)||0,true===t)var g=true,s=false;else J(t)&&(g=t.leading,p="maxWait"in t&&(Qr(r,t.maxWait)||0),s="trailing"in t?t.trailing:s);var h=function(){var t=r-(pt()-i);0>=t||t>r?(u&&clearTimeout(u),t=l,u=a=l=tr,t&&(c=pt(),o=n.apply(f,e),a||u||(e=f=null))):a=setTimeout(h,t) -},v=function(){a&&clearTimeout(a),u=a=l=tr,(s||p!==r)&&(c=pt(),o=n.apply(f,e),a||u||(e=f=null))};return function(){if(e=arguments,i=pt(),f=this,l=s&&(a||!g),false===p)var t=g&&!a;else{u||g||(c=i);var y=p-(i-c),m=0>=y||y>p;m?(u&&(u=clearTimeout(u)),c=i,o=n.apply(f,e)):u||(u=setTimeout(v,y))}return m&&a?a=clearTimeout(a):a||r===p||(a=setTimeout(h,r)),t&&(m=true,o=n.apply(f,e)),!m||a||u||(e=f=null),o}}function U(n,r,t){if(!n)return n;var e=arguments,u=0,o=e.length,i=typeof t;for("number"!=i&&"string"!=i||!e[3]||e[3][t]!==r||(o=2);++u"']/g,hr=/($^)/,vr=/['\n\r\t\u2028\u2029\\]/g,yr="[object Arguments]",mr="[object Array]",br="[object Boolean]",_r="[object Date]",dr="[object Number]",wr="[object Object]",jr="[object RegExp]",xr="[object String]",Ar={"&":"&","<":"<",">":">",'"':""","'":"'"},Tr={"&":"&","<":"<",">":">",""":'"',"'":"'"},Er={"function":true,object:true},Or={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Sr=Er[typeof window]&&window||this,kr=Er[typeof exports]&&exports&&!exports.nodeType&&exports,Nr=Er[typeof module]&&module&&!module.nodeType&&module,qr=kr&&Nr&&typeof global=="object"&&global; -!qr||qr.global!==qr&&qr.window!==qr&&qr.self!==qr||(Sr=qr);var Fr=Nr&&Nr.exports===kr&&kr,Br=Array.prototype,Rr=Object.prototype,$r=Sr._,Ir=Rr.toString,Mr=RegExp("^"+(Ir+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dr=Math.ceil,Wr=Math.floor,zr=Function.prototype.toString,Cr=Rr.hasOwnProperty,Pr=Br.push,Ur=Rr.propertyIsEnumerable,Vr=Br.splice,Gr=j(Gr=Object.create)&&Gr,Hr=j(Hr=Array.isArray)&&Hr,Jr=Sr.isFinite,Kr=Sr.isNaN,Lr=j(Lr=Object.keys)&&Lr,Qr=Math.max,Xr=Math.min,Yr=j(Yr=Date.now)&&Yr,Zr=Math.random; -i.prototype=o.prototype;var nt={};!function(){var n={0:1,length:1};nt.spliceObjects=(Vr.call(n,0,1),!n[0])}(1),o.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Gr||(a=function(){function n(){}return function(r){if(J(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Sr.Object()}}()),x(arguments)||(x=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Cr.call(n,"callee")&&!Ur.call(n,"callee")||false});var rt=function(n,r){if(!J(n))return n; -for(var t in n)if(r(n[t],t,n)===cr)break;return n},tt=function(n){var r=[];if(!J(n))return r;for(var t in n)Cr.call(n,t)&&r.push(t);return r},et=b(function(n,r,t){Cr.call(n,t)?n[t]++:n[t]=1}),ut=b(function(n,r,t){Cr.call(n,t)?n[t].push(r):n[t]=[r]}),ot=b(function(n,r,t){n[t]=r}),it=b(function(n,r,t){n[t?0:1].push(r)},true),ft=$,at=F,lt=Hr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ir.call(n)==mr||false};H(/x/)&&(H=function(n){return typeof n=="function"&&"[object Function]"==Ir.call(n) -});var ct=Lr?function(n){return J(n)?Lr(n):[]}:tt,pt=Yr||function(){return(new Date).getTime()};o.after=function(n,r){if(!H(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0}},o.bind=C,o.bindAll=function(n){for(var r=1i(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},o.invert=function(n){for(var r=-1,t=ct(n),e=t.length,u={};++rarguments.length&&typeof u=="number")for(;++tr?0:r);++nt?Qr(0,e+t):Xr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},o.mixin=nr,o.noConflict=function(){return Sr._=$r,this},o.now=pt,o.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Wr(Zr()*(r-n+1)) -},o.reduce=M,o.reduceRight=D,o.result=function(n,r){if(null!=n){var t=n[r];return H(t)?n[r]():t}},o.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:ct(n).length},o.some=z,o.sortedIndex=S,o.template=function(n,r,t){var u=o,i=u.templateSettings;n=(n||"")+"",t=V({},t,i);var f=0,a="__p+='",i=t.variable;n.replace(RegExp((t.escape||hr).source+"|"+(t.interpolate||hr).source+"|"+(t.evaluate||hr).source+"|$","g"),function(r,t,u,o,i){return a+=n.slice(f,i).replace(vr,e),t&&(a+="'+_.escape("+t+")+'"),o&&(a+="';"+o+";\n__p+='"),u&&(a+="'+((__t=("+u+"))==null?'':__t)+'"),f=i+r.length,r -}),a+="';",i||(a="with(obj||{}){"+a+"}"),a="function("+(i||"obj")+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";try{var l=Function("_","return "+a)(u)}catch(c){throw c.source=a,c}return r?l(r):(l.source=a,l)},o.unescape=function(n){return null==n?"":(n+="",0>n.indexOf(";")?n:n.replace(sr,u))},o.uniqueId=function(n){var r=++pr+"";return n?n+r:r},o.all=q,o.any=z,o.detect=B,o.findWhere=B,o.foldl=M,o.foldr=D,o.include=N,o.inject=M,o.first=A,o.last=function(n,r,t){var e=0,u=n?n.length:0; -if(typeof r!="number"&&null!=r){var o=u;for(r=X(r,t,3);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n?n[u-1]:tr;return e=u-e,O(n,0e||typeof t=="undefined"){t=1;break n}if(tu(r,i)&&o.push(i)}return o}function g(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(;++to(f,c)&&(t&&f.push(c),i.push(a)) +}return i}function _(n,r){return function(t,e,u){var o=r?[[],[]]:{};e=Q(e,u,3),u=-1;var i=t?t.length:0;if(typeof i=="number")for(;++uo&&(o=0),a){u=e;for(var i=-1,a=u.length,c=[];++ie?Gr(0,u+e):e||0;else if(e)return e=O(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function T(n,r,t){return E(n,null==r||t?1:0r?r=Gr(u+r,0):r>u&&(r=u),typeof t=="undefined"?t=u:0>t?t=Gr(u+t,0):t>u&&(t=u),u=t-r||0,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=Q(r,t,3),g(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function I(n,r,t,e){var u=3>arguments.length;r=Q(r,e,4);var o=-1,i=n?n.length:0; +if(typeof i=="number")for(u&&i&&(t=n[++o]);++oarguments.length;return r=Q(r,e,4),h(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function D(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return g(n,function(n){var t;t=++r,t=0+Rr(Kr()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function W(n,r,t){var e;r=Q(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number"){for(;++targuments.length?b(n,tr,r):b(n,tr|ur,r,E(arguments,2))}function C(n,r,t){function e(){l&&clearTimeout(l),i=l=p=rr,(h||g!==r)&&(s=ut(),f=n.apply(c,o),l||i||(o=c=null))}function u(){var t=r-(ut()-a);0>=t||t>r?(i&&clearTimeout(i),t=p,i=l=p=rr,t&&(s=ut(),f=n.apply(c,o),l||i||(o=c=null))):l=setTimeout(u,t)}var o,i,f,a,c,l,p,s=0,g=false,h=true;if(!G(n))throw new TypeError;if(r=Gr(0,r)||0,true===t)var v=true,h=false;else H(t)&&(v=t.leading,g="maxWait"in t&&(Gr(r,t.maxWait)||0),h="trailing"in t?t.trailing:h); +return function(){if(o=arguments,a=ut(),c=this,p=h&&(l||!v),false===g)var t=v&&!l;else{i||v||(s=a);var y=g-(a-s),m=0>=y||y>g;m?(i&&(i=clearTimeout(i)),s=a,f=n.apply(c,o)):i||(i=setTimeout(e,y))}return m&&l?l=clearTimeout(l):l||r===g||(l=setTimeout(u,r)),t&&(m=true,f=n.apply(c,o)),!m||l||i||(o=c=null),f}}function P(n,r,t){if(!n)return n;var e=arguments,u=0,o=e.length,i=typeof t;for("number"!=i&&"string"!=i||!e[3]||e[3][t]!==r||(o=2);++u"']/g,cr=/($^)/,lr=/['\n\r\t\u2028\u2029\\]/g,pr="[object Arguments]",sr="[object Array]",gr="[object Boolean]",hr="[object Date]",vr="[object Number]",yr="[object Object]",mr="[object RegExp]",_r="[object String]",br={"&":"&","<":"<",">":">",'"':""","'":"'"},dr={"&":"&","<":"<",">":">",""":'"',"'":"'"},wr={"function":true,object:true},jr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},xr=wr[typeof window]&&window||this,Ar=wr[typeof exports]&&exports&&!exports.nodeType&&exports,Tr=wr[typeof module]&&module&&!module.nodeType&&module,Er=Ar&&Tr&&typeof global=="object"&&global; +!Er||Er.global!==Er&&Er.window!==Er&&Er.self!==Er||(xr=Er);var Or=Tr&&Tr.exports===Ar&&Ar,kr=Array.prototype,Sr=Object.prototype,Nr=xr._,qr=Sr.toString,Fr=RegExp("^"+(qr+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Br=Math.ceil,Rr=Math.floor,$r=Function.prototype.toString,Ir=Sr.hasOwnProperty,Mr=kr.push,Dr=Sr.propertyIsEnumerable,Wr=kr.splice,zr=w(zr=Object.create)&&zr,Cr=w(Cr=Array.isArray)&&Cr,Pr=xr.isFinite,Ur=xr.isNaN,Vr=w(Vr=Object.keys)&&Vr,Gr=Math.max,Hr=Math.min,Jr=w(Jr=Date.now)&&Jr,Kr=Math.random; +a.prototype=f.prototype;var Lr={};!function(){var n={0:1,length:1};Lr.spliceObjects=(Wr.call(n,0,1),!n[0])}(1),f.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},zr||(c=function(){function n(){}return function(r){if(H(r)){n.prototype=r;var t=new n;n.prototype=null}return t||xr.Object()}}()),j(arguments)||(j=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ir.call(n,"callee")&&!Dr.call(n,"callee")||false});var Qr=_(function(n,r,t){Ir.call(n,t)?n[t]++:n[t]=1 +}),Xr=_(function(n,r,t){Ir.call(n,t)?n[t].push(r):n[t]=[r]}),Yr=_(function(n,r,t){n[t]=r}),Zr=_(function(n,r,t){n[t?0:1].push(r)},true),nt=R,rt=q,tt=Cr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&qr.call(n)==sr||false};G(/x/)&&(G=function(n){return typeof n=="function"&&"[object Function]"==qr.call(n)});var et=Vr?function(n){return H(n)?Vr(n):[]}:n,ut=Jr||function(){return(new Date).getTime()};f.after=function(n,r){if(!G(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0 +}},f.bind=z,f.bindAll=function(n){for(var r=1i(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},f.invert=function(n){for(var r=-1,t=et(n),e=t.length,u={};++rr?0:r);++nt?Gr(0,e+t):Hr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},f.mixin=Z,f.noConflict=function(){return xr._=Nr,this},f.now=ut,f.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Rr(Kr()*(r-n+1)) +},f.reduce=I,f.reduceRight=M,f.result=function(n,r){if(null!=n){var t=n[r];return G(t)?n[r]():t}},f.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:et(n).length},f.some=W,f.sortedIndex=O,f.template=function(n,r,t){var e=f,u=e.templateSettings;n=(n||"")+"",t=U({},t,u);var i=0,a="__p+='",u=t.variable;n.replace(RegExp((t.escape||cr).source+"|"+(t.interpolate||cr).source+"|"+(t.evaluate||cr).source+"|$","g"),function(r,t,e,u,f){return a+=n.slice(i,f).replace(lr,o),t&&(a+="'+_.escape("+t+")+'"),u&&(a+="';"+u+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),i=f+r.length,r +}),a+="';",u||(a="with(obj||{}){"+a+"}"),a="function("+(u||"obj")+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";try{var c=Function("_","return "+a)(e)}catch(l){throw l.source=a,l}return r?c(r):(c.source=a,c)},f.unescape=function(n){return null==n?"":(n+="",0>n.indexOf(";")?n:n.replace(fr,i))},f.uniqueId=function(n){var r=++ir+"";return n?n+r:r},f.all=N,f.any=W,f.detect=F,f.findWhere=F,f.foldl=I,f.foldr=M,f.include=S,f.inject=I,f.first=x,f.last=function(n,r,t){var e=n?n.length:0; +return null==r||t?n?n[e-1]:rr:(r=e-r,E(n,0