// Generated by LiveScript 1.6.0 var each, map, compact, filter, reject, remove, partition, find, head, first, tail, last, initial, empty, reverse, unique, uniqueBy, fold, foldl, fold1, foldl1, foldr, foldr1, unfoldr, concat, concatMap, flatten, difference, intersection, union, countBy, groupBy, andList, orList, any, all, sort, sortWith, sortBy, sum, product, mean, average, maximum, minimum, maximumBy, minimumBy, scan, scanl, scan1, scanl1, scanr, scanr1, slice, take, drop, splitAt, takeWhile, dropWhile, span, breakList, zip, zipWith, zipAll, zipAllWith, at, elemIndex, elemIndices, findIndex, findIndices, toString$ = {}.toString; each = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; f(x); } return xs; }); map = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; results$.push(f(x)); } return results$; }); compact = function(xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (x) { results$.push(x); } } return results$; }; filter = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (f(x)) { results$.push(x); } } return results$; }); reject = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!f(x)) { results$.push(x); } } return results$; }); remove = curry$(function(el, xs){ var i, x$; i = elemIndex(el, xs); x$ = xs.slice(); if (i != null) { x$.splice(i, 1); } return x$; }); partition = curry$(function(f, xs){ var passed, failed, i$, len$, x; passed = []; failed = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; (f(x) ? passed : failed).push(x); } return [passed, failed]; }); find = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (f(x)) { return x; } } }); head = first = function(xs){ return xs[0]; }; tail = function(xs){ if (!xs.length) { return; } return xs.slice(1); }; last = function(xs){ return xs[xs.length - 1]; }; initial = function(xs){ if (!xs.length) { return; } return xs.slice(0, -1); }; empty = function(xs){ return !xs.length; }; reverse = function(xs){ return xs.concat().reverse(); }; unique = function(xs){ var result, i$, len$, x; result = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!in$(x, result)) { result.push(x); } } return result; }; uniqueBy = curry$(function(f, xs){ var seen, i$, len$, x, val, results$ = []; seen = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; val = f(x); if (in$(val, seen)) { continue; } seen.push(val); results$.push(x); } return results$; }); fold = foldl = curry$(function(f, memo, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; memo = f(memo, x); } return memo; }); fold1 = foldl1 = curry$(function(f, xs){ return fold(f, xs[0], xs.slice(1)); }); foldr = curry$(function(f, memo, xs){ var i$, x; for (i$ = xs.length - 1; i$ >= 0; --i$) { x = xs[i$]; memo = f(x, memo); } return memo; }); foldr1 = curry$(function(f, xs){ return foldr(f, xs[xs.length - 1], xs.slice(0, -1)); }); unfoldr = curry$(function(f, b){ var result, x, that; result = []; x = b; while ((that = f(x)) != null) { result.push(that[0]); x = that[1]; } return result; }); concat = function(xss){ return [].concat.apply([], xss); }; concatMap = curry$(function(f, xs){ var x; return [].concat.apply([], (function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) { x = ref$[i$]; results$.push(f(x)); } return results$; }())); }); flatten = function(xs){ var x; return [].concat.apply([], (function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) { x = ref$[i$]; if (toString$.call(x).slice(8, -1) === 'Array') { results$.push(flatten(x)); } else { results$.push(x); } } return results$; }())); }; difference = function(xs){ var yss, res$, i$, to$, results, len$, x, j$, len1$, ys; res$ = []; for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } yss = res$; results = []; outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) { ys = yss[j$]; if (in$(x, ys)) { continue outer; } } results.push(x); } return results; }; intersection = function(xs){ var yss, res$, i$, to$, results, len$, x, j$, len1$, ys; res$ = []; for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } yss = res$; results = []; outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) { ys = yss[j$]; if (!in$(x, ys)) { continue outer; } } results.push(x); } return results; }; union = function(){ var xss, res$, i$, to$, results, len$, xs, j$, len1$, x; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } xss = res$; results = []; for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) { xs = xss[i$]; for (j$ = 0, len1$ = xs.length; j$ < len1$; ++j$) { x = xs[j$]; if (!in$(x, results)) { results.push(x); } } } return results; }; countBy = curry$(function(f, xs){ var results, i$, len$, x, key; results = {}; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; key = f(x); if (key in results) { results[key] += 1; } else { results[key] = 1; } } return results; }); groupBy = curry$(function(f, xs){ var results, i$, len$, x, key; results = {}; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; key = f(x); if (key in results) { results[key].push(x); } else { results[key] = [x]; } } return results; }); andList = function(xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!x) { return false; } } return true; }; orList = function(xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (x) { return true; } } return false; }; any = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (f(x)) { return true; } } return false; }); all = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!f(x)) { return false; } } return true; }); sort = function(xs){ return xs.concat().sort(function(x, y){ if (x > y) { return 1; } else if (x < y) { return -1; } else { return 0; } }); }; sortWith = curry$(function(f, xs){ return xs.concat().sort(f); }); sortBy = curry$(function(f, xs){ return xs.concat().sort(function(x, y){ if (f(x) > f(y)) { return 1; } else if (f(x) < f(y)) { return -1; } else { return 0; } }); }); sum = function(xs){ var result, i$, len$, x; result = 0; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; result += x; } return result; }; product = function(xs){ var result, i$, len$, x; result = 1; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; result *= x; } return result; }; mean = average = function(xs){ var sum, i$, len$, x; sum = 0; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; sum += x; } return sum / xs.length; }; maximum = function(xs){ var max, i$, ref$, len$, x; max = xs[0]; for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) { x = ref$[i$]; if (x > max) { max = x; } } return max; }; minimum = function(xs){ var min, i$, ref$, len$, x; min = xs[0]; for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) { x = ref$[i$]; if (x < min) { min = x; } } return min; }; maximumBy = curry$(function(f, xs){ var max, i$, ref$, len$, x; max = xs[0]; for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) { x = ref$[i$]; if (f(x) > f(max)) { max = x; } } return max; }); minimumBy = curry$(function(f, xs){ var min, i$, ref$, len$, x; min = xs[0]; for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) { x = ref$[i$]; if (f(x) < f(min)) { min = x; } } return min; }); scan = scanl = curry$(function(f, memo, xs){ var last, x; last = memo; return [memo].concat((function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) { x = ref$[i$]; results$.push(last = f(last, x)); } return results$; }())); }); scan1 = scanl1 = curry$(function(f, xs){ if (!xs.length) { return; } return scan(f, xs[0], xs.slice(1)); }); scanr = curry$(function(f, memo, xs){ xs = xs.concat().reverse(); return scan(f, memo, xs).reverse(); }); scanr1 = curry$(function(f, xs){ if (!xs.length) { return; } xs = xs.concat().reverse(); return scan(f, xs[0], xs.slice(1)).reverse(); }); slice = curry$(function(x, y, xs){ return xs.slice(x, y); }); take = curry$(function(n, xs){ if (n <= 0) { return xs.slice(0, 0); } else { return xs.slice(0, n); } }); drop = curry$(function(n, xs){ if (n <= 0) { return xs; } else { return xs.slice(n); } }); splitAt = curry$(function(n, xs){ return [take(n, xs), drop(n, xs)]; }); takeWhile = curry$(function(p, xs){ var len, i; len = xs.length; if (!len) { return xs; } i = 0; while (i < len && p(xs[i])) { i += 1; } return xs.slice(0, i); }); dropWhile = curry$(function(p, xs){ var len, i; len = xs.length; if (!len) { return xs; } i = 0; while (i < len && p(xs[i])) { i += 1; } return xs.slice(i); }); span = curry$(function(p, xs){ return [takeWhile(p, xs), dropWhile(p, xs)]; }); breakList = curry$(function(p, xs){ return span(compose$(p, not$), xs); }); zip = curry$(function(xs, ys){ var result, len, i$, len$, i, x; result = []; len = ys.length; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (i === len) { break; } result.push([x, ys[i]]); } return result; }); zipWith = curry$(function(f, xs, ys){ var result, len, i$, len$, i, x; result = []; len = ys.length; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (i === len) { break; } result.push(f(x, ys[i])); } return result; }); zipAll = function(){ var xss, res$, i$, to$, minLength, len$, xs, ref$, i, lresult$, j$, results$ = []; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } xss = res$; minLength = undefined; for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) { xs = xss[i$]; minLength <= (ref$ = xs.length) || (minLength = ref$); } for (i$ = 0; i$ < minLength; ++i$) { i = i$; lresult$ = []; for (j$ = 0, len$ = xss.length; j$ < len$; ++j$) { xs = xss[j$]; lresult$.push(xs[i]); } results$.push(lresult$); } return results$; }; zipAllWith = function(f){ var xss, res$, i$, to$, minLength, len$, xs, ref$, i, results$ = []; res$ = []; for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } xss = res$; minLength = undefined; for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) { xs = xss[i$]; minLength <= (ref$ = xs.length) || (minLength = ref$); } for (i$ = 0; i$ < minLength; ++i$) { i = i$; results$.push(f.apply(null, (fn$()))); } return results$; function fn$(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xss).length; i$ < len$; ++i$) { xs = ref$[i$]; results$.push(xs[i]); } return results$; } }; at = curry$(function(n, xs){ if (n < 0) { return xs[xs.length + n]; } else { return xs[n]; } }); elemIndex = curry$(function(el, xs){ var i$, len$, i, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (x === el) { return i; } } }); elemIndices = curry$(function(el, xs){ var i$, len$, i, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (x === el) { results$.push(i); } } return results$; }); findIndex = curry$(function(f, xs){ var i$, len$, i, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (f(x)) { return i; } } }); findIndices = curry$(function(f, xs){ var i$, len$, i, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { i = i$; x = xs[i$]; if (f(x)) { results$.push(i); } } return results$; }); module.exports = { each: each, map: map, filter: filter, compact: compact, reject: reject, remove: remove, partition: partition, find: find, head: head, first: first, tail: tail, last: last, initial: initial, empty: empty, reverse: reverse, difference: difference, intersection: intersection, union: union, countBy: countBy, groupBy: groupBy, fold: fold, fold1: fold1, foldl: foldl, foldl1: foldl1, foldr: foldr, foldr1: foldr1, unfoldr: unfoldr, andList: andList, orList: orList, any: any, all: all, unique: unique, uniqueBy: uniqueBy, sort: sort, sortWith: sortWith, sortBy: sortBy, sum: sum, product: product, mean: mean, average: average, concat: concat, concatMap: concatMap, flatten: flatten, maximum: maximum, minimum: minimum, maximumBy: maximumBy, minimumBy: minimumBy, scan: scan, scan1: scan1, scanl: scanl, scanl1: scanl1, scanr: scanr, scanr1: scanr1, slice: slice, take: take, drop: drop, splitAt: splitAt, takeWhile: takeWhile, dropWhile: dropWhile, span: span, breakList: breakList, zip: zip, zipWith: zipWith, zipAll: zipAll, zipAllWith: zipAllWith, at: at, elemIndex: elemIndex, elemIndices: elemIndices, findIndex: findIndex, findIndices: findIndices }; function curry$(f, bound){ var context, _curry = function(args) { return f.length > 1 ? function(){ var params = args ? args.concat() : []; context = bound ? context || this : this; return params.push.apply(params, arguments) < f.length && arguments.length ? _curry.call(context, params) : f.apply(context, params); } : f; }; return _curry(); } function in$(x, xs){ var i = -1, l = xs.length >>> 0; while (++i < l) if (x === xs[i]) return true; return false; } function compose$() { var functions = arguments; return function() { var i, result; result = functions[0].apply(this, arguments); for (i = 1; i < functions.length; ++i) { result = functions[i](result); } return result; }; } function not$(x){ return !x; }