aboutsummaryrefslogtreecommitdiff
path: root/clojurescript
diff options
context:
space:
mode:
Diffstat (limited to 'clojurescript')
-rw-r--r--clojurescript/avoid-java-in-boot.patch76
-rw-r--r--clojurescript/boot.js2005
-rw-r--r--clojurescript/clj.js68
-rw-r--r--clojurescript/tojs.clj30
4 files changed, 1173 insertions, 1006 deletions
diff --git a/clojurescript/avoid-java-in-boot.patch b/clojurescript/avoid-java-in-boot.patch
index f9deb0f7..8540b3a6 100644
--- a/clojurescript/avoid-java-in-boot.patch
+++ b/clojurescript/avoid-java-in-boot.patch
@@ -1,5 +1,5 @@
diff --git a/src/clj/clojure/boot.clj b/src/clj/clojure/boot.clj
-index 40c90a0..99caeba 100644
+index 7d8ae02..9327de5 100644
--- a/src/clj/clojure/boot.clj
+++ b/src/clj/clojure/boot.clj
@@ -315,7 +315,7 @@
@@ -29,7 +29,7 @@ index 40c90a0..99caeba 100644
([x y] (. clojure.lang.Numbers (multiply x y)))
([x y & more]
(reduce * (* x y) more)))
-@@ -1031,7 +1031,7 @@
+@@ -1032,7 +1032,7 @@
([state] (new clojure.lang.Agent state))
([state validate-fn] (new clojure.lang.Agent state validate-fn)))
@@ -38,7 +38,7 @@ index 40c90a0..99caeba 100644
(defn send
"Dispatch an action to an agent. Returns the agent immediately.
-@@ -1343,10 +1343,10 @@
+@@ -1344,10 +1344,10 @@
(defn range
"Returns a lazy seq of nums from start (inclusive) to end
(exclusive), by step, where start defaults to 0 and step to 1."
@@ -51,7 +51,7 @@ index 40c90a0..99caeba 100644
(new clojure.lang.Range start end)
(take (- end start) (iterate inc start))))
([start end step]
-@@ -1410,7 +1410,7 @@
+@@ -1411,7 +1411,7 @@
([#^java.util.Comparator comp coll]
(when (and coll (not (zero? (count coll))))
(let [a (to-array coll)]
@@ -60,7 +60,7 @@ index 40c90a0..99caeba 100644
(seq a)))))
(defn sort-by
-@@ -1440,8 +1440,8 @@
+@@ -1441,8 +1441,8 @@
~@body)
(recur (rest list#)))))
@@ -71,7 +71,7 @@ index 40c90a0..99caeba 100644
(defn dorun
"When lazy sequences are produced via functions that have side
-@@ -1476,7 +1476,7 @@
+@@ -1477,7 +1477,7 @@
occurred."
[& agents]
(when *agent*
@@ -80,7 +80,7 @@ index 40c90a0..99caeba 100644
(let [latch (new java.util.concurrent.CountDownLatch (count agents))
count-down (fn [agent] (. latch (countDown)) agent)]
(doseq agent agents
-@@ -1495,7 +1495,7 @@
+@@ -1496,7 +1496,7 @@
to timeout, non-nil otherwise."
[timeout-ms & agents]
(when *agent*
@@ -89,7 +89,7 @@ index 40c90a0..99caeba 100644
(let [latch (new java.util.concurrent.CountDownLatch (count agents))
count-down (fn [agent] (. latch (countDown)) agent)]
(doseq agent agents
-@@ -1527,6 +1527,8 @@
+@@ -1528,6 +1528,8 @@
(. ns (importClass c (. Class (forName (str pkg "." c)))))) )
(apply import (rest import-lists))))
@@ -98,7 +98,7 @@ index 40c90a0..99caeba 100644
(defn into-array
"Returns an array of the type of the first element in coll,
containing the contents of coll, which must be of a compatible
-@@ -1741,7 +1743,7 @@
+@@ -1742,7 +1744,7 @@
{:inline (fn [a i] `(. clojure.lang.RT (aget ~a ~i)))
:inline-arities #{2}}
([array idx]
@@ -107,7 +107,7 @@ index 40c90a0..99caeba 100644
([array idx & idxs]
(apply aget (aget array idx) idxs)))
-@@ -1751,7 +1753,7 @@
+@@ -1752,7 +1754,7 @@
{:inline (fn [a i v] `(. clojure.lang.RT (aset ~a ~i ~v)))
:inline-arities #{3}}
([array idx val]
@@ -116,7 +116,7 @@ index 40c90a0..99caeba 100644
val)
([array idx idx2 & idxv]
(apply aset (aget array idx) idx2 idxv)))
-@@ -1919,6 +1921,10 @@
+@@ -1920,6 +1922,10 @@
"Returns a set of the distinct elements of coll."
[coll] (apply hash-set coll))
@@ -127,7 +127,7 @@ index 40c90a0..99caeba 100644
(defn #^{:private true}
filter-key [keyfn pred amap]
(loop [ret {} es (seq amap)]
-@@ -1951,7 +1957,7 @@
+@@ -1952,7 +1958,7 @@
the-ns [x]
(if (instance? clojure.lang.Namespace x)
x
@@ -136,7 +136,7 @@ index 40c90a0..99caeba 100644
(defn ns-name
"Returns the name of the namespace, a symbol."
-@@ -1984,7 +1990,7 @@
+@@ -1985,7 +1991,7 @@
(defn ns-imports
"Returns a map of the import mappings for the namespace."
[ns]
@@ -145,7 +145,7 @@ index 40c90a0..99caeba 100644
(defn refer
"refers to all public vars of ns, subject to filters.
-@@ -2002,7 +2008,8 @@
+@@ -2003,7 +2009,8 @@
to a symbol different from the var's name, in order to prevent
clashes. Use :use in the ns macro in preference to calling this directly."
[ns-sym & filters]
@@ -155,7 +155,7 @@ index 40c90a0..99caeba 100644
fs (apply hash-map filters)
nspublics (ns-publics ns)
rename (or (:rename fs) {})
-@@ -2138,7 +2145,7 @@
+@@ -2139,7 +2146,7 @@
true)
(= firstb :as) (pb ret (second bs) gvec)
:else (if seen-rest?
@@ -164,7 +164,7 @@ index 40c90a0..99caeba 100644
(recur (pb ret firstb (list `nth gvec n nil))
(inc n)
(rest bs)
-@@ -2169,7 +2176,7 @@
+@@ -2170,7 +2177,7 @@
(symbol? b) (-> bvec (conj b) (conj v))
(vector? b) (pvec bvec b v)
(map? b) (pmap bvec b v)
@@ -173,7 +173,7 @@ index 40c90a0..99caeba 100644
process-entry (fn [bvec b] (pb bvec (key b) (val b)))]
(if (every? symbol? (keys bmap))
bindings
-@@ -2310,7 +2317,7 @@
+@@ -2311,7 +2318,7 @@
StringWriter. Returns the string created by any nested printing
calls."
[& body]
@@ -182,7 +182,7 @@ index 40c90a0..99caeba 100644
(binding [*out* s#]
~@body
(str s#))))
-@@ -2356,7 +2363,7 @@
+@@ -2357,7 +2364,7 @@
logical true."
[x]
`(when-not ~x
@@ -191,7 +191,7 @@ index 40c90a0..99caeba 100644
(defn test
"test [v] finds fn at key :test in var metadata and calls it,
-@@ -2428,7 +2435,7 @@
+@@ -2429,7 +2436,7 @@
(defn rand
"Returns a random floating point number between 0 (inclusive) and
1 (exclusive)."
@@ -200,7 +200,7 @@ index 40c90a0..99caeba 100644
([n] (* n (rand))))
(defn rand-int
-@@ -2538,7 +2545,7 @@
+@@ -2539,7 +2546,7 @@
"Reads the file named by f into a string and returns it."
[#^String f]
(with-open r (new java.io.BufferedReader (new java.io.FileReader f))
@@ -209,7 +209,7 @@ index 40c90a0..99caeba 100644
(loop [c (. r (read))]
(if (neg? c)
(str sb)
-@@ -2822,10 +2829,6 @@
+@@ -2823,10 +2830,6 @@
(send-off agt fill)
(drain))))
@@ -220,7 +220,7 @@ index 40c90a0..99caeba 100644
(defn alter-var-root
"Atomically alters the root binding of var v by applying f to its
current value plus any args"
-@@ -2910,7 +2913,7 @@
+@@ -2912,7 +2915,7 @@
relationships."
([tag] (descendants global-hierarchy tag))
([h tag] (if (class? tag)
@@ -229,7 +229,7 @@ index 40c90a0..99caeba 100644
(not-empty (get (:descendants h) tag)))))
(defn derive
-@@ -2937,9 +2940,9 @@
+@@ -2939,9 +2942,9 @@
(or
(when-not (contains? (tp tag) parent)
(when (contains? (ta tag) parent)
@@ -241,7 +241,7 @@ index 40c90a0..99caeba 100644
{:parents (assoc (:parents h) tag (conj (get tp tag #{}) parent))
:ancestors (tf (:ancestors h) tag td parent ta)
:descendants (tf (:descendants h) parent ta tag td)})
-@@ -3066,7 +3069,7 @@
+@@ -3068,7 +3071,7 @@
[pred fmt & args]
(when pred
(let [message (apply format fmt args)
@@ -250,8 +250,26 @@ index 40c90a0..99caeba 100644
raw-trace (.getStackTrace exception)
boring? #(not= (.getMethodName %) "doInvoke")
trace (into-array (drop 2 (drop-while boring? raw-trace)))]
+@@ -3428,7 +3431,7 @@
+
+ (defn print-ctor [o print-args #^Writer w]
+ (.write w "#=(")
+- (.write w (.getName (class o)))
++ (.write w (RT/className (class o)))
+ (.write w ". ")
+ (print-args o w)
+ (.write w ")"))
+@@ -3557,7 +3560,7 @@
+
+ (defmethod print-method Class [#^Class c, #^Writer w]
+ (.write w "#=")
+- (.write w (.getName c)))
++ (.write w (RT/className c)))
+
+ (defmethod print-method java.math.BigDecimal [b, #^Writer w]
+ (.write w (str b))
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
-index 0a891bf..a1fafb7 100644
+index 9982ebb..4927d30 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -30,6 +30,8 @@ public class RT{
@@ -263,7 +281,7 @@ index 0a891bf..a1fafb7 100644
//simple-symbol->class
final static IPersistentMap DEFAULT_IMPORTS = map(
// Symbol.create("RT"), "clojure.lang.RT",
-@@ -959,6 +961,10 @@ static public double doubleCast(double x){
+@@ -963,6 +965,10 @@ static public double doubleCast(double x){
return x;
}
@@ -274,7 +292,7 @@ index 0a891bf..a1fafb7 100644
static public IPersistentMap map(Object... init){
if(init != null && init.length == 2)
return new PersistentArrayMap(init);
-@@ -1644,4 +1650,35 @@ static public int alength(Object xs){
+@@ -1676,4 +1682,39 @@ static public int alength(Object xs){
return Array.getLength(xs);
}
@@ -309,4 +327,8 @@ index 0a891bf..a1fafb7 100644
+ return Math.random();
+}
+
++static public String className(Class c){
++ return c.getName();
++}
++
}
diff --git a/clojurescript/boot.js b/clojurescript/boot.js
index 018e18ff..780c4cd9 100644
--- a/clojurescript/boot.js
+++ b/clojurescript/boot.js
@@ -2,20 +2,20 @@
//======
//(in-ns (quote clojure))
//---
-(function __tmp_fn_2674(){
+(function __tmp_fn_2757(){
return (clojure.in_ns.apply(null,["'clojure"]))}).apply(null,[]);
//======
//(def list (. clojure.lang.PersistentList creator))
//---
-(function __clojure_fn_2683(){
+(function __clojure_fn_2766(){
return (clojure.JS.def(clojure,"list",clojure.lang.PersistentList.creator))}).apply(null,[]);
//======
//(def cons (fn* cons [x seq] (. clojure.lang.RT (cons x seq))))
//---
-(function __clojure_fn_2691(){
-return (clojure.JS.def(clojure,"cons",(function __clojure_fn_2691_cons_2693(x_1,seq_2){
+(function __clojure_fn_2774(){
+return (clojure.JS.def(clojure,"cons",(function __clojure_fn_2774_cons_2776(x_1,seq_2){
var cons_0=arguments.callee;
return (clojure.lang.RT.cons(x_1,seq_2))})))}).apply(null,[]);
// Skipping: (def let (fn* let [& decl] (cons (quote let*) decl)))
@@ -27,51 +27,51 @@ return (clojure.lang.RT.cons(x_1,seq_2))})))}).apply(null,[]);
//======
//(def conj (fn conj ([coll x] (. clojure.lang.RT (conj coll x))) ([coll x & xs] (if xs (recur (conj coll x) (first xs) (rest xs)) (conj coll x)))))
//---
-(function __clojure_fn_2726(){
-return (clojure.JS.def(clojure,"conj",clojure.JS.variadic(2,(function __clojure_fn_2726_conj_2728(coll_1,x_2){switch(arguments.length){
+(function __clojure_fn_2809(){
+return (clojure.JS.def(clojure,"conj",clojure.JS.variadic(2,(function __clojure_fn_2809_conj_2811(coll_1,x_2){switch(arguments.length){
case 2:var conj_0=arguments.callee;
return (clojure.lang.RT.conj(coll_1,x_2))}
-var _cnt,_rtn,xs_3,conj_0=arguments.callee,xs_3=clojure.JS.rest_args(this,arguments,2);
+var _cnt,_rtn,conj_0=arguments.callee,xs_3=clojure.JS.rest_args(this,arguments,2);
do{_cnt=0;_rtn=((xs_3)?((_cnt=1,_rtn=[conj_0.apply(null,[coll_1,x_2]),clojure.first.apply(null,[xs_3]),clojure.rest.apply(null,[xs_3])],coll_1=_rtn[0],x_2=_rtn[1],xs_3=_rtn[2])):(conj_0.apply(null,[coll_1,x_2])))
}while(_cnt);return _rtn;}))))}).apply(null,[]);
//======
//(def second (fn second [x] (first (rest x))))
//---
-(function __clojure_fn_2736(){
-return (clojure.JS.def(clojure,"second",(function __clojure_fn_2736_second_2738(x_1){
+(function __clojure_fn_2819(){
+return (clojure.JS.def(clojure,"second",(function __clojure_fn_2819_second_2821(x_1){
var second_0=arguments.callee;
return (clojure.first.apply(null,[clojure.rest.apply(null,[x_1])]))})))}).apply(null,[]);
//======
//(def ffirst (fn ffirst [x] (first (first x))))
//---
-(function __clojure_fn_2746(){
-return (clojure.JS.def(clojure,"ffirst",(function __clojure_fn_2746_ffirst_2748(x_1){
+(function __clojure_fn_2829(){
+return (clojure.JS.def(clojure,"ffirst",(function __clojure_fn_2829_ffirst_2831(x_1){
var ffirst_0=arguments.callee;
return (clojure.first.apply(null,[clojure.first.apply(null,[x_1])]))})))}).apply(null,[]);
//======
//(def rfirst (fn rfirst [x] (rest (first x))))
//---
-(function __clojure_fn_2756(){
-return (clojure.JS.def(clojure,"rfirst",(function __clojure_fn_2756_rfirst_2758(x_1){
+(function __clojure_fn_2839(){
+return (clojure.JS.def(clojure,"rfirst",(function __clojure_fn_2839_rfirst_2841(x_1){
var rfirst_0=arguments.callee;
return (clojure.rest.apply(null,[clojure.first.apply(null,[x_1])]))})))}).apply(null,[]);
//======
//(def frest (fn frest [x] (first (rest x))))
//---
-(function __clojure_fn_2766(){
-return (clojure.JS.def(clojure,"frest",(function __clojure_fn_2766_frest_2768(x_1){
+(function __clojure_fn_2849(){
+return (clojure.JS.def(clojure,"frest",(function __clojure_fn_2849_frest_2851(x_1){
var frest_0=arguments.callee;
return (clojure.first.apply(null,[clojure.rest.apply(null,[x_1])]))})))}).apply(null,[]);
//======
//(def rrest (fn rrest [x] (rest (rest x))))
//---
-(function __clojure_fn_2776(){
-return (clojure.JS.def(clojure,"rrest",(function __clojure_fn_2776_rrest_2778(x_1){
+(function __clojure_fn_2859(){
+return (clojure.JS.def(clojure,"rrest",(function __clojure_fn_2859_rrest_2861(x_1){
var rrest_0=arguments.callee;
return (clojure.rest.apply(null,[clojure.rest.apply(null,[x_1])]))})))}).apply(null,[]);
// Skipping: (def seq (fn seq [coll] (. clojure.lang.RT (seq coll))))
@@ -80,8 +80,8 @@ return (clojure.rest.apply(null,[clojure.rest.apply(null,[x_1])]))})))}).apply(n
//======
//(def seq? (fn seq? [x] (instance? clojure.lang.ISeq x)))
//---
-(function __clojure_fn_2796(){
-return (clojure.JS.def(clojure,"seq_QMARK_",(function __clojure_fn_2796_seq_QMARK_2798(x_1){
+(function __clojure_fn_2879(){
+return (clojure.JS.def(clojure,"seq_QMARK_",(function __clojure_fn_2879_seq_QMARK_2881(x_1){
var seq_QMARK__0=arguments.callee;
return (clojure.instance_QMARK_.apply(null,[clojure.lang.ISeq,x_1]))})))}).apply(null,[]);
// Skipping: (def string? (fn string? [x] (instance? String x)))
@@ -89,24 +89,24 @@ return (clojure.instance_QMARK_.apply(null,[clojure.lang.ISeq,x_1]))})))}).apply
//======
//(def map? (fn map? [x] (instance? clojure.lang.IPersistentMap x)))
//---
-(function __clojure_fn_2811(){
-return (clojure.JS.def(clojure,"map_QMARK_",(function __clojure_fn_2811_map_QMARK_2813(x_1){
+(function __clojure_fn_2894(){
+return (clojure.JS.def(clojure,"map_QMARK_",(function __clojure_fn_2894_map_QMARK_2896(x_1){
var map_QMARK__0=arguments.callee;
return (clojure.instance_QMARK_.apply(null,[clojure.lang.IPersistentMap,x_1]))})))}).apply(null,[]);
//======
//(def vector? (fn vector? [x] (instance? clojure.lang.IPersistentVector x)))
//---
-(function __clojure_fn_2821(){
-return (clojure.JS.def(clojure,"vector_QMARK_",(function __clojure_fn_2821_vector_QMARK_2823(x_1){
+(function __clojure_fn_2904(){
+return (clojure.JS.def(clojure,"vector_QMARK_",(function __clojure_fn_2904_vector_QMARK_2906(x_1){
var vector_QMARK__0=arguments.callee;
return (clojure.instance_QMARK_.apply(null,[clojure.lang.IPersistentVector,x_1]))})))}).apply(null,[]);
//======
//(def sigs (fn [fdecl] (if (seq? (first fdecl)) (loop [ret [] fdecl fdecl] (if fdecl (recur (conj ret (first (first fdecl))) (rest fdecl)) (seq ret))) (list (first fdecl)))))
//---
-(function __clojure_fn_2832(){
-return (clojure.JS.def(clojure,"sigs",(function __clojure_fn_2832_sigs_2834(fdecl_1){
+(function __clojure_fn_2915(){
+return (clojure.JS.def(clojure,"sigs",(function __clojure_fn_2915_sigs_2917(fdecl_1){
var ret_2,fdecl_3;
return (((clojure.seq_QMARK_.apply(null,[clojure.first.apply(null,[fdecl_1])]))?(((function __loop(){var _rtn,_cnt;(ret_2=clojure.lang.PersistentVector.EMPTY),
(fdecl_3=fdecl_1);do{_cnt=0;
@@ -116,24 +116,24 @@ _rtn=((fdecl_3)?((_cnt=1,_rtn=[clojure.conj.apply(null,[ret_2,clojure.first.appl
//======
//(def meta (fn meta [x] (if (instance? clojure.lang.IObj x) (. x (meta)))))
//---
-(function __clojure_fn_2848(){
-return (clojure.JS.def(clojure,"meta",(function __clojure_fn_2848_meta_2850(x_1){
+(function __clojure_fn_2931(){
+return (clojure.JS.def(clojure,"meta",(function __clojure_fn_2931_meta_2933(x_1){
var meta_0=arguments.callee;
return (((clojure.instance_QMARK_.apply(null,[clojure.lang.IObj,x_1]))?((x_1).meta()):(null)))})))}).apply(null,[]);
//======
//(def with-meta (fn with-meta [x m] (. x (withMeta m))))
//---
-(function __clojure_fn_2858(){
-return (clojure.JS.def(clojure,"with_meta",(function __clojure_fn_2858_with_meta_2860(x_1,m_2){
+(function __clojure_fn_2941(){
+return (clojure.JS.def(clojure,"with_meta",(function __clojure_fn_2941_with_meta_2943(x_1,m_2){
var with_meta_0=arguments.callee;
return ((x_1).withMeta(m_2))})))}).apply(null,[]);
//======
//(def last (fn last [s] (if (rest s) (recur (rest s)) (first s))))
//---
-(function __clojure_fn_2868(){
-return (clojure.JS.def(clojure,"last",(function __clojure_fn_2868_last_2870(s_1){
+(function __clojure_fn_2951(){
+return (clojure.JS.def(clojure,"last",(function __clojure_fn_2951_last_2953(s_1){
var _cnt,_rtn,last_0=arguments.callee;
do{_cnt=0;_rtn=((clojure.rest.apply(null,[s_1]))?((_cnt=1,_rtn=[clojure.rest.apply(null,[s_1])],s_1=_rtn[0])):(clojure.first.apply(null,[s_1])))
}while(_cnt);return _rtn;})))}).apply(null,[]);
@@ -141,9 +141,9 @@ do{_cnt=0;_rtn=((clojure.rest.apply(null,[s_1]))?((_cnt=1,_rtn=[clojure.rest.app
//======
//(def butlast (fn butlast [s] (loop [ret [] s s] (if (rest s) (recur (conj ret (first s)) (rest s)) (seq ret)))))
//---
-(function __clojure_fn_2878(){
-return (clojure.JS.def(clojure,"butlast",(function __clojure_fn_2878_butlast_2880(s_1){
-var ret_2,s_3,butlast_0=arguments.callee;
+(function __clojure_fn_2961(){
+return (clojure.JS.def(clojure,"butlast",(function __clojure_fn_2961_butlast_2963(s_1){
+var s_3,ret_2,butlast_0=arguments.callee;
return (((function __loop(){var _rtn,_cnt;(ret_2=clojure.lang.PersistentVector.EMPTY),
(s_3=s_1);do{_cnt=0;
_rtn=((clojure.rest.apply(null,[s_3]))?((_cnt=1,_rtn=[clojure.conj.apply(null,[ret_2,clojure.first.apply(null,[s_3])]),clojure.rest.apply(null,[s_3])],ret_2=_rtn[0],s_3=_rtn[1])):(clojure.seq.apply(null,[ret_2])))}while(_cnt);return _rtn;})()))})))}).apply(null,[]);
@@ -153,59 +153,59 @@ _rtn=((clojure.rest.apply(null,[s_3]))?((_cnt=1,_rtn=[clojure.conj.apply(null,[r
//======
//(defn cast "Throws a ClassCastException if x is not a c, else returns x." [c x] (. c (cast x)))
//---
-(function __clojure_fn_2897(){
-return (clojure.JS.def(clojure,"cast",(function __clojure_fn_2897_cast_2899(c_1,x_2){
+(function __clojure_fn_2980(){
+return (clojure.JS.def(clojure,"cast",(function __clojure_fn_2980_cast_2982(c_1,x_2){
return ((c_1).cast(x_2))})))}).apply(null,[]);
// Skipping: (defn to-array "Returns an array of Objects containing the contents of coll, which\n can be any Collection. Maps to java.util.Collection.toArray()." [coll] (. clojure.lang.RT (toArray coll)))
//======
//(defn vector "Creates a new vector containing the args." ([] []) ([& args] (. clojure.lang.LazilyPersistentVector (create args))))
//---
-(function __clojure_fn_2916(){
-return (clojure.JS.def(clojure,"vector",clojure.JS.variadic(0,(function __clojure_fn_2916_vector_2918(){switch(arguments.length){
+(function __clojure_fn_2999(){
+return (clojure.JS.def(clojure,"vector",clojure.JS.variadic(0,(function __clojure_fn_2999_vector_3001(){switch(arguments.length){
case 0:return (clojure.lang.PersistentVector.EMPTY)}
-var args_1,args_1=clojure.JS.rest_args(this,arguments,0);
+var args_1=clojure.JS.rest_args(this,arguments,0);
return (clojure.lang.LazilyPersistentVector.create(args_1))}))))}).apply(null,[]);
//======
//(defn vec "Creates a new vector containing the contents of coll." ([coll] (. clojure.lang.LazilyPersistentVector (createOwning (to-array coll)))))
//---
-(function __clojure_fn_2929(){
-return (clojure.JS.def(clojure,"vec",(function __clojure_fn_2929_vec_2931(coll_1){
+(function __clojure_fn_3012(){
+return (clojure.JS.def(clojure,"vec",(function __clojure_fn_3012_vec_3014(coll_1){
return (clojure.lang.LazilyPersistentVector.createOwning(clojure.to_array.apply(null,[coll_1])))})))}).apply(null,[]);
// Skipping: (defn hash-map "keyval => key val\n Returns a new hash map with supplied mappings." ([] {}) ([& keyvals] (. clojure.lang.PersistentHashMap (create keyvals))))
//======
//(defn hash-set "Returns a new hash set with supplied keys." ([] #{}) ([& keys] (. clojure.lang.PersistentHashSet (create keys))))
//---
-(function __clojure_fn_2949(){
-return (clojure.JS.def(clojure,"hash_set",clojure.JS.variadic(0,(function __clojure_fn_2949_hash_set_2951(){switch(arguments.length){
+(function __clojure_fn_3032(){
+return (clojure.JS.def(clojure,"hash_set",clojure.JS.variadic(0,(function __clojure_fn_3032_hash_set_3034(){switch(arguments.length){
case 0:return (clojure.lang.PersistentHashSet.EMPTY)}
-var keys_1,keys_1=clojure.JS.rest_args(this,arguments,0);
+var keys_1=clojure.JS.rest_args(this,arguments,0);
return (clojure.lang.PersistentHashSet.create(keys_1))}))))}).apply(null,[]);
//======
//(defn sorted-map "keyval => key val\n Returns a new sorted map with supplied mappings." ([& keyvals] (. clojure.lang.PersistentTreeMap (create keyvals))))
//---
-(function __clojure_fn_2962(){
-return (clojure.JS.def(clojure,"sorted_map",clojure.JS.variadic(0,(function __clojure_fn_2962_sorted_map_2964(){
-var keyvals_1,keyvals_1=clojure.JS.rest_args(this,arguments,0);
+(function __clojure_fn_3045(){
+return (clojure.JS.def(clojure,"sorted_map",clojure.JS.variadic(0,(function __clojure_fn_3045_sorted_map_3047(){
+var keyvals_1=clojure.JS.rest_args(this,arguments,0);
return (clojure.lang.PersistentTreeMap.create(keyvals_1))}))))}).apply(null,[]);
//======
//(defn sorted-set "Returns a new sorted set with supplied keys." ([& keys] (. clojure.lang.PersistentTreeSet (create keys))))
//---
-(function __clojure_fn_2974(){
-return (clojure.JS.def(clojure,"sorted_set",clojure.JS.variadic(0,(function __clojure_fn_2974_sorted_set_2976(){
-var keys_1,keys_1=clojure.JS.rest_args(this,arguments,0);
+(function __clojure_fn_3057(){
+return (clojure.JS.def(clojure,"sorted_set",clojure.JS.variadic(0,(function __clojure_fn_3057_sorted_set_3059(){
+var keys_1=clojure.JS.rest_args(this,arguments,0);
return (clojure.lang.PersistentTreeSet.create(keys_1))}))))}).apply(null,[]);
//======
//(defn sorted-map-by "keyval => key val\n Returns a new sorted map with supplied mappings, using the supplied comparator." ([comparator & keyvals] (. clojure.lang.PersistentTreeMap (create comparator keyvals))))
//---
-(function __clojure_fn_2986(){
-return (clojure.JS.def(clojure,"sorted_map_by",clojure.JS.variadic(1,(function __clojure_fn_2986_sorted_map_by_2988(comparator_1){
-var keyvals_2,keyvals_2=clojure.JS.rest_args(this,arguments,1);
+(function __clojure_fn_3069(){
+return (clojure.JS.def(clojure,"sorted_map_by",clojure.JS.variadic(1,(function __clojure_fn_3069_sorted_map_by_3071(comparator_1){
+var keyvals_2=clojure.JS.rest_args(this,arguments,1);
return (clojure.lang.PersistentTreeMap.create(comparator_1,keyvals_2))}))))}).apply(null,[]);
// Skipping: (def defmacro (fn [name & args] (list (quote do) (cons (quote clojure/defn) (cons name args)) (list (quote .) (list (quote var) name) (quote (setMacro))))))
// Skipping: (. (var defmacro) (setMacro))
@@ -215,39 +215,39 @@ return (clojure.lang.PersistentTreeMap.create(comparator_1,keyvals_2))}))))}).ap
//======
//(defn nil? "Returns true if x is nil, false otherwise." {:tag Boolean} [x] (identical? x nil))
//---
-(function __clojure_fn_3019(){
-return (clojure.JS.def(clojure,"nil_QMARK_",(function __clojure_fn_3019_nil_QMARK_3021(x_1){
+(function __clojure_fn_3102(){
+return (clojure.JS.def(clojure,"nil_QMARK_",(function __clojure_fn_3102_nil_QMARK_3104(x_1){
return (clojure.identical_QMARK_.apply(null,[x_1,null]))})))}).apply(null,[]);
//======
//(defn false? "Returns true if x is the value false, false otherwise." {:tag Boolean} [x] (identical? x false))
//---
-(function __clojure_fn_3031(){
-return (clojure.JS.def(clojure,"false_QMARK_",(function __clojure_fn_3031_false_QMARK_3033(x_1){
+(function __clojure_fn_3114(){
+return (clojure.JS.def(clojure,"false_QMARK_",(function __clojure_fn_3114_false_QMARK_3116(x_1){
return (clojure.identical_QMARK_.apply(null,[x_1,false]))})))}).apply(null,[]);
//======
//(defn true? "Returns true if x is the value true, false otherwise." {:tag Boolean} [x] (identical? x true))
//---
-(function __clojure_fn_3043(){
-return (clojure.JS.def(clojure,"true_QMARK_",(function __clojure_fn_3043_true_QMARK_3045(x_1){
+(function __clojure_fn_3126(){
+return (clojure.JS.def(clojure,"true_QMARK_",(function __clojure_fn_3126_true_QMARK_3128(x_1){
return (clojure.identical_QMARK_.apply(null,[x_1,true]))})))}).apply(null,[]);
//======
//(defn not "Returns true if x is logical false, false otherwise." {:tag Boolean} [x] (if x false true))
//---
-(function __clojure_fn_3055(){
-return (clojure.JS.def(clojure,"not",(function __clojure_fn_3055_not_3057(x_1){
+(function __clojure_fn_3138(){
+return (clojure.JS.def(clojure,"not",(function __clojure_fn_3138_not_3140(x_1){
return (((x_1)?(false):(true)))})))}).apply(null,[]);
//======
//(defn str "With no args, returns the empty string. With one arg x, returns\n x.toString(). (str nil) returns the empty string. With more than\n one arg, returns the concatenation of the str values of the args." {:tag String} ([] "") ([x] (if (nil? x) "" (. x (toString)))) ([x & ys] (loop [sb (clojure.lang.RT/makeStringBuilder (str x)) more ys] (if more (recur (. sb (append (str (first more)))) (rest more)) (str sb)))))
//---
-(function __clojure_fn_3069(){
-return (clojure.JS.def(clojure,"str",clojure.JS.variadic(1,(function __clojure_fn_3069_str_3071(x_1){switch(arguments.length){
-case 1:return (((clojure.nil_QMARK_.apply(null,[x_1]))?(""):((x_1).toString())))
-case 0:return ("")}
-var sb_3,ys_2,more_4,ys_2=clojure.JS.rest_args(this,arguments,1);
+(function __clojure_fn_3152(){
+return (clojure.JS.def(clojure,"str",clojure.JS.variadic(1,(function __clojure_fn_3152_str_3154(x_1){switch(arguments.length){
+case 0:return ("")
+case 1:return (((clojure.nil_QMARK_.apply(null,[x_1]))?(""):((x_1).toString())))}
+var more_4,sb_3,ys_2=clojure.JS.rest_args(this,arguments,1);
return (((function __loop(){var _rtn,_cnt;(sb_3=clojure.lang.RT.makeStringBuilder(clojure.str.apply(null,[x_1]))),
(more_4=ys_2);do{_cnt=0;
_rtn=((more_4)?((_cnt=1,_rtn=[(sb_3).append(clojure.str.apply(null,[clojure.first.apply(null,[more_4])])),clojure.rest.apply(null,[more_4])],sb_3=_rtn[0],more_4=_rtn[1])):(clojure.str.apply(null,[sb_3])))}while(_cnt);return _rtn;})()))}))))}).apply(null,[]);
@@ -255,8 +255,8 @@ _rtn=((more_4)?((_cnt=1,_rtn=[(sb_3).append(clojure.str.apply(null,[clojure.firs
//======
//(defn symbol "Returns a Symbol with the given namespace and name." ([name] (. clojure.lang.Symbol (intern name))) ([ns name] (. clojure.lang.Symbol (intern ns name))))
//---
-(function __clojure_fn_3084(){
-return (clojure.JS.def(clojure,"symbol",(function __clojure_fn_3084_symbol_3086(ns_1,name_2){switch(arguments.length){
+(function __clojure_fn_3167(){
+return (clojure.JS.def(clojure,"symbol",(function __clojure_fn_3167_symbol_3169(ns_1,name_2){switch(arguments.length){
case 1:var name_1=arguments[0];
return (clojure.lang.Symbol.intern(name_1))}
return (clojure.lang.Symbol.intern(ns_1,name_2))})))}).apply(null,[]);
@@ -264,8 +264,8 @@ return (clojure.lang.Symbol.intern(ns_1,name_2))})))}).apply(null,[]);
//======
//(defn keyword "Returns a Keyword with the given namespace and name. Do not use :\n in the keyword strings, it will be added automatically." ([name] (. clojure.lang.Keyword (intern nil name))) ([ns name] (. clojure.lang.Keyword (intern ns name))))
//---
-(function __clojure_fn_3098(){
-return (clojure.JS.def(clojure,"keyword",(function __clojure_fn_3098_keyword_3100(ns_1,name_2){switch(arguments.length){
+(function __clojure_fn_3181(){
+return (clojure.JS.def(clojure,"keyword",(function __clojure_fn_3181_keyword_3183(ns_1,name_2){switch(arguments.length){
case 1:var name_1=arguments[0];
return (clojure.lang.Keyword.intern(null,name_1))}
return (clojure.lang.Keyword.intern(ns_1,name_2))})))}).apply(null,[]);
@@ -273,8 +273,8 @@ return (clojure.lang.Keyword.intern(ns_1,name_2))})))}).apply(null,[]);
//======
//(defn gensym "Returns a new symbol with a unique name. If a prefix string is\n supplied, the name is prefix# where # is some unique number. If\n prefix is not supplied, the prefix is 'G'." ([] (gensym "G__")) ([prefix-string] (. clojure.lang.Symbol (intern (str prefix-string (str (. clojure.lang.RT (nextID))))))))
//---
-(function __clojure_fn_3112(){
-return (clojure.JS.def(clojure,"gensym",(function __clojure_fn_3112_gensym_3114(prefix_string_1){switch(arguments.length){
+(function __clojure_fn_3195(){
+return (clojure.JS.def(clojure,"gensym",(function __clojure_fn_3195_gensym_3197(prefix_string_1){switch(arguments.length){
case 0:return (clojure.gensym.apply(null,["G__"]))}
return (clojure.lang.Symbol.intern(clojure.str.apply(null,[prefix_string_1,clojure.str.apply(null,[clojure.lang.RT.nextID()])])))})))}).apply(null,[]);
// Skipping: (defmacro cond "Takes a set of test/expr pairs. It evaluates each test one at a\n time. If a test returns logical true, cond evaluates and returns\n the value of the corresponding expr and doesn't evaluate any of the\n other tests or exprs. (cond) returns nil." [& clauses] (when clauses (list (quote if) (first clauses) (second clauses) (cons (quote cond) (rest (rest clauses))))))
@@ -282,109 +282,109 @@ return (clojure.lang.Symbol.intern(clojure.str.apply(null,[prefix_string_1,cloju
//======
//(defn spread {:private true} [arglist] (cond (nil? arglist) nil (nil? (rest arglist)) (seq (first arglist)) :else (cons (first arglist) (spread (rest arglist)))))
//---
-(function __clojure_fn_3131(){
-return (clojure.JS.def(clojure,"spread",(function __clojure_fn_3131_spread_3133(arglist_1){
+(function __clojure_fn_3214(){
+return (clojure.JS.def(clojure,"spread",(function __clojure_fn_3214_spread_3216(arglist_1){
return (((clojure.nil_QMARK_.apply(null,[arglist_1]))?(null):(((clojure.nil_QMARK_.apply(null,[clojure.rest.apply(null,[arglist_1])]))?(clojure.seq.apply(null,[clojure.first.apply(null,[arglist_1])])):(((clojure.keyword("","else"))?(clojure.cons.apply(null,[clojure.first.apply(null,[arglist_1]),clojure.spread.apply(null,[clojure.rest.apply(null,[arglist_1])])])):(null)))))))})))}).apply(null,[]);
// Skipping: (defn apply "Applies fn f to the argument list formed by prepending args to argseq." {:arglists (quote ([f args* argseq]))} [f & args] (. f (applyTo (spread args))))
//======
//(defn list* "Creates a new list containing the item prepended to more." [item & more] (spread (cons item more)))
//---
-(function __clojure_fn_3149(){
-return (clojure.JS.def(clojure,"list_STAR_",clojure.JS.variadic(1,(function __clojure_fn_3149_list_STAR_3151(item_1){
-var more_2,more_2=clojure.JS.rest_args(this,arguments,1);
+(function __clojure_fn_3232(){
+return (clojure.JS.def(clojure,"list_STAR_",clojure.JS.variadic(1,(function __clojure_fn_3232_list_STAR_3234(item_1){
+var more_2=clojure.JS.rest_args(this,arguments,1);
return (clojure.spread.apply(null,[clojure.cons.apply(null,[item_1,more_2])]))}))))}).apply(null,[]);
// Skipping: (defmacro delay "Takes a body of expressions and yields a Delay object than will\n invoke the body only the first time it is forced (with force), and\n will cache the result and return it on all subsequent force calls" [& body] (list (quote new) (quote clojure.lang.Delay) (list* (quote clojure/fn) [] body)))
//======
//(defn delay? "returns true if x is a Delay created with delay" [x] (instance? clojure.lang.Delay x))
//---
-(function __clojure_fn_3167(){
-return (clojure.JS.def(clojure,"delay_QMARK_",(function __clojure_fn_3167_delay_QMARK_3169(x_1){
+(function __clojure_fn_3250(){
+return (clojure.JS.def(clojure,"delay_QMARK_",(function __clojure_fn_3250_delay_QMARK_3252(x_1){
return (clojure.instance_QMARK_.apply(null,[clojure.lang.Delay,x_1]))})))}).apply(null,[]);
//======
//(defn force "If x is a Delay, returns the (possibly cached) value of its expression, else returns x" [x] (. clojure.lang.Delay (force x)))
//---
-(function __clojure_fn_3179(){
-return (clojure.JS.def(clojure,"force",(function __clojure_fn_3179_force_3181(x_1){
+(function __clojure_fn_3262(){
+return (clojure.JS.def(clojure,"force",(function __clojure_fn_3262_force_3264(x_1){
return (clojure.lang.Delay.force(x_1))})))}).apply(null,[]);
//======
//(defn fnseq "Returns a seq object whose first is first and whose rest is the\n value produced by calling restfn with no arguments. restfn will be\n called at most once per step in the sequence, e.g. calling rest\n repeatedly on the head of the seq calls restfn once - the value it\n yields is cached." [first restfn] (new clojure.lang.FnSeq first restfn))
//---
-(function __clojure_fn_3191(){
-return (clojure.JS.def(clojure,"fnseq",(function __clojure_fn_3191_fnseq_3193(first_1,restfn_2){
+(function __clojure_fn_3274(){
+return (clojure.JS.def(clojure,"fnseq",(function __clojure_fn_3274_fnseq_3276(first_1,restfn_2){
return ((new clojure.lang.FnSeq(first_1,restfn_2)))})))}).apply(null,[]);
// Skipping: (defmacro lazy-cons "Expands to code which produces a seq object whose first is\n first-expr and whose rest is rest-expr, neither of which is\n evaluated until first/rest is called. Each expr will be evaluated at most\n once per step in the sequence, e.g. calling first/rest repeatedly on the\n same node of the seq evaluates first/rest-expr once - the values they yield are\n cached." [first-expr & rest-expr] (list (quote new) (quote clojure.lang.LazyCons) (list (quote clojure/fn) (list [] first-expr) (list* [(gensym)] rest-expr))))
//======
//(defn cache-seq "Given a seq s, returns a lazy seq that will touch each element of s\n at most once, caching the results." [s] (when s (clojure.lang.CachedSeq. s)))
//---
-(function __clojure_fn_3209(){
-return (clojure.JS.def(clojure,"cache_seq",(function __clojure_fn_3209_cache_seq_3211(s_1){
+(function __clojure_fn_3292(){
+return (clojure.JS.def(clojure,"cache_seq",(function __clojure_fn_3292_cache_seq_3294(s_1){
return (((s_1)?((new clojure.lang.CachedSeq(s_1))):(null)))})))}).apply(null,[]);
//======
//(defn concat "Returns a lazy seq representing the concatenation of\tthe elements in the supplied colls." ([] nil) ([x] (seq x)) ([x y] (if (seq x) (lazy-cons (first x) (concat (rest x) y)) (seq y))) ([x y & zs] (let [cat (fn cat [xys zs] (if (seq xys) (lazy-cons (first xys) (cat (rest xys) zs)) (when zs (recur (first zs) (rest zs)))))] (cat (concat x y) zs))))
//---
-(function __clojure_fn_3236(){
-return (clojure.JS.def(clojure,"concat",clojure.JS.variadic(2,(function __clojure_fn_3236_concat_3238(x_1,y_2){switch(arguments.length){
-case 2:return (((clojure.seq.apply(null,[x_1]))?((new clojure.lang.LazyCons((function __clojure_fn_3236_concat_3238_fn_3243(G__3242_1){switch(arguments.length){
+(function __clojure_fn_3319(){
+return (clojure.JS.def(clojure,"concat",clojure.JS.variadic(2,(function __clojure_fn_3319_concat_3321(x_1,y_2){switch(arguments.length){
+case 2:return (((clojure.seq.apply(null,[x_1]))?((new clojure.lang.LazyCons((function __clojure_fn_3319_concat_3321_fn_3326(G__3325_1){switch(arguments.length){
case 0:return (clojure.first.apply(null,[x_1]))}
return (clojure.concat.apply(null,[clojure.rest.apply(null,[x_1]),y_2]))})))):(clojure.seq.apply(null,[y_2]))))
-case 1:return (clojure.seq.apply(null,[x_1]))
-case 0:return (null)}
-var zs_3,cat_4,zs_3=clojure.JS.rest_args(this,arguments,2);
-return (((cat_4=(function __clojure_fn_3236_concat_3238_cat_3248(xys_1,zs_2){
+case 0:return (null)
+case 1:return (clojure.seq.apply(null,[x_1]))}
+var cat_4,zs_3=clojure.JS.rest_args(this,arguments,2);
+return (((cat_4=(function __clojure_fn_3319_concat_3321_cat_3331(xys_1,zs_2){
var _cnt,_rtn,cat_0=arguments.callee;
-do{_cnt=0;_rtn=((clojure.seq.apply(null,[xys_1]))?((new clojure.lang.LazyCons((function __clojure_fn_3236_concat_3238_cat_3248_fn_3250(G__3249_1){switch(arguments.length){
+do{_cnt=0;_rtn=((clojure.seq.apply(null,[xys_1]))?((new clojure.lang.LazyCons((function __clojure_fn_3319_concat_3321_cat_3331_fn_3333(G__3332_1){switch(arguments.length){
case 0:return (clojure.first.apply(null,[xys_1]))}
return (cat_0.apply(null,[clojure.rest.apply(null,[xys_1]),zs_2]))})))):(((zs_2)?((_cnt=1,_rtn=[clojure.first.apply(null,[zs_2]),clojure.rest.apply(null,[zs_2])],xys_1=_rtn[0],zs_2=_rtn[1])):(null))))
}while(_cnt);return _rtn;})),
cat_4.apply(null,[clojure.concat.apply(null,[x_1,y_2]),zs_3])))}))))}).apply(null,[]);
//======
-//(defn = "Equality. Returns true if x equals y, false if not. Same as\n Java x.equals(y) except it also works for nil, and compares\n numbers in a type-independent manner. Clojure's immutable data\n structures define equals() (and thus =) as a value, not an identity,\n comparison." {:inline (fn [x y] (clojure/concat (clojure/list (quote .)) (clojure/list (quote clojure.lang.Util)) (clojure/list (quote clojure/equal)) (clojure/list x) (clojure/list y))), :tag Boolean, :inline-arities #{2}} ([x] true) ([x y] (. clojure.lang.Util (equal x y))) ([x y & more] (if (= x y) (if (rest more) (recur y (first more) (rest more)) (= y (first more))) false)))
+//(defn = "Equality. Returns true if x equals y, false if not. Same as\n Java x.equals(y) except it also works for nil, and compares\n numbers in a type-independent manner. Clojure's immutable data\n structures define equals() (and thus =) as a value, not an identity,\n comparison." {:tag Boolean, :inline (fn [x y] (clojure/concat (clojure/list (quote .)) (clojure/list (quote clojure.lang.Util)) (clojure/list (quote clojure/equal)) (clojure/list x) (clojure/list y))), :inline-arities #{2}} ([x] true) ([x y] (. clojure.lang.Util (equal x y))) ([x y & more] (if (= x y) (if (rest more) (recur y (first more) (rest more)) (= y (first more))) false)))
//---
-(function __clojure_fn_3268(){
-return (clojure.JS.def(clojure,"_EQ_",clojure.JS.variadic(2,(function __clojure_fn_3268_EQ_3273(x_1,y_2){switch(arguments.length){
+(function __clojure_fn_3351(){
+return (clojure.JS.def(clojure,"_EQ_",clojure.JS.variadic(2,(function __clojure_fn_3351_EQ_3356(x_1,y_2){switch(arguments.length){
case 2:return (clojure.lang.Util.equal(x_1,y_2))
case 1:return (true)}
-var _cnt,_rtn,more_3,more_3=clojure.JS.rest_args(this,arguments,2);
+var _cnt,_rtn,more_3=clojure.JS.rest_args(this,arguments,2);
do{_cnt=0;_rtn=((clojure.lang.Util.equal(x_1,y_2))?(((clojure.rest.apply(null,[more_3]))?((_cnt=1,_rtn=[y_2,clojure.first.apply(null,[more_3]),clojure.rest.apply(null,[more_3])],x_1=_rtn[0],y_2=_rtn[1],more_3=_rtn[2])):(clojure.lang.Util.equal(y_2,clojure.first.apply(null,[more_3]))))):(false))
}while(_cnt);return _rtn;}))))}).apply(null,[]);
//======
//(defn not= "Same as (not (= obj1 obj2))" {:tag Boolean} ([x] false) ([x y] (not (= x y))) ([x y & more] (not (apply = x y more))))
//---
-(function __clojure_fn_3287(){
-return (clojure.JS.def(clojure,"not_EQ_",clojure.JS.variadic(2,(function __clojure_fn_3287_not_EQ_3289(x_1,y_2){switch(arguments.length){
-case 2:return (clojure.not.apply(null,[clojure.lang.Util.equal(x_1,y_2)]))
-case 1:return (false)}
-var more_3,more_3=clojure.JS.rest_args(this,arguments,2);
+(function __clojure_fn_3370(){
+return (clojure.JS.def(clojure,"not_EQ_",clojure.JS.variadic(2,(function __clojure_fn_3370_not_EQ_3372(x_1,y_2){switch(arguments.length){
+case 1:return (false)
+case 2:return (clojure.not.apply(null,[clojure.lang.Util.equal(x_1,y_2)]))}
+var more_3=clojure.JS.rest_args(this,arguments,2);
return (clojure.not.apply(null,[clojure.apply.apply(null,[clojure._EQ_,x_1,y_2,more_3])]))}))))}).apply(null,[]);
//======
-//(defn compare "Comparator. Returns 0 if x equals y, -1 if x is logically 'less\n than' y, else 1. Same as Java x.compareTo(y) except it also works\n for nil, and compares numbers in a type-independent manner. x must\n implement Comparable" {:inline (fn [x y] (clojure/concat (clojure/list (quote .)) (clojure/list (quote clojure.lang.Util)) (clojure/list (quote clojure/compare)) (clojure/list x) (clojure/list y))), :tag Integer} [x y] (. clojure.lang.Util (compare x y)))
+//(defn compare "Comparator. Returns 0 if x equals y, -1 if x is logically 'less\n than' y, else 1. Same as Java x.compareTo(y) except it also works\n for nil, and compares numbers in a type-independent manner. x must\n implement Comparable" {:tag Integer, :inline (fn [x y] (clojure/concat (clojure/list (quote .)) (clojure/list (quote clojure.lang.Util)) (clojure/list (quote clojure/compare)) (clojure/list x) (clojure/list y)))} [x y] (. clojure.lang.Util (compare x y)))
//---
-(function __clojure_fn_3304(){
-return (clojure.JS.def(clojure,"compare",(function __clojure_fn_3304_compare_3309(x_1,y_2){
+(function __clojure_fn_3387(){
+return (clojure.JS.def(clojure,"compare",(function __clojure_fn_3387_compare_3392(x_1,y_2){
retu