716 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			716 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// 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; } |