VimUnDo's8`NA^\7=*a%PM_ VN-q (typeof define === "undefined" ? function ($) { $(require, exports, module); } : define)(function (require, exports, module, undefined) {5_ VN-q6   5_59VN-q45});5_58VN-q455_57VN-q455_56VN-q455_ 55VN-q4})5_  vN-q 5'/* vim:set ts=2 sw=2 sts=2 expandtab */?/*jshint asi: true undef: true es5: true node: true devel: trueC forin: true latedef: false supernew: true browser: true */#/*global define: true port: true */,!define(function(require, exports, module) { 5_ vN-q+!(typeof define === "undefined" ? function ($) { $(require, exports, module); } : define)(function (require, exports, module, undefined) {0'/* vim:set ts=2 sw=2 sts=2 expandtab */?/*jshint asi: true undef: true es5: true node: true devel: true5 forin: true latedef: false supernew: true *//*global define: true */!(typeof define === "undefined" ? function ($) { $(require, exports, module); } : define)(function (require, exports, module, undefined) {5_ vN-q/ !(typeof define === "undefined" ? function ($) { $(require, exports, module); } : define)(function (require, exports, module, undefined) {,!define(function(require, exports, module) {5_  vN-q/ !(typeof define === "undefined" ? function ($) { $(require, exports, module); } : define)(function (require, exports, module, undefined) {5_ ' vN-q  / 5_(&'-vN-t,./})(Array.prototype.slice)5_')(+vN-t*,/ }5_(*)*vN-t)+/ return args[0]5_)+*)<vN-t(*/< while (0 <= --i) args = [ funcs[i].apply(this, args) ]5_*,+)vN-t(+/= while (0 <= --i) args = [ funcs[i].apply(this, args) ];5_+-,(vN-t')0 var i = funcs.length5_,.-'&vN-t&(0& var args = slice.call(arguments)5_-/.%%vN-t$&0% var funcs = slice.call(arguments)5_.0/vN-t 0 var self = this, args = []5_/10vN-t  0 }).apply(self, arguments)5_021!vN-t "0}5_132-vN-u ,.0 }5_243"vN-u`"&1"$05_354$vN-ue#%3 *5_465$PvN-uj#&3 * Returns the composition of a list of functions, where each function consumes the return value of the function that follows. In math terms, composing the functions f(), g(), and h() produces f(g(h())). 5_576%OvN-up$'4 * the return value of the function that follows. In math terms, composing the functions f(), g(), and h() produces f(g(h())). 5_687&3vN-uu%'53 * functions f(), g(), and h() produces f(g(h())). 5_798& vN-ux%'52 * functions f(), g(), and h() produces f(g(h())).5_8:9&vN-uz%'53 * functions `f(), g(), and h() produces f(g(h())).5_9;:&vN-u|%'54 * functions `f()`, g(), and h() produces f(g(h())).5_:<;&vN-u}%'55 * functions `f()`, `g(), and h() produces f(g(h())).5_;=<&vN-u%'56 * functions `f()`, `g()`, and h() produces f(g(h())).5_<>=&#vN-u%'57 * functions `f()`, `g()`, and `h() produces f(g(h())).5_=?>&.vN-u%'58 * functions `f()`, `g()`, and `h()` produces f(g(h())).5_>@?&8vN-u%'59 * functions `f()`, `g()`, and `h()` produces `f(g(h())).5_?A@&8vN-u'-7 * &)6 * &(55_@BA)vN-u'*;= * var greet = function(name){ return "hi: " + name; };>var exclaim = function(statement){ return statement + "!"; };(*;>var exclaim = function(statement){ return statement + "!"; };5_ACB*vN-u(+;D * var exclaim = function(statement){ return statement + "!"; };(var welcome = _.compose(exclaim, greet);)+;(var welcome = _.compose(exclaim, greet);5_BDC+vN-u),;. * var welcome = _.compose(exclaim, greet);welcome('moe');*,;welcome('moe');5_CED,vN-u*-; * welcome('moe'); 'hi: moe!'+-; => 'hi: moe!'5_DFE, vN-u+-; * // > 'hi: moe!'5_EGF vN-u < *  ;5_FHG vN-v  </ * Transforms normal function into curried one.5_GIH vN-v <, * Returns normal function into curried one.5_HJI -vN-v <- * Returns curried function into curried one.5_IKJ0vN-vE= * <5_JLK vN-vO? * > * =5_KMLvN-vXA })5_LNMvN-vZA return a + b5_MONvN-v^A })5_NPOvN-vlB * A * })5_OQP vN-vmC * B5_PRQ vN-vsE * D * C5_QSRvN-vzI" * var sum = curry(function() {Ereturn Array.prototype.reduce.call(arguments, function(sum, number) {IL return Array.prototype.reduce.call(arguments, function(sum, number) {5_RTS vN-v~IM * return Array.prototype.reduce.call(arguments, function(sum, number) {return sum + numberI return sum + number5_SUTvN-vI * return sum + number}, 0)I }, 0)5_TVUvN-vI * }, 0)})I })5_UWVvN-vJ * I5_VXW"vN-v K *  J5_WYXJN:WJLLJLK5_XZYKN:\JLLfunction find()5_Y[ZKN:\JMLfunction find() {}5_Z\[LN:bLNM5_[]\JN:gJLOJLN5_\^]KN:oJLOfunction each()5_]_^KN:pJMOfunction each() {}5_^`_KN:uJLPfunction each() {5__a`KN:{KMP5_`baKN:JLQfunction each(object) {5_acbLN:LN while KNQ5_bdcLN:KMR var length = value.length5_cedM N:LNR while ()5_dfeM N:MOR5_egfKN:JLSfunction each(value) {5_fhgNN:MOS5_gihN N:MOS lambda()5_hjiNN:MOS lambda(value)5_ikjNN:MOS lambda(value[])5_jlkON:OQS5_kmlKN:JLTfunction each(value, lambda) {5_lnmK&N:JLT)function each(value, lambda /*, ...*/ ) {5_mqnNN:MOT lambda(value[index])5_nroqON:DORUOQT5_qsrKN:HJLV(function each(value, lambda /*, ...*/) {5_rtsQN:NPQ function find5_sutQN:OPQ5_tvuQN:PPRTfunction find() {5_uwvK4N:_JLT7exports.each = function each(value, lambda /*, ...*/) {5_vxwQN:cQSU QST5_wyxQN: PRU exports.find = function find() {5_xzyRN:RTU5_y{zQ"N:PRV%exports.find = function find(value) {5_z|{SN:RTV5_{}|S N: RTV while ()5_|~}NN:%MOV lambda.apply(value[index])5_}~SN:(RTV while (index)5_~NN:KLNV while (index < length)lambda.apply(value[index++])MOV lambda.apply(value[index++])5_RN:MQSU while (index < length)5_RN:SQTU while (index < length) {}5_RN:TRTW RTV5_S N:_RTW if ()5_M%N:mLNW5 while (index < length) lambda.apply(value[index++])5_SN:pRTW var result = lambda5_SN:qRTW var result = lambda()5_SN:rRTW var result = lambda(value[])5_S$N:uSUX SUW5_TN:xSUX if ()5_TN:zSUX if (result)5_TN:SUX if (result) return result5_TN:SUX( if (result !=== undef) return result5_TN:SUX, if (result !=== undefined) return result5_T+N:SUX+ if (result !== undefined) return result5_T,N:SUX, if (result !== undefined) return result;5_SN:RTX' var result = lambda(value[index++])5_SN:RTX if (lambda(value[index++])5_SN:SUY SUX5_TN:SUY return value[]5_TN:SUY return value[index--]5_TN:SUY return value[--index--]5_UN:TU+ if (result !== undefined) return result5_TN:RTX if (lambda(value[index++]))return value[--index]SUX return value[--index]5_".WVNI-!#W. length = length || target.length || Infinity5_./WVNI-/W/ target.apply(self, args) : currier5_.6WVNI-/W7 target.apply(self, args) : currier.apply()5_.FWVNI-/WF target.apply(self, args) : currier.apply(self, arguments)5_./WVNI<-/WG target.apply(self, args) : currier.apply(self, arguments);5_#WVNI"$W return function curried() {5_#WVNI"$W! return function curried(args) {5_# WVNI*"$W) return function curried(target, args) {5_0WVNI0/1W }5_0WVNI9/1W })()5_$WVNIA#$ var self = this, args = [];5_-5VVNI`,.VG target.apply(self, args) : curried.apply(self, arguments);5_->VVNIg,.VA target.apply(self, args) : curried(self, arguments);5_-0VVNIm,.V6 target.apply(self, args) : curried(args);5_.VVNI-/V }).apply(self, arguments);5_.VVNI-/V });5_$ VVNI#%V return (function currier() {5_/ VVNI.0V })(target, [])5_##VVNI"$V* return (function curried(target, args) {5_,VVNI*,V? return ((args.length === args.push.apply(args, arguments)3&& Infinity === length) || args.length >= length) ?+-VB && Infinity === length) || args.length >= length) ?5_+CUVNI*-Us return ((args.length === args.push.apply(args, arguments) && Infinity === length) || args.length >= length) ?5_- VVNI,.V> target.apply(self, args) : curried(target, args);5_-VVNI,.VA target.apply(self, args) : curried(target, args);5_,'VVNI+.V? Infinity === length) || args.length >= length) ?5_-WVNI,.W& args.length >= length) ?5_- WVNI+-W& Infinity === length) ||args.length >= length) ?,.W% args.length >= length) ?5_-VVNI,.V@ target.apply(self, args) : curried(target, args);5_-VVNI,.V? target.apply(self, args) : curried(target, args);5_-9VVNI!,.V? target.apply(this, args) : curried(target, args);5_/VVNI"".0V })(target, length, [])5_" " "!v!NI-!#V" length = length || target.length5_"" "!v!NI-!" length = 5_." "!v!NI1%-/U })(target, length, []);5_,E" "!v!NI'+-UG target.apply(this, args) : curried(target, length, args);5_*(" "!v!NI4))+UB return ((args.length === args.push.apply(args, arguments) &&5_*" "!v!NIX)+UD return ((args.length === args.concat.apply(args, arguments) &&5_*8" "!v!NIl)+Ua return ((args.length + arguments.length >= length)=== args.concat.apply(args, arguments) &&5_*e" "!v!NI|)+Ue return ((args.length + arguments.length >= length) || === args.concat.apply(args, arguments) &&5_+" "!v!NI)+U< return ((args.length + arguments.length >= length) || 0Infinity === length) || args.length >= length) ?*,U? Infinity === length) || args.length >= length) ?5_*<" "!v!NI*,> Infinity === length) || args.length >= length) ?),Tl return ((args.length + arguments.length >= length) || Infinity === length) || args.length >= length) ?5_+" "!v!NI*,UP (arguments.length Infinity === length) || args.length >= length) ?5_+!" "!v!NI*,UQ (!arguments.length Infinity === length) || args.length >= length) ?5_+Q" "!v!NI*,UT (!arguments.length && Infinity === length) || args.length >= length) ?5_+8" "!v!NI*,U: (!arguments.length && Infinity === length) ?5_#" "!v!NI#%V #%U5_$" "!v!NI#%V args = args.concat.apply()5_$" "!v!NI#%V args = args.concat())5_$!" "!v!NI#%V" args = args.concat(argument)5_+&" "!v!NI*,V; return ((args.length + arguments.length >= length) ||5_+%" "!v!NI*,V( return ((args.length >= length) ||5_+" "!v!NI*,V' return ((args.length >= length ||5_," "!v!NI*,V& return (args.length >= length ||-(!arguments.length && Infinity === length)) ?+-V; (!arguments.length && Infinity === length)) ?5_+'" "!v!NI'**-UT return (args.length >= length || (!arguments.length && Infinity === length)) ?5_-M" "!v!NI5+,.VO target.apply(this, args) : curried(target, length, args.slice());5_"" "!v!NIm!#V2 return (function curried(target, length, args) {5_#" "!v!NIq"$V return function currier() {5_-0" "!v!NIw,.VG target.apply(this, args) : curried(target, length, args);5_-0" "!v!NIy,,.VG target.apply(this, args) : curried(target, length, args);5_$" "!v!NIN#%V# args = args.concat(arguments)5_$>" "!v!NIU1#%V> args = args.concat(Array.prototype.slice.call(arguments)5_,$,$,6v6NI+-V; (!arguments.length && Infinity === length)) ?5_,$,$,6v6NI+-V( (!arguments.length && )) ?5_,,$,6v6NI4+-V$ (!arguments.length)) ?5_"/,$,6v6NIi!#V2 return (function currier(target, length, args) {5_$,$,6v6NIo5#%V? args = args.concat(Array.prototype.slice.call(arguments))5_$,$,6v6NIw9#%V? args = rest.concat(Array.prototype.slice.call(arguments))5_"/$$7v7NJ!!#V2 return (function currier(target, length, rest) {5_$"2"+v+NJ!<#%VC var args = rest.concat(Array.prototype.slice.call(arguments))5_,'"2"+v+NJ"+-V; (Infinity === length && !arguments.length)) ?5_,6"2"+v+NJ"=+-V: (Infinity === length && arguments.length)) ?5_$"2"+v+NJ"$&W $&V5_%"2"+v+NJ">$&W console.log()5_%"2"+v+NJ#Z?$% console.log(args)5_$"2"+v+NJ#d#%VG var args = currying.concat(Array.prototype.slice.call(arguments))5_$"2"+v+NJ#i#%VG var rest = currying.concat(Array.prototype.slice.call(arguments))5_$"2"+v+NJ#k#%VD var rest = årgs.concat(Array.prototype.slice.call(arguments))5_"3"2"+v+NJ#p!#V6 return (function currier(target, length, currying) {5_+"2"+v+NJ#x*,V& return (args.length >= length ||5_-E"2"+v+NJ#~,.VG target.apply(this, args) : currier(target, length, args);5_-%"2"+v+NJ#@,.VG target.apply(this, args) : currier(target, length, rest);5_$*"2"+v+NJ#$&W $&V5_%%1%vNJ#$&W2 // If all expected arguments were collected 5_%%1%vNJ#$% 5_*%1%vNJ#*,W // *,V5_+%1%vNJ#*,W5 // // If all expected arguments were collected 5_*%1%vNJ#*,W5_+%1%vNJ#*,X //5_+%1%vNJ#*+ 5_*%1%vNJ#*,X // *,W5_-%,,2vNJ#-/Y -/X5_,2,,2vNJ#+-Y2 // If all expected arguments were collected 5_. ,,2vNJ#-/Y // 5_. ,,2vNJ$%-/Y6 // or expected number of arguments is not finite5_.9,,2vNJ$'-/Y9 // or if expected number of arguments is not finite5_.2,,2vNJ$--/Y8 // or if expected number of arguments is inifinte 5_.7,,2vNJ$1-/Y7 // or if expected number of arguments is infinte 5_.,,2vNJ$7-/Y7 // or if expected number of arguments is infinite5_.,,2vNJ$;-/Y; // or number expected number of arguments is infinite5_.(,,2vNJ$=-/Y> // or number of expected number of arguments is infinite5_.>,,2vNJ$@-0Y> // or number of expected arguments arguments is infinite5_ 0?,,2vNJ$b02[ 02Z5_  %,,2vNJ$j$%D // If no argument is being curried (`currier` is called with 05_   %++2vNJ$j$%H // arguments) and infinite number of arguments is expected we stop5_   %**2vNJ$j$%L // currying. Else if number of expected arguments is already collected5_   %))2vNJ$j$%L // we stop currying. One we stop currying we apply collected arguments5_  %((2vNJ$j$%G // to the target `funciton` and return result. If currying is not5_ %''2vNJ$k$%: // stopped we return `currier` to continue currying.5_%&&2vNJ$k$%5_* %%2vNJ$n)+T // 5_*"%%2vNJ${)+T" // we call carried funciton 5_(2%%2vNJ$')T2 // function is called without any arguments.5_%'%%2vNJ$$&T2 // If all expected arguments were collected,5_'2%%2vNJ$&(TL // or number of expected arguments arguments is infinite and `curried`5_' %%2vNJ$&(T9 // or number of expected is infinite and `curried`5_'%%2vNJ$&(TB // or infinite number of expected is infinite and `curried`5_'O%%2vNJ$&(TO // or infinite number of arguments is expected is infinite and `curried`5_(%%2vNJ$&(T9 // or infinite number of arguments is expected and )function is called without any arguments,')T2 // function is called without any arguments,5_'D%%2vNJ$&(Sb // or infinite number of arguments is expected and function is called without any arguments,5_'M%%2vNJ$&)Sc // or infinite number of arguments is expected and function was called without any arguments,5_(%%2vNJ$')T // without any arguments,5_* %%2vNJ$)+T! // we call carried function5_*%%2vNJ$)+T // carried function5_ *%%%2vNJ$)+T% // carried function is invoked 5_! *F%%2vNJ%B),TF // carried function is invoked with all the arguments collected.5_ "!HUVNJ4CGH -exports.each = function each(value, lambda) {& var index = 0, length = value.length/ while (index < length) lambda(value[index++])}-exports.find = function find(value, lambda) {& var index = 0, length = value.length while (index < length) {5 if (lambda(value[index++])) return value[--index] }}5_!#"22:vN`13I O * Returns the composition of a list of functions, where each function consumesN * the return value of the function that follows. In math terms, composing the: * functions `f()`, `g()`, and `h()` produces `f(g(h()))`. * @exmple= * var greet = function(name){ return "hi: " + name; };D * var exclaim = function(statement){ return statement + "!"; };. * var welcome = _.compose(exclaim, greet); * welcome('moe'); * //> 'hi: moe!' */5_"$#222vN`12 * */5_#%$122vN`01/**5_$&%211vN`2=? 24>5_%'&3 11vN`24HU doc: Returns the composition of a list of functions, where each function consumes5_&('3N11vN`35 | consumes25HV doc: "Returns the composition of a list of functions, where each function consumes5_')(511vN`35I | "consumesKthe return value of the function that follows. In math terms, composing the46IN * the return value of the function that follows. In math terms, composing the5_(*)4Q11vN`35H^ | "consumes the return value of the function that follows. In math terms, composing the5_)+*4I11vN`46 terms,composing the36H] | "consumes the return value of the function that follows. In math terms,composing the5_*,+511vN`46I "terms,composing the5_+-,611vN`46I | "terms,composing the7functions `f()`, `g()`, and `h()` produces `f(g(h()))`.57I: * functions `f()`, `g()`, and `h()` produces `f(g(h()))`.5_,.-511vN`46HU | "terms,composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`.5_-/.5J11vN`57 | `f(g(h()))`.47HV | "terms, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`.5_.0/6 11vN`57I | ""`f(g(h()))`.5_/10611vN`57I | "`f(g(h()))`.5_0217 11vN`68I * @exmple5_1327 11vN`68I | ""5_243811vN`79I= * var greet = function(name){ return "hi: " + name; };5_3548A11vN`79IA | "var greet = function(name){ return "hi: " + name; };5_4658011vN`79IB | "var greet = function(name){ return "hi: " + name; };"5_5768511vN`79IB | "var greet = function(name){ return 'hi: " + name; };"5_687811vN`79IB | "var greet = function(name){ return 'hi: ' + name; };"5_7988$11vN`79I? | "var greet = function(name){ return 'hi: ' + name; };"5_8:98<11vN`79I@ | "var greet = function(name) { return 'hi: ' + name; };"5_9;:8>11vN`79I? | "var greet = function(name) { return 'hi: ' + name };"5_:<;911vN`8:ID * var exclaim = function(statement){ return statement + "!"; };5_;=<9A11vN`8:IH | "var exclaim = function(statement){ return statement + "!"; };5_<>=9C11vN`8:IH | "var exclaim = function(statement){ return statement + '!"; };5_=?>9,11vN`8:IH | "var exclaim = function(statement){ return statement + '!'; };5_>@?9F11vN`8:II | "var exclaim = function(statement) { return statement + '!'; };5_?A@9H11vN`8:IH | "var exclaim = function(statement) { return statement + '!' };5_@BA:11vN`9;I. * var welcome = _.compose(exclaim, greet);5_ACB:211vN`9;I2 | "var welcome = _.compose(exclaim, greet);5_BDC:11vN` 9;I2 | "var welcome = _.compose(exclaim, greet)"5_CED911vN` 8:IH | "var exclaim = function(statement) { return statement + '!' }"5_DFE;11vN`:<I * welcome('moe');5_EGF;11vN`:<I | "welcome('moe');5_FHG<11vN`;=I * //> 'hi: moe!'5_GJH<11vN`D;=I | "//> 'hi: moe!'5_HKIJG NpGJJGII5_JLKINpHJK exports.apply = Function5_KMLINpHJKexports.apply = Function5_LNMI NpHJK exports.apply = function apply()5_MONI"NpEHKK#exports.apply = function apply() {}5_NPOINpFHJL"exports.apply = function apply() {5_OQPI0NpGHJL3exports.apply = function apply(lambda, arguments) {5_PRQI*NpIKM IKL5_QSRJNpIKM lambda.apply()5_RTSJNpIKM lambda.apply()5_SUTJNpIIKM lambda.apply(this, args)5_TVU  vNr M/**1 * Returns curried version of the given function. * @param {Function} target * Function to curry.3 * @param {Number} [length=target.length||Infinity]L * Number of argument to curry. If not provided length of target functionL * is used by default unless it's 0, in such case length will be infinityN * and function curry will stop once currier is executed without arguments. * @examples *& * var sum = curry(function(a, b) { * return a + b * })! * console.log(sum(2, 2)) // 4! * console.log(sum(2)(4)) // 6 *" * var sum = curry(function() {M * return Array.prototype.reduce.call(arguments, function(sum, number) { * return sum + number * }, 0) * })# * console.log(sum(2, 2)()) // 4- * console.log(sum(2, 4, 5)(-3)(1)()) // 9 */5_UWV  vNs 5_VXW  vNu "6  55_WYX  vNڒ M1 * Returns curried version of the given function.5_XZY  vNڒ M0* Returns curried version of the given function.5_Y[Z  vNڔ M/ Returns curried version of the given function.5_Z][  vNڕ M.Returns curried version of the given function.5_[^\]  vNڽ M * @param {Function} target5_]_^  vNڽ M @param {Function} target5_^`_  vN M @param {Function} target5__a`  vN M * Function to curry.5_`ba vN M3 * @param {Number} [length=target.length||Infinity]5_acb vNM *M * @examplesMN * and function curry will stop once currier is executed without arguments.ML * is used by default unless it's 0, in such case length will be infinityML * Number of argument to curry. If not provided length of target function5_bdc vNM! * console.log(sum(2)(4)) // 6M! * console.log(sum(2, 2)) // 4M * })M * return a + bM& * var sum = curry(function(a, b) {5_ced vNM * }, 0)M * return sum + numberMM * return Array.prototype.reduce.call(arguments, function(sum, number) {M" * var sum = curry(function() {M *5_dge vN!M- * console.log(sum(2, 4, 5)(-3)(1)()) // 9 M# * console.log(sum(2, 2)()) // 4M * })5_ehfg! vN "M */5_gih! vNJ!#N !#M5_hji3 vN35O 35N5_ikj5  vN46ON doc: "Returns the composition of a list of functions, where each function"5_jlk5H vN 46OH Returns the composition of a list of functions, where each function"5_kml6 vN57OJ | "consumes the return value of the function that follows. In math"5_lnm6 vN57OI | "consumes the return value of the function that follows. In math"5_mon6 vN57OH | "consumes the return value of the function that follows. In math"5_npo6 vN57OG | "consumes the return value of the function that follows. In math"5_oqp6 vN57OF "consumes the return value of the function that follows. In math"5_prq6 vN 57OE "consumes the return value of the function that follows. In math"5_qsr6D vN$57OD consumes the return value of the function that follows. In math"5_rts7 vN-68OJ | "terms, composing the functions `f()`, `g()`, and `h()` produces"5_sut8 vN1;=O0 | "var welcome = compose(exclaim, greet)":<OG | "var exclaim = function(statement) { return statement + '!' }"9;O> | "var greet = function(name) { return 'hi: ' + name }"8:O | "Usage:"79O | "`f(g(h()))`."5_tvu= vN7=?O | "//> 'hi: moe!'"<>O | "welcome('moe')"5_uwv> vN@=?O //> 'hi: moe!'5_vxw> vNA>@P // >@O5_wyx0 vNK/1P};5_xzy/* vNL.0P* })(target, length || target.length, []);5_y{z-G vNN,.PG target.apply(this, rest) : currier(target, length, rest);5_z|{A& vNW@BP& var funcs = slice.call(arguments);5_{}|C' vNXBDP' var args = slice.call(arguments);5_|~}D vNYCEP var i = funcs.length;5_}~F. vN[EGP. args = [ funcs[i].apply(this, args) ];5_~G vN\FHP return args[0];5_J vN^KIKP})(Array.prototype.slice);5_ vNہL  5_ 0 vP^ P(0exports.curry = function curry(target, length) { /**0 Returns curried version of the given function. @param {Function} target Function to curry.2 @param {Number} [length=target.length||Infinity]K Number of argument to curry. If not provided length of target functionK is used by default unless it's 0, in such case length will be infinityM and function curry will stop once currier is executed without arguments. @examples% var sum = curry(function(a, b) { return a + b }) console.log(sum(2, 2)) // 4 console.log(sum(2)(4)) // 6! var sum = curry(function() {L return Array.prototype.reduce.call(arguments, function(sum, number) { return sum + number }, 0) })" console.log(sum(2, 2)()) // 4, console.log(sum(2, 4, 5)(-3)(1)()) // 9 **/2 return (function currier(target, length, args) { return function curried() {C var rest = args.concat(Array.prototype.slice.call(arguments))1 // If all expected arguments are collected,& return (rest.length >= length ||L // or infinite number of arguments is expected and function was called // without arguments,@ (Infinity === length && arguments.length === 0)) ?P // carried function is invoked with all the arguments collected. OtherwiseK // new curried function is returned to continue collecting arguments.F target.apply(this, rest) : currier(target, length, rest) }) })(target, length || target.length, [])}5_$ vP#$5_$ vP#$.exports.apply = function apply(lambda, args) {5_$ vP#$! return lambda.apply(this, args)5_$ vPM#$}5_egf vNM M @example 5_[]\  vNڟ M param {Function} target5_HJI111VN`<02I5_' %%2vNJ$&(TU // or infinite number of expected arguments arguments is infinite and `curried`5_$$$7v7NI#%V( var args = rest.concat(arguments))5_$'$$7v7NI7#%V' var args = rest.concat(arguments)5_,+J+\v6NI+-V-(Infinity === length && !arguments.length)) ?*-VT return (args.length >= length || (Infinity === length && !arguments.length)) ?5_$ " "!v!NI#%V3 args = Array.prototype.concat.call(arguments)5_$)" "!v!NI/#%V9 args = Array.prototype.concat.call(args, arguments)5_+P" "!v!NI*,US return (args.length >= length || (!arguments.length && Infinity === count)) ?5_+#" "!v!NI*,UR return (args.length >= count || (!arguments.length && Infinity === count)) ?5_,%" "!v!NI+-UP target.apply(this, args.) : curried(target, length, args.slice());5_*<" "!v!NI)+Tn return ((args.length + arguments.length >= length) || arInfinity === length) || args.length >= length) ?5_#" "!v!NIH#$U #%V args = args.5_*A" "!v!NI9()+UK return ((args.length === args.concat.apply(args, arguments).length &&5_".WVNI!#W& length = length || target.length || 5_npqoNN:!MOT lambda.apply([value[index])5_opNN:+MOT' lambda.apply([value[index]].concat())5_'&-vN-t,./})(Function.pr.prototype.slice)5_&)9vN-s(*/@ while (0 <= --i) args = [ funcs[i].apply(this, argument) ]5_'vN-s&(5_)vN-s(*. return argument[0]5_)vN-s(*. return arguments[0]5_#,vN-t"$.exports.compose = 5_$ vN-t#%.function compose() {"%.&exports.compose = function compose() {5_+*#%v%N-t*,5_#%*#%v%N-t!"+,&exports.compose = function compose() {# var funcs = slice.call(arguments) return function composed() { var i = funcs.length> while (0 <= --i) args = [ funcs[i].apply(this, argument) ] return arguments[0] }}5_$#*#%v%N-t$#%,' var funcs = arguments.length === 1 []5_$&*#%v%N-t+#%,3 var funcs = arguments.length === 1 [ arguments[]]5_$1*#%v%N-t/#%,4 var funcs = arguments.length === 1 [ arguments[0]]5_$3*#%v%N-t0#%,5 var funcs = arguments.length === 1 [ arguments[0] ]5_$5*#%v%N-t1#%,? var funcs = arguments.length === 1 [ arguments[0] ] : Array()5_$>*#%v%N-t4#%,H var funcs = arguments.length === 1 [ arguments[0] ] : Array(arguments)5_$=*#%v%N-t8#%,N var funcs = arguments.length === 1 [ arguments[0] ] : Array.aplly(arguments)5_$B*#%v%N-t;#%,N var funcs = arguments.length === 1 [ arguments[0] ] : Array.apply(arguments)5_ $D*#%v%N-t?#%,Q var funcs = arguments.length === 1 [ arguments[0] ] : Array.apply(0, arguments)5_! $E*#%v%N-tB#%,T var funcs = arguments.length === 1 [ arguments[0] ] : Array.apply(null, arguments)5_ "!$$*#%v%N-tK#%,V var funcs = arguments.length === 1 ? [ arguments[0] ] : Array.apply(null, arguments)5_!#"$8+#%v%N-tO#%,7 var funcs = arguments.length === 1 ? [ arguments[0] ]C : Array.apply(null, arguments)5_"$#)+#%v%N-tc(*- return args[0]5_#%$'+#%v%N-tg&(- var i = funcs.length, args5_$%(,#%v%N-ts')- while (0 <= --i)/ args = [ funcs[i].apply(this, argument) ]5_  <vN-q/!(typeof define === "undefined" ? function ($) { $(require, typeof expexports, module); } : define)(function (require, exports, module, undefined) {5_./VN-q -'/* vim:set ts=2 sw=2 sts=2 expandtab */?/*jshint asi: true undef: true es5: true node: true devel: trueC forin: true latedef: false supernew: true browser: true */#/*global define: true port: true */,!define(function(require, exports, module) { /** * @param {Function} target * Function to curry.3 * @param {Number} [length=target.length||Infinity]L * Number of argument to curry. If not provided length of target functionL * is used by default unless it's 0, in such case length will be infinityN * and function curry will stop once currier is executed without arguments. */0exports.curry = function curry(target, length) {. length = length || target.length || Infinity return function curried() { var self = this, args = [] return (function currier() {D // If no argument is being curried (`currier` is called with 0H // arguments) and infinite number of arguments is expected we stopL // currying. Else if number of expected arguments is already collectedL // we stop currying. One we stop currying we apply collected argumentsG // to the target `funciton` and return result. If currying is not: // stopped we return `currier` to continue currying.? return ((args.length === args.push.apply(args, arguments)B && Infinity === length) || args.length >= length) ?/ target.apply(self, args) : currier }).apply(self, arguments) }},exports.compose = (function Compose(slice) { return function compose() {% var funcs = slice.call(arguments) return function composed() {& var args = slice.call(arguments) var i = funcs.length< while (0 <= --i) args = [ funcs[i].apply(this, args) ] return args[0] } }})(Array.prototype.slice)});5